Функция changeTarget () не работает - PullRequest
0 голосов
/ 17 октября 2019

Я управляю симуляцией, в которой требуется, чтобы каждая машина оставалась в нем. Поэтому, когда автомобиль достигает конечного пункта назначения, я попытался изменить его, используя функцию 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

Большое спасибо заранее!

1 Ответ

0 голосов
/ 24 октября 2019

Решение находится в https://github.com/eclipse/sumo/issues/6172. Суть в том, что вам нужно убедиться, что ваш новый пункт назначения является «реальным» краем (без стыковочного внутреннего края) и что ваше транспортное средство разрешено на этом краю и чтоэто связано с вашей текущей позиции.

...