SUMO - моделирование сценария дорожного движения

Как я могу смоделировать непрерывный транспортный поток на основе исторических данных, которые включают: 1. Идентификатор транспортного средства; 2. Скорость; 3. Координаты

не зная маршруты каждого идентификатора транспортного средства.


person skw1990    schedule 03.04.2017    source источник


Ответы (1)


Это часто задаваемые вопросы, но, вероятно, здесь раньше не было ответа. К сожалению, ответ во многом зависит от качества ваших входных данных, главным образом от частоты / расстояния обновлений вашего местоположения (было бы также полезно, если бы для каждого элемента данных была указана временная метка) и от того, насколько точно местоположения соответствуют вашей уличной сети. В лучшем случае есть обновление местоположения на каждом краю маршрута в уличной сети, и вы можете просто считать маршрут, сопоставив местоположение с улицей. Это сопоставление может быть выполнено с помощью python sumolib, поставляемого с sumo:

import sumolib 
net = sumolib.net.readNet("myNet.net.xml")
route = []
radius = 1
for x, y in coordinates:
    minDist, minEdge = min([(dist, edge) for edge, dist in net.getNeighboringEdges(x_coordinate, y_coordinate, radius)])
    if len(route) == 0 or route[-1] != minEdge.getID():
        route.append(minEdge.getID())

См. Также http://sumo.dlr.de/wiki/Tools/Sumolib#locate_nearby_edges_based_on_the_geo-coordinate для дополнительного преобразования местоположения.

Это не удастся, если в маршруте есть ребро, которое не было затронуто точкой данных, или если у вас есть несоответствие (например, соответствие ребру, которое идет в "неправильном" направлении). В первом случае можно легко отремонтировать маршрут с помощью дуарутера сумо.

> duarouter -n myNet.net.xml -r myRoutesWithGaps.rou.xml -o myRepairedRoutes.rou.xml --repair

Последний случай значительно сложнее обнаружить и исправить, потому что он во многом зависит от вашего определения неправильной кромки. Есть почти очевидные случаи, такие как внезапное столкновение с противоположным направлением (что все еще может произойти в реальном движении) и множество небольших объездов, которые трудно решить и которые заслуживают отдельного ответа.

Поскольку вы запрашиваете постоянный ввод, вам также может быть интересно сделать это в реальном времени с помощью TraCI и в этот FAQ по постоянному входному потоку.

person Michael    schedule 04.04.2017
comment
ТБХ, я еще новичок в этом. Есть отметки времени. Так как это изменит ситуацию? Спасибо. - person skw1990; 04.04.2017
comment
отметки времени вместе со скоростью полезны при оценке пройденного расстояния, чтобы вы знали максимальный диапазон при поиске следующего края (при условии, что ваше последнее предположение было правильным) - person Michael; 04.04.2017