示例#1
0
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)
示例#3
0
    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))
示例#4
0
    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))
示例#5
0
 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