def main(): env = gym.make('highway-v0') road = Road.create_random_road(lanes_count=2, lane_width=4.0, vehicles_count=0, vehicles_type=IDMVehicle) vehicle = MDPVehicle.create_random(road) road.vehicles.append(vehicle) env.road = road env.vehicle = vehicle agent = MCTSAgent(env, iterations=100, temperature=20 * 5) # compare step by subtree and step by prior sim = Simulation(env, agent) t = 0 while not sim.done: sim.step() t += 1 if t == 10: print('Added obstacle') env.road.vehicles.append( Obstacle( road, [env.vehicle.position[0] + 50., env.vehicle.position[1]])) sim.close()
def _create_vehicles(self): """ Create some new random vehicles of a given type, and add them on the road. """ self.vehicle = MDPVehicle.create_random( self.road, 25, spacing=self.config["initial_spacing"]) self.road.vehicles.append(self.vehicle) # create conservative cars on the road vehicles_type1 = utils.class_from_path( self.config["other_vehicles_type"]) vehicles_type2 = utils.class_from_path( self.config["aggressive_vehicle_type"]) vehicles_type3 = utils.class_from_path( self.config["aggressive_vehicle_type2"]) # add some aggressive vehicles in the road count_aggressive = 0 for _ in range(self.config["vehicles_count"] + self.config["num_aggressive"]): a = np.random.randint(low=1, high=5) if a == 1: count_aggressive += 1 self.road.vehicles.append( vehicles_type2.create_random(self.road)) if count_aggressive < 3: self.road.vehicles.append( vehicles_type3.create_random(self.road)) else: self.road.vehicles.append( vehicles_type1.create_random(self.road)) print("number of aggressive vehicles ", count_aggressive)
def _create_vehicles(self): """ Create some new random vehicles of a given type, and add them on the road. """ # target AV self.target_vehicle = MDPVehicle.create_random( self.road, 25, spacing=self.config["initial_spacing"]) self.target_vehicle.color = (200, 0, 150) # purple self.road.vehicles.append(self.target_vehicle) # attacker: training agent self.vehicle = MDPVehicle.create_random( self.road, 25, spacing=self.config["initial_spacing"]) self.road.vehicles.append(self.vehicle) vehicles_type = utils.class_from_path( self.config["other_vehicles_type"]) for _ in range(self.config["vehicles_count"]): self.road.vehicles.append(vehicles_type.create_random(self.road))
def _create_vehicles(self): """ Create some new random vehicles of a given type, and add them on the road. """ self.vehicle = MDPVehicle.create_random(self.road, 25, spacing=self.config["initial_spacing"]) self.road.vehicles.append(self.vehicle) vehicles_type = utils.class_from_path(self.config["other_vehicles_type"]) for _ in range(self.config["vehicles_count"]): self.road.vehicles.append(vehicles_type.create_random(self.road))
def _create_road(self): road = Road.create_random_road( lanes_count=self.config["lanes_count"], vehicles_count=self.config["vehicles_count"], vehicles_type=utils.class_from_path( self.config["other_vehicles_type"]), np_random=self.np_random) vehicle = MDPVehicle.create_random( road, 25, spacing=self.config["initial_spacing"], prepend=True, np_random=self.np_random) road.vehicles.append(vehicle) return road, vehicle