Thank you for the response. I believe I have resolved the issue. Just to give
an idea of what I am trying to do. I am trying to have a distribution of
traffic lights that communicate with each other over a network., with pairs of
lights providing access to what should be a single bidirectional lane. Upon the
presence of a vehicle on either end, each pair of lights negotiates the
priority of access based on a class of vehicle, heavy, light etc.
I was using an external library to simulate the networking medium and having
each node/tl have a separate thread as a message receive loop. Presumably
issues with the Python GIL, or just servicing the various other loops was
causing erroneous readings.
I was measuring time delays with the following code:
whiletraci.simulation.getMinExpectedNumber()>0:
sim_step_start=getMillis()
traci.simulationStep()
sim_step_end=getMillis()
foriintrafficLightList:
i.lightState.run()
i.setLightUpdate()
step+=1
state_process_end=getMillis()
print(Fore.GREEN+"##########################################################")
print(f"[[{getMillis():.1f}] ] total
sim:{(state_process_end-sim_step_start):.1f}")
print(f"[[{getMillis():.1f}] ] sumo sim:{(sim_step_end-sim_step_start):.1f}")
print(f"[[{getMillis():.1f}] ] state
sim:{(state_process_end-sim_step_end):.1f}"+Style.RESET_ALL)
presumably some other thread(s) were being processed between sim_step_start and
sim_step_end as well as simulationStep(). Having switched to using internal
python structures to simulate the medium the problem disappeared. However as a
note, I am using 1.19 and removing external control of TLS did make timing more
consistent. I still don't quite understand how the loop timings above could be
shorter than the configured delay, regardless of whatever extra processing
delay happens in the runner.py.
On 9 November 2023 at 09:12:41 -00:00, Mirko Barthauer
<[email protected]> wrote:
> Hi Thiago,
>
>
> I cannot reproduce the problem with my simple example scenario. Is the timing
> more or less consistent if you do not call traci.trafficlight.setPhase? Do
> you use the most recent SUMO release? If you can confirm both, it would be
> great to have a minimal example scenario to reproduce.
>
>
> Best regards
> Mirko
>
>
>
>
>
> -----Original-Nachricht-----
> Betreff: [sumo-user] Traci and sumo gui inconsistent simulation speed
> Datum: 2023-11-08T19:03:05+0100
> Von: "Tiago Furtado via sumo-user" <[email protected]>
> An: "[email protected]" <[email protected]>
>
>
>
>
>
>
>
>
>
> Hi Everyone,
>
>
>
> I am having an issue when using sumo-gui and a Traci with the simulation
> speed. Basically no matter what I set as the delay in the GUI I am getting a
> lot of cycle times that are both longer (acceptable for certain instantaneous
> steps where more processing is necessary), but I'm also getting cycle times
> that are much shorter than the delay. For example I'm measuring this in the
> runner.py , In the GUI I'm setting a delay of 200ms , and not only is the
> timing extremely inconsistent, it is not honoring the value I set. the value
> in sumo sim is measured in ms around "traci.simulationStep()".
>
>
> ##########################################################
> [[24559.2] ] total sim:58.1
> [[24559.2] ] sumo sim: 5.8
> [[24559.2] ] state sim: 52.3
> ##########################################################
> [[25248.3] ] total sim:231.8
> [[25248.4] ] sumo sim: 102.8
> [[25248.4] ] state sim: 129.0
> ##########################################################
> [[25569.6] ] total sim:53.1
> [[25569.6] ] sumo sim: 36.5
> [[25569.6] ] state sim: 16.6
> ##########################################################
> [[26019.1] ] total sim:2.6
> [[26019.1] ] sumo sim: 1.0
> [[26019.2] ] state sim: 1.6
> ##########################################################
> [[26695.4] ] total sim:160.3
> [[26695.5] ] sumo sim: 102.8
> [[26695.5] ] state sim: 57.5
> ##########################################################
> [[27190.4] ] total sim:134.8
> [[27190.4] ] sumo sim: 77.4
> [[27190.5] ] state sim: 57.4
> ##########################################################
> [[27949.4] ] total sim:377.8
> [[27949.4] ] sumo sim: 103.0
> [[27949.4] ] state sim: 274.8
> ##########################################################
> [[28124.0] ] total sim:22.7
> [[28124.0] ] sumo sim: 21.5
> [[28124.0] ] state sim: 1.2
> ##########################################################
> [[28770.6] ] total sim:159.8
> [[28770.6] ] sumo sim: 158.7
> [[28770.6] ] state sim: 1.1
> ##########################################################
>
>
>
> My script is subscribing to events from 13 different traffic lights and is
> controlling the phase of each of them via traci.trafficlight.setPhase(). Is
> there a way to make each step a more consistent time? Is it the number of
> lights I'm controlling? As far as I can tell the subscriptions aren't causing
> the variablility, but setPhase() seems to.
>
> I would appreciate any insight, or suggestions of things to try.
>
> Regards,
>
> Tiago Furtado
>
>
_______________________________________________
sumo-user mailing list
[email protected]
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/sumo-user