Exemple #1
0
    def __init__(self, src, dst, city, dimension, adjacency_list, heuristic_matrices):
        self.__src = src
        self.__dst = dst
        self.__city = city

        self.__open_list = []
        self.__closed_list = []
        self.__dimension = self.__dimension_index(dimension)

        self.__org_node = LoadData.load_org_node(city)
        self.__org_path = LoadData.load_org_path(city, 6)
        self.__link_table = adjacency_list
        self.__heuristic = heuristic_matrices
        # self.__heuristic = self.__calculate_heuristic()

        self.__dimension_cost, self.__heuristic_cost, self.__total_cost = ({} for _ in range(3))

        self.__dimension_cost = {node: float("inf") for node in self.__org_node.keys()}
        self.__dimension_cost[self.__src] = 0
        self.__heuristic_cost[self.__src] = self.__heuristic.loc[self.__src, self.__dst]
        self.__total_cost[self.__src] = \
            self.__heuristic_cost[self.__src] + self.__heuristic_cost[self.__src]

        self.__previous_node = {self.__src: None}

        heapq.heappush(self.__open_list, (self.__total_cost[self.__src], self.__src))
Exemple #2
0
def calculate_heuristic(city):
    """
    計算 heuristic matrices
    :param city:
    :return:
    """
    org_node = LoadData.load_org_node(city)
    data = np.array(list(org_node.values()))
    result = euclidean_distances(data, data)
    header = [x for x in list(org_node.keys())]
    pd_data = pd.DataFrame(result, columns=header)
    # print(pd_data.shape)
    return pd_data
Exemple #3
0
    def __init__(self, src, dst, dtype, location, dimension):
        self.src = int(src)
        self.dst = int(dst)

        self.org_node = LoadData.load_org_node(location)
        self.org_path = LoadData.load_org_path(location, dimension)
        self.link_table = LoadData.load_linking_table(location)
        # print('org_node', self.org_node)
        # print('org_path', self.org_path)
        # print('self.link_table', self.link_table)

        self.heap = Heap(dtype)
        self.quadrant = self.__get_quadrant(self.src, self.dst)
Exemple #4
0
if __name__ == '__main__':
    # 基本設定
    """
    # 基本設定
    # Dimension: 目前執行的實驗有多少維度
    # city: 城市名稱(Oldenburg, California, North America)

    1. 要改地點(city)和維度名稱(dimension)
    2. 資料數量的分配情況

    """

    # 載入路網節點
    city = 'Oldenburg'
    node = list(LoadData.load_org_node(city).keys())
    heuristic_matrices = calculate_heuristic(city)
    print('終點數量', len(node))

    # 要重新收集的最段路徑維度資料(要修改)
    # file_name = ['NotFoundNode(Distance)', 'NotFoundNode(Time)',
    #              'NotFoundNode(Dimension3)', 'NotFoundNode(Dimension4)',
    #              'NotFoundNode(Dimension5)', 'NotFoundNode(Dimension6)']
    """
    # 基本設定
    dimension = [Distance, TIme, Dimension3, Dimension4, Dimension5, Dimension6]
    dimension 需要改
    """
    dimension = "Time"
    file_name = 'data/Oldenburg/NotFoundNode/NotFoundNode(' + dimension + ').txt'