class BorderNode(Node): def __init__(self, name, x, y): super().__init__(name, "border", x, y) self.connection = None self.q = CarQueue(-1) # -1 for no maximum q-size def set_connection(self, neighbour): self.connection = neighbour def spawn_car(self, destination): self.q.add_car(Car(destination)) def update_cars(self, time_step): car = self.q.get_car() if car is not None: directions = car.get_directions(time_step, self.x, self.y) if not self.connection.transfer_car(self, car): if not self.q.add_car_back(car): # car is added back to queue print("CAR COULD NOT BE ADDED BACK TO QUEUE AT BORDER") def number_of_cars(self): return self.q.number_of_cars() @staticmethod def car_leaves_system(car): Car.removed_cars += 1 return True def __str__(self): return "Border node: " + super().__str__() + " has {0} cars".format( self.number_of_cars())
def __init__(self, name, max_q_size): super().__init__(name, "intersection") self.neighbours = [None, None, None, None] # north, east, south, west self.qs = [ CarQueue(max_q_size), CarQueue(max_q_size), CarQueue(max_q_size), CarQueue(max_q_size) ]
def reset(self): max_q_size = 50 self.qs = [ CarQueue(max_q_size), CarQueue(max_q_size), CarQueue(max_q_size), CarQueue(max_q_size) ] self.state = np.array([0, 0, 0, 0]) self.model_reward = 0 return self.state
def reset(self): max_q_size = 50 self.qs = [ CarQueue(max_q_size), CarQueue(max_q_size), CarQueue(max_q_size), CarQueue(max_q_size) ] #print(self.qs) #self.state = [0,0,0,0,0,0,0,0] self.state = np.array([0, 0, 0, 0, 0, 0, 0, 0]) self.model_reward = 0 #eturn np.array(self.state) return self.state
def __init__(self, name, max_q_size, x, y): super().__init__(name, "intersection", x, y) self.neighbours = [None, None, None, None] # north, east, south, west self.qs = [ CarQueue(max_q_size), CarQueue(max_q_size), CarQueue(max_q_size), CarQueue(max_q_size) ] self.traffic_lights = [ TrafficLight(), TrafficLight(), TrafficLight(), TrafficLight() ] self.current_state = None self.reward = 0
def __init__(self, name, x, y): super().__init__(name, "border", x, y) self.connection = None self.q = CarQueue(-1) # -1 for no maximum q-size
def reset(self): self.q = CarQueue(-1)
def reset(self): self.q = CarQueue(100000)