예제 #1
0
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
        })
예제 #5
0
    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)
예제 #6
0
    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
            }
        )