Я управляю симуляцией, в которой требуется, чтобы каждая машина оставалась в нем. Поэтому, когда автомобиль достигает конечного пункта назначения, я попытался изменить его, используя функцию changeTarget()
из библиотеки traci.
Если говорить конкретно, я использую функции getRoute
и getRouteIndex
, чтобы узнать,транспортное средство находится в конце маршрута и использует changeTarget
для установки нового маршрута, который теоретически должен быть создан командой. Однако код ошибки продолжает появляться: traci.exceptions.TraCIException : Route replacement failed for 13
Я нахожусь на Ubuntu 18.04.3, SUMO 1.3.1 и использую библиотеки os, sys, optparse, subprocess, random, math.
Часть кода, которая содержит changeTarget
, это:
if step >= 12: #starts the contamination
car_matrix_actualized = traci.vehicle.getIDList() #gets the cars who are in the simulation in the new step
for i in car_matrix_actualized:
if traci.vehicle.getRouteIndex(str(i)) == (len(traci.vehicle.getRoute(str(i))) - 1): #verification to see if the car is at the end of its route
new_destiny = random.choice(traci.edge.getIDList())
traci.vehicle.changeTarget(str(i),str(new_destiny))
Весь код по этой ссылке: https://github.com/eclipse/sumo/issues/6168
Большое спасибо заранее!