Ejemplo n.º 1
0
    def reset(self):
        if self._done:
            self._episode += 1
            self._done = False
            # print(f'Episode: {self._episode} done!')

        if self._is_running:
            self.sim.finishing_touch(self._start_time)
            if self._episode % self._save_res_every_ep == 0:
                self.sim.save_result(RESULTS,
                                     self._worker_id,
                                     unique_name=False)
                if self._config['plot_queue_len']:
                    self.sim.plot_pass_queue_len(mode='taxi',
                                                 suffix=self._worker_id)
                    self.sim.plot_pass_wait_time(mode='taxi',
                                                 suffix=self._worker_id)
            self._is_running = False

        self.curr_time = 0
        self._step = 0

        self.graph = Graph()
        self.graph.import_graph(graph_file)
        self.sim = Simulator(self.graph)
        self.sim.import_arrival_rate(unit=(1, 'sec'))
        self.sim.import_vehicle_attribute(file_name=vehicle_file)
        self.sim.set_running_time(start_time=self._config['start_time'],
                                  time_horizon=self._config['time_horizon'],
                                  unit='hour')
        self.sim.routing.set_routing_method('simplex')
        self.sim.initialize(seed=0)
        self._total_vehicle = self.sim.vehicle_attri['taxi']['total']

        self._travel_time = np.zeros((self._num_nodes, self._num_nodes))
        for i, node in enumerate(self.graph.graph_top):
            for j, road in enumerate(self.graph.graph_top):
                if i != j:
                    self._travel_time[
                        i,
                        j] = self.graph.graph_top[node]['node'].road[road].dist
        self._travel_time /= np.linalg.norm(self._travel_time, ord=np.inf)
        self._pre_action = np.zeros((self._num_neighbors, self._num_nodes))

        with open(vehicle_file, 'r') as v_file:
            vehicle_dist = json.load(v_file)
        vehicle_dist = vehicle_dist['taxi']['distrib']
        vehicle_dist = np.array([vehicle_dist[x] for x in vehicle_dist])
        return np.zeros((self._num_nodes, )), vehicle_dist
Ejemplo n.º 2
0
    def __init__(self, config):
        self._config = config
        self.curr_time = 0
        self.graph = Graph()
        self.graph.import_graph(graph_file)
        self.sim = Simulator(self.graph)

        self.max_vehicle = self._config['max_vehicle']
        self.reb_interval = self._config['reb_interval']
        self.max_travel_t = self._config['max_travel_time']
        self.max_lookback_steps = int(
            np.ceil(self.max_travel_t / self.reb_interval))
        self.max_passenger = self._config['max_passenger']
        self._num_nodes = len(self._config['nodes_list'])
        self._nodes = tuple(self._config['nodes_list'])
        self._num_neighbors = self._config['near_neighbor']
        self._neighbor_map = self._get_neighbors()
        self._dispatch_rate = self._config['dispatch_rate']

        self.action_space = MultiDiscrete([(self._num_neighbors + 1) * 5] *
                                          self._num_nodes)
        self.observation_space = Tuple((Box(0,
                                            self.max_passenger,
                                            shape=(self._num_nodes, ),
                                            dtype=np.int64),
                                        Box(0,
                                            self.max_vehicle,
                                            shape=(self._num_nodes, ),
                                            dtype=np.int64)))
        self._is_running = False
        self._done = False
        self._start_time = time.time()
        self._alpha = self._config['alpha']
        self._beta = self._config['beta']
        self._step = 0
        self._total_vehicle = None
        self._travel_time = None
        self._pre_action = None
        self._episode = 0
        self._worker_id = str(hash(time.time()))
        self._save_res_every_ep = int(self._config['save_res_every_ep'])
        self._vehicle_speed = self._config['veh_speed']
Ejemplo n.º 3
0
    def __init__(self, config):
        self._config = config
        self.curr_time = 0
        self.graph = Graph()
        self.graph.import_graph(graph_file)
        self.sim = Simulator(self.graph)

        self.max_vehicle = self._config['max_vehicle']
        self.reb_interval = self._config['reb_interval']
        self.max_travel_t = self._config['max_travel_time']
        self.max_lookback_steps = int(
            np.ceil(self.max_travel_t / self.reb_interval))
        self.max_passenger = self._config['max_passenger']
        self.num_nodes = len(self._config['nodes_list'])
        self.near_neighbor = self._config['near_neighbor']

        self.action_space = Box(low=0,
                                high=1,
                                shape=((self.near_neighbor + 1) *
                                       self.num_nodes, ))
        self.observation_space = Tuple((Box(0,
                                            self.max_passenger,
                                            shape=(self.num_nodes, ),
                                            dtype=np.int64),
                                        Box(0,
                                            self.max_vehicle,
                                            shape=(self.num_nodes, ),
                                            dtype=np.int64)))

        self._is_running = False
        self._done = False
        self._start_time = time.time()
        self._alpha = 0
        self._step = 0
        self._total_vehicle = None
        self._travel_time = None
        self._pre_action = None
        self._episode = 0