Динамическая регулировка веса кромки при маршрутизации

I в настоящее время ведутся исследования по улучшению условий движения с помощью регулировки краяweight.

Проблема в настоящее время заключается в том , что при генерации routesvia DUAROUTERон принимает фиксированныйweight, который остается постоянным на протяжении всего поколения маршрутизации.

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

Приблизительное представление о том, чего я пытаюсь достичь;

Учитывая, что начальная weightчасть края является егоtraveltime, если плотность слишком высока( что предполагает перегрузку), я хотел бы динамически увеличитьweight, чтобы отразить, что это » правда » traveltime

1 ответ

  1. В общем случае duarouter способен читать файл веса, который может дать (зависящий от времени) вес (время в пути) для всех ребер. Формат:

    <additional>
    <interval begin="0" end="3600">
    <edge id="edge1" traveltime="120"/>
    ... more edges ...
    </interval>
    ... more intervals ...
    </additional>

    и это описано здесь . Вы можете создать этот файл веса с имитацией, а затем использовать итерационный процесс, который выполняет чередующееся моделирование и маршрутизацию для достижения равновесия пользователя. Инструмент для этого duaIterate.py и это описано здесь . Вы также можете изменить этот сценарий, чтобы адаптировать файл веса к вашим пожеланиям.

    Если у вас недостаточно времени для этого иногда длительного процесса, вы также можете использовать маршрутизацию внутри симуляции, которая всегда будет текущее время в пути в зависимости от нагрузки на ребра. Вы можете начать с помощью файла поездки, который обычно входит в duarouter непосредственно для моделирования,
    так вместо
    duarouter -n net.xml -t trips.xml
    вы звоните sumo -n net.xml -r trips.xml.
    Подробности здесь . Это работает гораздо быстрее, но дает вам меньше влияния.