Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [sumo-user] Using own created assignment

A1) possibly your vehicle has a different vClass from the defaut vClass="passenger" assumed by simulation.findRoute. You can avoid this by calling findRoute(from, to, traci.vehicle.getTypeID(vehID)).
If that doesn't solve it, print the found route and then insert a vehicle on this route via XML inputs for a more comprehensive error message.

A2) the function simulation.findRoute uses the global edge travel times whereas you only penalized the vehicle-specific traveltimes (traci.vehicle.setAdaptedTraveltime). Use traci.edge.adaptTraveltime instead.
The values of vehicle.setAdaptedTraveltime are only used when calling traci.vehicle.rerouteTraveltime.

A3) Either by calling edge.adaptTravelTime(traci.edge.getTravelTime) for all edges or by using findRoute(..., routingMode=traci.constants.ROUTING_MODE_AGGREGATED) - see https://sumo.dlr.de/wiki/Simulation/Routing#Travel-time_values_for_routing

A4) you cannot reset edge traveltimes at the moment ( see https://github.com/eclipse/sumo/issues/5827 ) but you can limit the scope of the change by setting the begin,end arguments (or just setting it explicitly to length/speedLimit).

regards,
Jakob

Am Do., 11. Juli 2019 um 16:58 Uhr schrieb Hoffmann, Pascal <pascal.hoffmann@xxxxxx>:

First of all .. Thank you very much for the help!


I tried to apply the penalties with a basic code consisting out of .setAdaptedTraveltime and search for new routes with .findRoute . But unfortunately when I want to .setRoute the new route of .findRoute, I get an error. Furthermore the actually supposed to be different routes (route_1,route_2 and route_3) are all the same. So my questions for the code below:


Q1: Why is the setRoute function not working for the .findRoute --> new_route ?

Q2: Why is findRoute not finding different routes due to the penalyzed weights of the edges with setAdaptedTraveltime?

Q3: Is the findRoute using the currentTravelTimes like reroute and if not, how is it possible?

Q4: How can I set the adapedTraveltime back to the current after finding a new route?


def run():
step = 0
while traci.simulation.getMinExpectedNumber() >0:
traci.simulationStep()
print(step)
step+=1
det_vehs = traci.inductionloop.getLastStepVehicleIDs("det_0") #creates an induction loop
IDlist = traci.vehicle.getIDList() #creates a list of all current vehicle in the simulation
assign = 1
if step > 40:
for veh in det_vehs:
traci.vehicle.setSpeed(veh, 0.0) #sets the speed of the vehicle,
# which drives on the induction loop, to zero
for veh_1 in IDlist:
traci.vehicle.setRoutingMode(veh_1, 1) #sets the RoutingMode to aggregated
#traci.vehicle.rerouteTraveltime(veh_1) #reroutes the vehicles

current_start = traci.vehicle.getRoadID(veh_1)
trip = traci.vehicle.getRoute(veh_1)
end = trip[-1]

if assign == 1: #assignment on/off
route_inf_1 = traci.simulation.findRoute(current_start, end) #findRoute with all information
route_1 = route_inf_1[4] #just list of edges of findRoute

for edges1 in route_1: #penalyzing
traci.vehicle.setAdaptedTraveltime(veh_1, edges1, 90.0)
route__inf_2 = traci.simulation.findRoute(current_start, end) #new route find with penalyzed
route_2 = route__inf_2[4] #just list of edges of findRoute
for edges2 in route_2:
traci.vehicle.setAdaptedTraveltime(veh_1, edges2, 90.0 ) #penalyzing
route_inf_3 = traci.simulation.findRoute(current_start, end) #new route find with penalyzed
route_3 = route_inf_3[4] #just list of edges of findRoute

new_route = random.choice([route_1, route_2, route_3])
if len(new_route) > 1: #check vehicle is at final
traci.vehicle.setRoute(veh_1, new_route)
traci.close()
sys.stdout.flush()


--> Error:
Traceback (most recent call last):
  File "G:/TE-F1/Studenten/Hoffmann_Pascal/04_Simulation/ma_routing_via_traci/input.py", line 78, in <module>
    run()
  File "G:/TE-F1/Studenten/Hoffmann_Pascal/04_Simulation/ma_routing_via_traci/input.py", line 61, in run
    traci.vehicle.setRoute(veh_1, new_route)
  File "C:\Program Files (x86)\Eclipse\Sumo\tools\traci\_vehicle.py", line 1124, in setRoute
    self._connection._sendExact()
  File "C:\Program Files (x86)\Eclipse\Sumo\tools\traci\connection.py", line 112, in _sendExact
    raise TraCIException(err, prefix[1], _RESULTS[prefix[2]])
traci.exceptions.TraCIException: Route replacement failed for carflow_1.1


Von: sumo-user-bounces@xxxxxxxxxxx <sumo-user-bounces@xxxxxxxxxxx> im Auftrag von Jakob Erdmann <namdre.sumo@xxxxxxxxx>
Gesendet: Montag, 8. Juli 2019 16:46:16
An: Sumo project User discussions
Betreff: Re: [sumo-user] Using own created assignment
 
1) start sumo with option --routing-algorithm astar
2) You can apply the penalties yourself by increasing the weight/traveltime for all edges in the previously found routes.

regards,
Jakob

Am Mo., 8. Juli 2019 um 16:28 Uhr schrieb Hoffmann, Pascal <pascal.hoffmann@xxxxxx>:

Dear sumo-users,


I am using SUMO via TraCI. My target is to assign vehicles in case of congestion randomly on a set of alternative path to reduce waiting times. So far I'm rerouting with the TraCI rerouters, but now I want to implement my own assignment. Therefore I want to ask some questions:


Q1: Is it possible to use the "build in" astar routing algorithm (AStarRouter.h?) via TraCI and if, how?


Q2: I know that SUMO uses the penalty method in the MARouter to find alternative routes. But so far, I couldn't find, where and how it was realized to adapt this method for the astar multi-path.


Q3: Is it possible to adapt the traci.vehicle.rerouteTraveltime especially with the aggregated travel times in a new external python script to use the "new" made routing algorithm concerned in Q1&Q2?


Thanks in advance!


Best regards,

Pascal

_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/sumo-user
_______________________________________________
sumo-user mailing list
sumo-user@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/sumo-user

Back to the top