Esempio n. 1
0
    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()
Esempio n. 2
0
    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
Esempio n. 3
0
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,
        ),
    }
Esempio n. 4
0
    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()
Esempio n. 5
0
 # 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
Esempio n. 6
0
    },

    # ======================================================================= #
    # 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":
Esempio n. 7
0
    # ======================================================================= #
    # 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
        ),