From fcbd20ab07fd4c1cb56bc8fd02475fa31d389ab4 Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Sun, 2 Sep 2018 22:20:12 -0700 Subject: [PATCH 1/3] make it possible to connect two clients to SUMO --- flow/core/params.py | 9 +++++++-- flow/envs/base_env.py | 7 ++++--- flow/visualize/visualizer_rllib.py | 7 ++++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/flow/core/params.py b/flow/core/params.py index a3404bc7f..2ee4eb2bd 100755 --- a/flow/core/params.py +++ b/flow/core/params.py @@ -25,7 +25,8 @@ def __init__(self, seed=None, restart_instance=False, print_warnings=True, - teleport_time=-1): + teleport_time=-1, + num_clients=1): """Instantiate SumoParams. Attributes @@ -66,7 +67,10 @@ def __init__(self, If set to false, this will silence sumo warnings on the stdout teleport_time: int, optional If negative, vehicles don't teleport in gridlock. If positive, - they teleport after teleport_time seconds + they teleport after teleport_time seconds. + num_clients: int, optional + Number of clients SUMO expects to connect. Should be different from + one only in very rare situations. """ self.port = port @@ -81,6 +85,7 @@ def __init__(self, self.restart_instance = restart_instance self.print_warnings = print_warnings self.teleport_time = teleport_time + self.num_client = num_clients class EnvParams: diff --git a/flow/envs/base_env.py b/flow/envs/base_env.py index 445f2b1e7..be320a5a1 100755 --- a/flow/envs/base_env.py +++ b/flow/envs/base_env.py @@ -181,9 +181,9 @@ def start_sumo(self): # command used to start sumo sumo_call = [ self.sumo_params.sumo_binary, "-c", self.scenario.cfg, - "--remote-port", - str(port), "--step-length", - str(self.sim_step) + "--remote-port", str(port), + "--num-clients", str(self.sumo_params.num_clients), + "--step-length", str(self.sim_step) ] # add step logs (if requested) @@ -244,6 +244,7 @@ def start_sumo(self): time.sleep(config.SUMO_SLEEP) self.traci_connection = traci.connect(port, numRetries=100) + self.traci_connection.setOrder(0) self.traci_connection.simulationStep() return diff --git a/flow/visualize/visualizer_rllib.py b/flow/visualize/visualizer_rllib.py index d085f2cde..d2beca1b6 100644 --- a/flow/visualize/visualizer_rllib.py +++ b/flow/visualize/visualizer_rllib.py @@ -17,8 +17,8 @@ import os import ray -from ray.rllib.agent import get_agent_class -from ray.tune.registry import get_registry, register_env +from ray.rllib.agents.agent import get_agent_class +from ray.tune.registry import register_env from flow.utils.registry import make_create_env from flow.utils.rllib import get_flow_params @@ -85,7 +85,7 @@ register_env(env_name, create_env) agent_cls = get_agent_class(args.run) - agent = agent_cls(env=env_name, registry=get_registry(), config=config) + agent = agent_cls(env=env_name, config=config) checkpoint = result_dir + '/checkpoint-' + args.checkpoint_num agent._restore(checkpoint) @@ -114,6 +114,7 @@ sumo_params = flow_params['sumo'] sumo_params.sumo_binary = "sumo-gui" sumo_params.emission_path = "./test_time_rollout/" + sumo_params.num_clients = 2 env = env_class( env_params=env_params, sumo_params=sumo_params, scenario=scenario) From eb30c6c30a98dfc9ed08f12ea9f99ba78e252691 Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Sun, 2 Sep 2018 22:22:39 -0700 Subject: [PATCH 2/3] fix --- flow/core/params.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/core/params.py b/flow/core/params.py index 2ee4eb2bd..936d28443 100755 --- a/flow/core/params.py +++ b/flow/core/params.py @@ -85,7 +85,7 @@ def __init__(self, self.restart_instance = restart_instance self.print_warnings = print_warnings self.teleport_time = teleport_time - self.num_client = num_clients + self.num_clients = num_clients class EnvParams: From d508e130815501376e13a8f25fa751fa5b3d1170 Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Tue, 4 Sep 2018 13:45:22 -0700 Subject: [PATCH 3/3] don't use sumo-gui --- flow/visualize/visualizer_rllib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/visualize/visualizer_rllib.py b/flow/visualize/visualizer_rllib.py index d2beca1b6..6703e559d 100644 --- a/flow/visualize/visualizer_rllib.py +++ b/flow/visualize/visualizer_rllib.py @@ -112,7 +112,7 @@ env_class = getattr(module, flow_params["env_name"]) env_params = flow_params['env'] sumo_params = flow_params['sumo'] - sumo_params.sumo_binary = "sumo-gui" + sumo_params.sumo_binary = "sumo" sumo_params.emission_path = "./test_time_rollout/" sumo_params.num_clients = 2