如何在traCI仿真中迭代调用duarouter算法?

时间:2019-09-06 04:52:00

标签: sumo

我通过给出from和to边来定义流程。在测试某些交通信号算法时,我发现网络很容易陷入僵局,部分原因是车辆无法找到动态的用户平衡路线。因此,我的目标是使那些定义的流程(车辆)在每个模拟时间步长中找到动态的用户平衡路线。我知道duarouter应该是解决方案。但是如何在每个仿真时间步中调用duarouter,如何在代码中将duarouter合并到哪里?

我遵循SUMO网站提供的示例代码。基本上,我定义了一个run()函数,该函数定义了我的信号控制算法。然后我在主函数中调用run()。

我应该在哪里安装duarouter?

enter image description here 我应该如何在仿真循环中调用它,以确保在每个时间步中,网络中的车辆都能找到其用户平衡路线。

dua-iterate.py -n <PATH_TO_SUMO_NET> -t <PATH_TO_TRIPS>


def run():
"""execute the TraCI control loop"""
step = 0
NSphase = 0
EWphase = 2
while traci.simulation.getMinExpectedNumber() > 0: 
    traci.simulationStep() # this means let the simulation go forward for one step 
    step += 1 
    {signal control algorithm}
traci.close()
sys.stdout.flush()

if __name__ == "__main__":
traci.start(["/home/hao/sumo_binaries/bin/sumo-gui", "-c", "/home/hao/Documents/traci_test/randomnet4/random.sumo.cfg",
                         "--tripinfo-output", "tripinfo.xml"])
run()

1 个答案:

答案 0 :(得分:0)

Traci是相扑的控制界面。因此,基本思想是您可以启动Sumo服务器并将Traci连接到服务器。 Traci将根据您的网络生成路由并自动或静态地跳闸文件。

在SUE的情况下,您的代码

traci.start(["/home/hao/sumo_binaries/bin/sumo-gui", "-c", "/home/hao/Documents/traci_test/randomnet4/random.sumo.cfg", "--tripinfo-output", "tripinfo.xml"])

实际上

  • 启动sumo-gui服务器,
  • 并将Traci(SUE)连接到服务器。

要在Traci中使用DUE,应在duaIterate.py文件夹中使用tools/assign。但是

traci.start(["python", <PATH TO duaIterate.py>, "-n", <NETWORK FILE>, "-t", <TRIPS FILE>])

仅尝试将Traci(DUE)连接到sumo / sumo-gui服务器。因此,您应该首先手动启动服务器:

sumo-gui -n suedstadt.net.xml --remote-port <PORT NUMBER>

此处的remote-port选项在服务器模式下启动sumo-gui。现在,您可以使用port选项将Traci连接到服务器。

traci.start(["python", <PATH TO duaIterate.py>, "-n", <NETWORK FILE>, "-t", <TRIPS FILE>], port=<PORT NUMBER>)