面向对象的移动代理建模框架。

road-agent的Python项目详细描述


用于建模移动代理的python框架。

创建移动代理的模拟,在真实地图上运行。喜欢 文档中描述的标签游戏,其中一些框架如下所示。

Road Agent框架分布有两个路由器备选方案:
  1. nxrouter,wich使用networkx库计算的最短路径。
  2. brouter wich使用brouter服务器查询路由。

nxrouter更简单,但更易于运行。布鲁特很强壮,但是 需要安装和运行Brouter服务器 Java程序可能下载时间很长,但路由比较现实。

阅读full documentation

https://readthedocs.org/projects/road-agent/badge/?version=latesthttps://badge.fury.io/py/road-agent.svghttps://road-agent.readthedocs.io/en/latest/_images/frames.png

简短示例模拟

这是一个V字形的短存根,只是为了显示代理的主要功能 类,用于导航地图,在本例中使用计算的路由 使用NetworkX最短路径

要创建模拟,必须使用下面的行为扩展代理类 学习。这个例子只做了一个空的扩展。

这个Jupyter Notebook中包含了一个更有趣的模拟。

也许这个活页夹可以工作:

https://mybinder.org/badge_logo.svg
from LatLon import LatLon
from road_agent import Agent
from road_agent.router import NXRouter
import osmnx as ox

G = ox.graph_from_point((19.3838,-99.1758), distance=1000)
router = NXRouter(G)
r = router.get_route(points=points, speed=3)

# extend Agent class to code behaviours specific to your mobile agent
class Bike(Agent):
    pass

point = LatLon(19.3881769, -99.1794493)
dest = LatLon(19.3858363, -99.1767216)

# create bike instance
b = Bike(point=point, dest=dest)

# create route using NetworkX
b.update_route()

# traverse agent's route, step by step
for t in range(len(b.route)):
    b.step()

安装

使用pip安装库:

$ pip install road-agent

安装可选依赖项:brouter

代理可以使用BRouter进行路由,它可以使用多个不同的配置文件 路线,是特别好的路线创造骑自行车。它是一个Java 程序,在Web服务器上运行。下面是如何安装本地服务器。

brouters的路由算法需要数据文件。将data files(rd5)下载到segments4目录。您可以将这些步骤复制粘贴到 全部下载,但请注意:大约是5.2千兆字节:

mkdir -p ~/opt/brouter/segments4
cd ~/opt/brouter/segments4
wget https://gitlab.com/rgarcia-herrera/road-agent/raw/master/get_segments.sh
wget https://gitlab.com/rgarcia-herrera/road-agent/raw/master/segments.txt
chmod +x get_segments.sh
./get_segments.sh

下载并解压缩brouter(将~/opt/替换为首选安装 dir和1_4_11(最新版本):

cd ~/opt/brouter
wget http://brouter.de/brouter_bin/brouter_1_4_11.zip
unzip brouter_1_4_11.zip
chmod +x ./standalone/server.sh

运行server.sh启动brouter服务器。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java关闭到DB的连接不会关闭所有连接   java如何跟踪eclipse中编译错误的错误?   java设计/实现。。。最有可能使用AJAX   java无法从SharedReference获取数据   在java中,用|将印地语段落串成   java以编程方式在单击时创建微调器工作   java对如何完成新程序的困惑?   java停止httpConnection blackberry超时   java为什么继承的静态变量可以被子类的非静态方法访问?   java Spring安全性通过控制器进行身份验证   java类继承和泛型类型   创建票证服务时CAS重定向上的java错误   使用java的sockets对等应用程序