def set_route(self, sp, ep): from TimeLord import TimeLord t = TimeLord() """ If sp has room for a new car, set given nodes as start and end points and teleport to start. """ assert sp is not None and ep is not None, "route start and/or end point not set" if sp.has_room(): self._start = sp self._end = ep # print(" Agent %s: teleporting to start point %s (from %s)" % (self._name, sp, self._position)) if self._position: self._position.remove_car(self) self._position = self._start self._start.add_car(self, False) self._determine_path() self._travel_start_time = t.get_timestamp() self._waiting_times[self._travel_start_time] = [] return True return False
def _move_car_to_street(self): """ Moves the next car from the main stack to the street stack it wants to go to next. """ from Grid import MovementEvent, GRID_EVENT as GE t = TimeLord() time= t.get_timestamp() if len(self._car_stack) > 0: car = self._car_stack[0] next_dir, next_stop = car.get_next_dir(), car.get_next_stop() #print("car %s" % car) #print("next stop: %s (%i), route: %s" % (next_stop, next_dir, car._path)) if next_stop is None: #print("Route done.") return False street_stack = self._streets[next_dir] # print("room for car on street? %s" % (len(street_stack) < self._max_cars_on_street)) if len(street_stack) < self._max_cars_on_street: street_stack.append(car) self._car_stack.pop(0) #print('moving') car.handle_movement_event(MovementEvent(GE.STREET_ARRIVED, time, self)) return True else: car.handle_movement_event(MovementEvent(GE.STREET_REJECTED, time, self)) self._add_center_jam(time) return False else: return True
def _move_car_to_street(self): """ Moves the next car from the main stack to the street stack it wants to go to next. """ from Grid import MovementEvent, GRID_EVENT as GE t = TimeLord() time = t.get_timestamp() if len(self._car_stack) > 0: car = self._car_stack[0] next_dir, next_stop = car.get_next_dir(), car.get_next_stop() #print("car %s" % car) #print("next stop: %s (%i), route: %s" % (next_stop, next_dir, car._path)) if next_stop is None: #print("Route done.") return False street_stack = self._streets[next_dir] # print("room for car on street? %s" % (len(street_stack) < self._max_cars_on_street)) if len(street_stack) < self._max_cars_on_street: street_stack.append(car) self._car_stack.pop(0) #print('moving') car.handle_movement_event( MovementEvent(GE.STREET_ARRIVED, time, self)) return True else: car.handle_movement_event( MovementEvent(GE.STREET_REJECTED, time, self)) self._add_center_jam(time) return False else: return True
def set_route(self, sp, ep): from TimeLord import TimeLord t = TimeLord() """ If sp has room for a new car, set given nodes as start and end points and teleport to start. """ assert sp is not None and ep is not None, "route start and/or end point not set" if sp.has_room(): self._start = sp self._end = ep # print(" Agent %s: teleporting to start point %s (from %s)" % (self._name, sp, self._position)) if self._position: self._position.remove_car(self) self._position = self._start self._start.add_car(self, False) self._determine_path() self._travel_start_time = t.get_timestamp() self._waiting_times[self._travel_start_time] = [] return True return False