Thanks. A2 and A3 helped a lot. I'm wondering, if, when I just need the current 
travel times and not the starting edge travel times, whether I just can reset 
the travel times with setting them back to trace.edge.getTraveltime in the 
beginning of the function?


Unfortunately the vClass was correct and traci.vehicle.getTypeID(vehID) didnt 
solve the problem. The print out of the new routes looks correct ('edgeID', 
'edgeID,...). But I was wondering, whether the .setRoute is working, when there 
is a junction (e.g. ':gneJ32_10') in the list of the new route? Because I'm 
using traci.vehicle.getRoadID(vehID)to get the current position of the vehicle.


________________________________
Von: [email protected] <[email protected]> im Auftrag 
von Jakob Erdmann <[email protected]>
Gesendet: Freitag, 12. Juli 2019 09:11:26
An: Sumo project User discussions
Betreff: 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 
<[email protected]<mailto:[email protected]>>:

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: [email protected]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>> im 
Auftrag von Jakob Erdmann <[email protected]<mailto:[email protected]>>
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.
3) Yes. See 
https://sumo.dlr.de/wiki/Simulation/Routing#Travel-time_values_for_routing

regards,
Jakob

Am Mo., 8. Juli 2019 um 16:28 Uhr schrieb Hoffmann, Pascal 
<[email protected]<mailto:[email protected]>>:

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
[email protected]<mailto:[email protected]>
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
[email protected]<mailto:[email protected]>
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
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://www.eclipse.org/mailman/listinfo/sumo-user

Reply via email to