我通过给出from和to边来定义流程。在测试某些交通信号算法时,我发现网络很容易陷入僵局,部分原因是车辆无法找到动态的用户平衡路线。因此,我的目标是使那些定义的流程(车辆)在每个模拟时间步长中找到动态的用户平衡路线。我知道duarouter应该是解决方案。但是如何在每个仿真时间步中调用duarouter,如何在代码中将duarouter合并到哪里?
我遵循SUMO网站提供的示例代码。基本上,我定义了一个run()函数,该函数定义了我的信号控制算法。然后我在主函数中调用run()。
我应该在哪里安装duarouter?
我应该如何在仿真循环中调用它,以确保在每个时间步中,网络中的车辆都能找到其用户平衡路线。
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()
答案 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"])
实际上
要在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>)