def start(): """Start a environment object with ray.""" sumo_params = SumoParams(sim_step=0.1, render=False) vehicles = Vehicles() vehicles.add( veh_id="idm", acceleration_controller=(IDMController, {}), routing_controller=(ContinuousRouter, {}), num_vehicles=22) env_params = EnvParams(additional_params=ADDITIONAL_ENV_PARAMS) additional_net_params = ADDITIONAL_NET_PARAMS.copy() net_params = NetParams(additional_params=additional_net_params) initial_config = InitialConfig(bunching=20) scenario = LoopScenario( name="sugiyama", vehicles=vehicles, net_params=net_params, initial_config=initial_config) env = AccelEnv(env_params, sumo_params, scenario) env._close()
def followerstopper_example(render=None): """Perform a simulation of vehicles on a ring road. In this simulation, one vehicle is automated, and switches from human-driving to begins to automated vehicles after the time specified in AUTOMATED_TIME. Parameters ---------- render : bool, optional specifies whether to use the gui during execution Returns ------- exp: flow.core.experiment.Experiment A non-rl experiment demonstrating the performance of human-driven vehicles on a ring road. """ sim_params = SumoParams(sim_step=0.1, render=True) if render is not None: sim_params.render = render vehicles = VehicleParams() vehicles.add(veh_id='automated', acceleration_controller=(FollowerStopper, { 'v_des': 4.15 }), car_following_params=SumoCarFollowingParams(accel=1), routing_controller=(ContinuousRouter, {}), num_vehicles=1) vehicles.add(veh_id='human', acceleration_controller=(IDMController, { 'noise': 0.2 }), routing_controller=(ContinuousRouter, {}), num_vehicles=21) env_params = EnvParams( additional_params={'automated_time': AUTOMATED_TIME}) additional_net_params = ADDITIONAL_NET_PARAMS.copy() additional_net_params['length'] = LENGTH net_params = NetParams(additional_params=additional_net_params) initial_config = InitialConfig() scenario = LoopScenario(name='sugiyama', vehicles=vehicles, net_params=net_params, initial_config=initial_config) env = ControllerEnv(env_params, sim_params, scenario) return Experiment(env)
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 sugiyama_example(render=None): """ Perform a simulation of vehicles on a ring road. Parameters ---------- render : bool, optional specifies whether to use the gui during execution Returns ------- exp: flow.core.experiment.Experiment A non-rl experiment demonstrating the performance of human-driven vehicles on a ring road. """ sim_params = SumoParams(sim_step=0.1, render=True) if render is not None: sim_params.render = render vehicles = VehicleParams() vehicles.add( veh_id="idm", acceleration_controller=(IDMController, {}), routing_controller=(ContinuousRouter, {}), num_vehicles=22) env_params = EnvParams(additional_params=ADDITIONAL_ENV_PARAMS) additional_net_params = ADDITIONAL_NET_PARAMS.copy() net_params = NetParams(additional_params=additional_net_params) initial_config = InitialConfig(bunching=20) scenario = LoopScenario( name="sugiyama", vehicles=vehicles, net_params=net_params, initial_config=initial_config) env = AccelEnv(env_params, sim_params, scenario) return Experiment(env)
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 } )