def get_params(render=False): """Create flow-specific parameters for stabilizing the ring experiments. Parameters ---------- render : bool, optional specifies whether the visualizer is active Returns ------- flow.core.params.SumoParams sumo-specific parameters flow.core.params.EnvParams environment-speciifc parameters flow.scenarios.Scenario a flow-compatible scenario object """ sumo_params = SumoParams(sim_step=0.4, sumo_binary="sumo-gui" if render else "sumo", seed=0) vehicles = Vehicles() vehicles.add( veh_id="rl", acceleration_controller=(RLController, {}), routing_controller=(ContinuousRouter, {}), # speed_mode="aggressive", num_vehicles=1) vehicles.add(veh_id="human", acceleration_controller=(IDMController, { "noise": 0 }), routing_controller=(ContinuousRouter, {}), num_vehicles=21) env_params = EnvParams(horizon=HORIZON, warmup_steps=int(750 / 4)) net_params = NetParams(additional_params={ "length": 260, "lanes": 1, "speed_limit": 30, "resolution": 40 }) initial_config = InitialConfig( spacing="uniform", bunching=50, ) scenario = LoopScenario(name="stabilizing_the_ring", generator_class=CircleGenerator, vehicles=vehicles, net_params=net_params, initial_config=initial_config) return sumo_params, env_params, scenario
def setUp(self): vehicles = VehicleParams() vehicles.add("test") net_params = NetParams(additional_params=LOOP_PARAMS) env_params = EnvParams() sim_params = SumoParams() scenario = LoopScenario("test_loop", vehicles=vehicles, net_params=net_params) self.env = TestEnv(env_params, sim_params, scenario)
def setUp(self): vehicles = VehicleParams() vehicles.add("rl", acceleration_controller=(RLController, {})) vehicles.add("human", acceleration_controller=(IDMController, {})) self.sim_params = SumoParams(restart_instance=True) self.scenario = LoopScenario( name="test_merge", vehicles=vehicles, net_params=NetParams(additional_params=LOOP_PARAMS.copy()), ) params = {"max_accel": 1, "max_decel": 1, "ring_length": [220, 270]} self.env_params = EnvParams(additional_params=params)
def setUp(self): vehicles = Vehicles() vehicles.add("rl", acceleration_controller=(RLController, {})) vehicles.add("human", acceleration_controller=(IDMController, {})) self.sumo_params = SumoParams() self.scenario = LoopScenario( name="test_merge", vehicles=vehicles, net_params=NetParams(additional_params=LOOP_PARAMS.copy()), ) self.env_params = EnvParams(additional_params={ "max_accel": 3, "max_decel": 3, "target_velocity": 10 })
def test_clip_actions(self): """Test that the actions are clipped in the reward function.""" sim_params = SumoParams() vehicles = VehicleParams() additional_net_params = { "length": 230, "lanes": 1, "speed_limit": 30, "resolution": 40 } net_params = NetParams(additional_params=additional_net_params) scenario = LoopScenario(name="RingRoadTest", vehicles=vehicles, net_params=net_params) # when set to False env_params = EnvParams(clip_actions=False) env = RLActionsEnv(env_params=env_params, sim_params=sim_params, scenario=scenario) env.reset() _, ret, _, _ = env.step(rl_actions=[5]) self.assertEqual(np.mean(ret), 5) # when set to True env_params = EnvParams(clip_actions=True) env = RLActionsEnv(env_params=env_params, sim_params=sim_params, scenario=scenario) env.reset() _, ret, _, _ = env.step(rl_actions=[0.5]) self.assertEqual(ret, 0.5) _, ret, _, _ = env.step(rl_actions=[5]) self.assertEqual(ret, 1) _, ret, _, _ = env.step(rl_actions=[-5]) self.assertEqual(ret, -1)
def setUp(self): vehicles = VehicleParams() vehicles.add("rl", acceleration_controller=(RLController, {}), num_vehicles=1) vehicles.add("human", acceleration_controller=(IDMController, {}), num_vehicles=1) self.sim_params = SumoParams() self.scenario = LoopScenario( name="test_merge", vehicles=vehicles, net_params=NetParams(additional_params=LOOP_PARAMS.copy()), ) self.env_params = EnvParams( additional_params={ "max_accel": 3, "max_decel": 3, "target_velocity": 10, "lane_change_duration": 5, "sort_vehicles": False } )