Skip to content

Instantly share code, notes, and snippets.

@priyanksonis
Created September 12, 2019 08:53
Show Gist options
  • Save priyanksonis/49deccc904a116443b3217697bfdc0e1 to your computer and use it in GitHub Desktop.
Save priyanksonis/49deccc904a116443b3217697bfdc0e1 to your computer and use it in GitHub Desktop.
Give commands to one simulation in SUMO from two different clients
import os
import sys
import optparse
import time
import threading
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'")
from sumolib import checkBinary # Checks for the binary in environ vars
import traci
import sumolib
from sumolib.miscutils import getFreeSocketPort
port = sumolib.miscutils.getFreeSocketPort()
MODEL_NAME = 'ATCS_MODEL'
AGGREGATE_STATS_EVERY = 5
epsilon = 1
class ATCS:
def __init__(self):
pass
def get_options(self):
optParser = optparse.OptionParser()
optParser.add_option("--nogui", action="store_true",
default=False, help="run the commandline version of sumo")
options, args = optParser.parse_args()
return options
if __name__ == "__main__":
env = ATCS()
options = env.get_options()
# check binary
if options.nogui:
sumoBinary = checkBinary('sumo')
else:
sumoBinary = checkBinary('sumo-gui')
PORT = port
PORT = int(sys.argv[1])
traci.start([sumoBinary, "-c", "atcs2.sumocfg", '--start', "--num-clients", "2"], port=PORT)
#traci.start([sumoBinary, "-c", "atcs2.sumocfg", '--start', "--num-clients", "2"], port = PORT)
traci.setOrder(1) # number can be anything
while traci.simulation.getMinExpectedNumber() > 0:
traci.simulationStep()
print("In thread 1")
# more traci commands
traci.close()
import os
import sys
import optparse
import time
import threading
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'")
from sumolib import checkBinary # Checks for the binary in environ vars
import traci
import sumolib
from sumolib.miscutils import getFreeSocketPort
port = sumolib.miscutils.getFreeSocketPort()
MODEL_NAME = 'ATCS_MODEL'
AGGREGATE_STATS_EVERY = 5
epsilon = 1
class ATCS:
def __init__(self):
pass
def get_options(self):
optParser = optparse.OptionParser()
optParser.add_option("--nogui", action="store_true",
default=False, help="run the commandline version of sumo")
options, args = optParser.parse_args()
return options
if __name__ == "__main__":
env = ATCS()
options = env.get_options()
# check binary
if options.nogui:
sumoBinary = checkBinary('sumo')
else:
sumoBinary = checkBinary('sumo-gui')
PORT = 55863
PORT = int(sys.argv[1])
# traci.start(["sumo", "-c", "atcs2.sumocfg", "--num-clients", "2"], port=PORT)
traci.init(PORT)
traci.setOrder(2) # number can be anything as long as each client gets its own number
while traci.simulation.getMinExpectedNumber() > 0:
traci.simulationStep()
print("In thread 2")
# more traci commands
traci.close()
@priyanksonis
Copy link
Author

Give commands to one simulation in SUMO from two different clients.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment