def test_single_agent_ring(self): # create the base environment env = FlowEnv( flow_params=ring( num_automated=5, simulator="traci", multiagent=False ), multiagent=False, shared=False, version=1 ) env.reset() # test observation space test_space( env.observation_space, expected_min=np.array([-float("inf") for _ in range(25)]), expected_max=np.array([float("inf") for _ in range(25)]), expected_size=25, ) # test action space test_space( env.action_space, expected_min=np.array([-1 for _ in range(5)]), expected_max=np.array([1 for _ in range(5)]), expected_size=5, ) # kill the environment env.wrapped_env.terminate()
def setUp(self): self.sim_params = deepcopy(ring())["sim"] self.sim_params.render = False # for AVClosedEnv flow_params_closed = deepcopy(ring()) self.network_closed = flow_params_closed["network"]( name="test_closed", vehicles=flow_params_closed["veh"], net_params=flow_params_closed["net"], ) self.env_params_closed = flow_params_closed["env"] self.env_params_closed.additional_params = SA_CLOSED_ENV_PARAMS.copy() # for AVOpenEnv pass # TODO
def _get_ring_env_attributes(scale): """Return the environment parameters of the fast ring environment. Parameters ---------- scale : int the scale of the ring environment. The length of the network and the number of human/RL vehicles is scaled by this value. Returns ------- dict see ENV_ATTRIBUTES """ return { "meta_ac_space": lambda relative_goals, multiagent: Box( low=-5 if relative_goals else 0, high=5 if relative_goals else 10, shape=(1 if multiagent else scale, ), dtype=np.float32), "state_indices": lambda multiagent: [0] if multiagent else [15 * i for i in range(scale)], "env": lambda evaluate, render, multiagent, shared, maddpg: FlowEnv( flow_params=ring( stopping_penalty=False, acceleration_penalty=False, scale=scale, evaluate=evaluate, multiagent=multiagent, ), render=render, multiagent=multiagent, shared=shared, maddpg=maddpg, ) if evaluate else (RingMultiAgentEnv if multiagent else RingSingleAgentEnv)( maddpg=maddpg, length=[250 * scale, 360 * scale], num_vehicles=22 * scale, dt=0.2, horizon=3000, gen_emission=False, rl_ids=[22 * i for i in range(scale)], warmup_steps=0, initial_state=os.path.join( hbaselines_config.PROJECT_PATH, "hbaselines/envs/mixed_autonomy/envs/initial_states/" "ring-v{}.json".format(scale - 1)), sims_per_step=1, ), }
def test_multi_agent_ring(self): # create the base environment env = FlowEnv( flow_params=ring( num_automated=5, simulator="traci", multiagent=True ), multiagent=True, shared=False, version=1 ) env.reset() # test the agent IDs. self.assertListEqual( sorted(env.agents), ['rl_0_0', 'rl_0_1', 'rl_0_2', 'rl_0_3', 'rl_0_4']) # test observation space test_space( env.observation_space["rl_0_0"], expected_min=np.array([-float("inf") for _ in range(5)]), expected_max=np.array([float("inf") for _ in range(5)]), expected_size=5, ) # test action space test_space( env.action_space["rl_0_0"], expected_min=np.array([-1]), expected_max=np.array([1]), expected_size=1, ) # kill the environment env.wrapped_env.terminate()
# Mixed autonomy traffic flow environments. # # ======================================================================= # "ring-v0": { "meta_ac_space": lambda relative_goals, multiagent: Box(low=-5 if relative_goals else 0, high=5 if relative_goals else 10, shape=(5, ), dtype=np.float32), "state_indices": lambda multiagent: [0], "env": lambda evaluate, render, n_levels, multiagent, shared, maddpg: FlowEnv( flow_params=ring( stopping_penalty=True, acceleration_penalty=True, evaluate=evaluate, multiagent=multiagent, ), render=render, multiagent=multiagent, shared=shared, maddpg=maddpg, ), }, "merge-v0": { "meta_ac_space": lambda relative_goals, multiagent: Box(low=-.5 if relative_goals else 0, high=.5 if relative_goals else 1, shape=(1
}, # ======================================================================= # # Mixed autonomy traffic flow environments. # # ======================================================================= # "ring": { "meta_ac_space": lambda relative_goals: Box(low=-10 if relative_goals else 0, high=10 if relative_goals else 30, shape=(5, ), dtype=np.float32), "state_indices": [5 * i for i in range(5)], "env": lambda evaluate, render, multiagent, shared, maddpg: FlowEnv( flow_params=ring( evaluate=evaluate, multiagent=multiagent, ), render=render, multiagent=multiagent, shared=shared, maddpg=maddpg, ), }, "ring_small": { "meta_ac_space": lambda relative_goals: Box(low=-.5 if relative_goals else 0, high=.5 if relative_goals else 1, shape=(1, ), dtype=np.float32), "state_indices": [0], "env":
# ======================================================================= # # Mixed autonomy traffic flow environments. # # ======================================================================= # "ring": { "meta_ac_space": lambda relative_goals: Box( low=-1 if relative_goals else 0, high=1, shape=(5,), dtype=np.float32 ), "state_indices": [5 * i for i in range(5)], "env": lambda evaluate, render, multiagent, shared, maddpg: FlowEnv( flow_params=ring( evaluate=evaluate, multiagent=multiagent, ), render=render, multiagent=multiagent, shared=shared, maddpg=maddpg, ), }, "ring_small": { "meta_ac_space": lambda relative_goals: Box( low=-.5 if relative_goals else 0, high=.5 if relative_goals else 1, shape=(1,), dtype=np.float32 ),