Условие ASSERT для вождения транспортных средств в Veins не выполнено

Я создал множество маршрутов (~90 000+), используя SUMO ACTIVITYGEN/DUAROUTER с конфигурационным файлом и различной продолжительностью (--duration-d 1, --duration-d 7, ...).

Полученный .rou.xml успешно выполняется SUMO без серьезных ошибок. Просто несколько предупреждений о недействительном departPos.

Но при использовании Veins я получаю следующее сообщение об ошибке:

<!> Error in module (Veins::TraCIScenarioManagerLaunchd)
Scenario.manager (id=6) at event #2327172, t=25619.2: Model error:
ASSERT: condition count == drivingVehicleCount false in function
processVehicleSubscription,
veins/modules/mobility/traci/TraCIScenarioManager.cc line 640.

Я удалил условие ASSERT и отобразил оба значения. count всегда выше, чем drivingVehicleCount.

Включенный пример "veins" работает без проблем.

Я использую:

  • СУМО 0.22.0
  • ОМНет++ 4.6
  • Жилки 4 альфа 2.

Кроме того, я протестировал Veins 3.0 и получил такое же сообщение об ошибке.

Кто-нибудь сталкивался с такой же проблемой?


person Florian86    schedule 24.07.2015    source источник


Ответы (1)


Комментирование ASSERT совершенно нормально.

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

Veins подписывается на эти изменения состояния, чтобы отслеживать количество движущихся транспортных средств. Чтобы убедиться в правильности учета, он сравнивает свой собственный подсчет с количеством активных транспортных средств, сообщаемым SUMO.

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

person Christoph Sommer    schedule 24.07.2015