Hi everyone

At every step, I save the simulation state, load it separately with another
traci connection, and run 20 steps of the later

I'm using flow to generate traffic and the problem is that the newly
created connection repeats the traffic generation from the beginning and
not from where it was loaded

Based on what I saw in the documentation
https://sumo.dlr.de/docs/Simulation/SaveAndLoad.html
and these two posts
https://www.eclipse.org/lists/sumo-user/msg01162.html
https://www.eclipse.org/lists/sumo-user/msg03476.html
I understand that the flow should start from the same point it was left

See script attached

SUMO 1.7.0

Sincerely,

Marcelo d'Almeida

<<attachment: temp.zip>>

import os
import sys

if 'SUMO_HOME' in os.environ:
    tools = os.path.join(os.environ['SUMO_HOME'], 'tools')
    sys.path.append(tools)
else:
    sys.exit("please declare environment variable 'SUMO_HOME'")

import traci
import traci.constants as tc
from sumolib import checkBinary
from os.path import expanduser


home = expanduser("~")

def get_sumo_binary(gui=False):

    if gui:
        sumo_binary = checkBinary('sumo-gui')
    else:
        sumo_binary = checkBinary('sumo')

    return sumo_binary

class Example:

    def __init__(self, net_file, route_file):

        self.net_file = net_file
        self.route_file = route_file

    def start_traci(self, gui=False):
        traci.start([
            get_sumo_binary(gui),
            '-n', self.net_file,
            '-r', self.route_file
        ])

    def run_inner_model(self, initial_step):
        print('starting')
        gui = True

        traci.start([
            get_sumo_binary(gui),
            '-n', self.net_file,
            '-r', self.route_file,
            '--start', str(True),
            '--begin', str(initial_step),
            '--load-state', home + '/temp/simulation_state' 
        ], label="1")

        traci_connection = traci.getConnection("1")

        i = 20
        while traci_connection.simulation.getMinExpectedNumber() > 0:
            traci_connection.simulationStep()
            print("running inner_model")

            if i == 0:
                break

            i -= 1

        traci.close()
        traci.switch('default')

    def run_simulation(self):

        while traci.simulation.getMinExpectedNumber() > 0:

            traci.simulation.saveState(home + '/temp/simulation_state')

            initial_step = traci.simulation.getTime()

            self.run_inner_model(initial_step)

            traci.simulationStep()


net_file = home + '/temp/regular-intersection__right_on_red.net.xml'
route_file = home + '/temp/regular-intersection.rou.xml'

example = Example(net_file, route_file)
example.start_traci()
example.run_simulation()
traci.close()


_______________________________________________
sumo-user mailing list
[email protected]
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/sumo-user

Reply via email to