SUMO - Как создавать маршруты без использования алгоритмов кратчайшего пути?

При запуске моделирования в SUMO с маршрутами, созданными duarouter в сети, подобной сетке, по прошествии определенного времени транспортные средства начинают концентрироваться в середине сетки и на перекрестках из-за того, что маршруты генерируются с использованием алгоритм кратчайшего пути (dijkstra, astar, CH или CHWrapper). Как генерировать случайные маршруты, которые не создаются с помощью алгоритма кратчайшего пути, и не заставляют автомобили вести себя подобным образом?


person joaopaulo.ps93    schedule 21.06.2016    source источник


Ответы (1)


Обычный способ предотвратить это - использовать динамическое присвоение, то есть использовать SUMO duaIterate.py сценарий для расчета распределения маршрутов на основе времени в пути на предыдущей итерации моделирования. Поэтому, если у вас есть файл поездки (возможно, из randomTrips.py), просто позвоните

duaIterate.py -n net.xml -t trips.xml

Если вам действительно нужны случайные маршруты, вы можете попробовать указать промежуточные точки (опция -i) для randomTrips.py, но он все равно будет давать кратчайшие пути между ними. В качестве альтернативы вы можете сами написать простой скрипт, который анализирует сеть и соединения и подбрасывает монету на каждом перекрестке, куда двигаться дальше. В Python можно было бы сделать что-то вроде следующего:

import random, sumolib
net = sumolib.net.readNet('myNet.net.xml')
route = [net.getEdge('startEdge')]
while len(route) < finalLength:
    route.append(random.choice(route[-1].getToNode().getOutgoing()))

Этот код игнорирует то, что соединения или ребра, возможно, не подходят для используемого вами типа транспортного средства, но я надеюсь, что вы уловили идею. Подробнее об использовании сумолиба см. http://sumo.dlr.de/wiki/Tools/Sumolib < / а>

person Michael    schedule 23.06.2016
comment
Прежде чем прочитать ваш ответ, я сам создал случайные маршруты с монетным подходом, но без сумолиба. Сейчас то же самое проделал с сумолибом, спасибо за ответ. - person joaopaulo.ps93; 24.06.2016