コード例 #1
0
def _gen_test(fm_trans_json, fm_line_json, fm_edges_fix_json, input_vertex,
              turn_count):

    with open(fm_trans_json, 'r', encoding='UTF-8') as json_file:
        trans_data = json.load(json_file)

    with open(fm_line_json, 'r', encoding='UTF-8') as line_file:
        line_data = json.load(line_file)

    # with open('trans_classification_experiment_data.json', 'r', encoding='UTF-8') as data_file:
    # with open('trans_classification_list.json', 'r', encoding='UTF-8') as data_file:
    #     input_data = json.load(data_file)

    data_set = []

    for i in line_data:
        for j in line_data[i]:
            data_set.append(j + i)

    alpha_for_alpha_pruning = 1.2
    alpha_for_straight_forward = 1.2
    alpha_pruning_result = []
    alpha_pruning_result_avg = 0
    straight_forward_result = []
    straight_forward_result_avg = 0
    #
    # wb = openpyxl.load_workbook('result for cal.xlsx')
    # sheet = wb['Sheet1']

    # for k in range(1, 11):
    # start_time = time.time()
    reresult = []
    path_start_end_pairs = {}
    compare_paths_transdata = []

    a = 0
    # for j in range(0, len(input_data)):
    #     print(a)
    # reresult.extend(dijkstra_distributer.cal_dists(input_data[str(j)]['from'], input_data[str(j)]['to']))
    # reresult.extend(alpha_pruning.get_result(metro, input_data[str(j)]['from'], input_data[str(j)]['to'], alpha_for_alpha_pruning))
    # reresult.append(alpha_pruning2.get_result(metro, input_data[str(j)]['from'], input_data[str(j)]['to'], alpha_for_alpha_pruning)[0])
    # reresult.append(alpha_pruning2.get_result(metro, input_data[str(j)]['from'], input_data[str(j)]['to'], alpha_for_alpha_pruning)[0])
    # reresult.append(alpha_pruning2.get_result(metro, input_data[str(j)]['from'], input_data[str(j)]['to']))
    # a = a + 1
    # sett = []
    # for i in range(50000):
    #     ran_start, ran_end = rand_start_end(data_set)
    #     if not [ran_start, ran_end] in sett and not [ran_end, ran_start] in sett:
    #         sett.append([ran_start, ran_end])
    #         # print([ran_start, ran_end])
    #         print(len(sett))
    #     if len(sett) >= 10000:
    #         break

    # print(sett)
    # print(len(sett))

    # file_len = len(sett)
    file_len = 1999

    # make_dataset.make_data(len(sett), sett, input_vertex)

    metro = Metro(fm_trans_json, fm_line_json, fm_edges_fix_json)

    # fm_line_small_json = 'line_' + ','.join(input_vertex) + '_smalldata.json'
    #
    # with open(fm_line_small_json, 'r', encoding='UTF-8') as line_file:
    #     line_smalldata = json.load(line_file)

    ################ shortest_path구하는 곳
    # wb = openpyxl.load_workbook('cls.xlsx')
    # sheet = wb['Sheet1']
    # for i in range(file_len):
    #     # cal_shortest_path.get_result(metro, line_smalldata[str(i)]['from'], line_smalldata[str(i)]['to'], trans_data, i, sheet)
    #     cal_shortest_path.get_result(metro, sheet.cell(i + 2, 2).value, sheet.cell(i + 2, 3).value, trans_data, i, sheet)
    #     print(i)
    # wb.save('cls.xlsx')
    # /////////////////////////////////////
    # ############### cal_scores
    # wb = openpyxl.load_workbook('cls.xlsx')
    # sheet = wb['Sheet1']
    # for i in range(file_len):
    #     cal_scores.get_result(metro, sheet.cell(i + 2, 2).value, sheet.cell(i + 2, 3).value, sheet.cell(i+2, 8).value, trans_data, i, sheet)
    #     print(i)
    # wb.save('cls.xlsx')
    # /////////////////////////////////////
    # ############### cal_weights
    wb = openpyxl.load_workbook('cls.xlsx')
    sheet = wb['Sheet1']
    for i in range(file_len):
        cal_paths_weights.get_result(metro,
                                     sheet.cell(i + 2, 2).value,
                                     sheet.cell(i + 2, 3).value,
                                     sheet.cell(i + 2, 15).value, trans_data,
                                     i, sheet)
        print(i)
    wb.save('cls.xlsx')
    # /////////////////////////////////////
    cal_time = 0
    cal_time2 = 0
    # 9734

    # wb = openpyxl.load_workbook('cls.xlsx')
    # sheet = wb['Sheet1']
    #
    # for i in range(file_len):
    #     # reresult.append(cal_all_paths.get_result(metro, line_smalldata[str(i)]['from'], line_smalldata[str(i)]['to'], alpha_for_straight_forward))
    #     # if sheet.cell(i+2, 5).value == 6 or sheet.cell(i+2, 5).value == 7 or sheet.cell(i+2, 5).value == 8 or sheet.cell(i+2, 5).value == 9 or sheet.cell(i+2, 5).value == 10:
    #     #     pass
    #     # else:
    #     if sheet.cell(i+2, 5).value == 9:
    #         # if sheet.cell(i+2, 9).value == 0:
    #         start_time = time.time()
    #         reresult.append(cal_all_paths.get_result(metro, sheet.cell(i + 2, 2).value, sheet.cell(i + 2, 3).value,
    #                                                  alpha_for_straight_forward))
    #         end_time = time.time()
    #         cal_time = end_time - start_time
    #         print(i, "th _all path finish", ":", sheet.cell(i + 2, 2).value, sheet.cell(i + 2, 3).value, "->",
    #               cal_time)
    #         sheet.cell(row=i + 2, column=9, value=cal_time)
    #         wb.save('cls.xlsx')
    # else:
    #     start_time = time.time()
    #     reresult.append(cal_all_paths.get_result(metro, sheet.cell(i+2, 2).value, sheet.cell(i+2, 3).value, alpha_for_straight_forward))
    #     end_time = time.time()
    #     cal_time = end_time - start_time
    #     print(i, "th _all path finish", ":", sheet.cell(i+2, 2).value, sheet.cell(i+2, 3).value, "->", cal_time)
    #     sheet.cell(row=i + 2, column=9, value=cal_time)
    #     wb.save('cls.xlsx')
    # if i % 2000 == 0:
    # print("하는중 -> ", i , len(sett))

    # ################ alpha
    # wb = openpyxl.load_workbook('cls.xlsx')
    # sheet = wb['Sheet1']
    # # for kkkk in range(100):
    # for j in range(file_len):
    #     # if sheet.cell(j+2, 5).value == 6 or sheet.cell(j+2, 5).value == 7 or sheet.cell(j+2, 5).value == 8 or sheet.cell(j+2, 5).value == 9 or sheet.cell(j+2, 5).value == 10:
    #     #     pass
    #     # else:
    #     if sheet.cell(j + 2, 5).value == 9:
    #     # if sheet.cell(j+2, 5).value == 0 or sheet.cell(j+2, 5).value == 1 or sheet.cell(j+2, 5).value == 2 or sheet.cell(j+2, 5).value == 3 or sheet.cell(j + 2, 5).value == 4 or sheet.cell(j+2, 5).value == 5 or sheet.cell(j+2, 5).value == 6 or sheet.cell(j+2, 5).value == 7 or sheet.cell(j+2, 5).value == 8:
    #         # if sheet.cell(j+2, 10).value == 0:
    #         start_time2 = time.time()
    #         reresult.append(
    #             cal_alpha_pruning.get_result(metro, sheet.cell(j + 2, 2).value, sheet.cell(j + 2, 3).value,
    #                                          alpha_for_alpha_pruning))
    #         end_time2 = time.time()
    #         cal_time2 = end_time2 - start_time2
    #         print(j, "th _alpha path finish", ":", sheet.cell(j + 2, 2).value, sheet.cell(j + 2, 3).value, "->",
    #               cal_time2)
    #         sheet.cell(row=j + 2, column=10, value=cal_time2)
    #         sheet.cell(row=j + 2, column=15, value=str(reresult[-1][0]))
    #
    # wb.save('cls.xlsx')
    # print("fin")
    # alpha /////////////////////////
    # reresult.append(cal_alpha_pruning.get_result(metro, line_smalldata[str(j)]['from'], line_smalldata[str(j)]['to'], alpha_for_alpha_pruning))
    #     else:
    #         start_time2 = time.time()
    #         reresult.append(cal_alpha_pruning.get_result(metro, sheet.cell(j + 2, 2).value, sheet.cell(j + 2, 3).value, alpha_for_alpha_pruning))
    #         end_time2 = time.time()
    #         cal_time2 = end_time2 - start_time2
    #         print(j, "th _alpha path finish", ":", sheet.cell(j+2, 2).value, sheet.cell(j+2, 3).value, "->", cal_time2)
    #         sheet.cell(row=j + 2, column=10, value=cal_time2)
    #         wb.save('cls.xlsx')
    #         # if i % 2000 == 0:
    #         # print("하는중 -> ", i , len(sett))

    # print(cal_time / file_len)
    # print(cal_time2 / file_len)
    # print(len(trans_data['trans']))
    # wb.save('cls.xlsx')

    # wb = openpyxl.load_workbook('smalldata_result.xlsx')
    # sheet = wb['Sheet4']
    # sheet.cell(row=turn_count, column=3, value=len(trans_data['trans']))
    # sheet.cell(row=turn_count, column=4, value=len(sett))
    # sheet.cell(row=turn_count, column=5, value=cal_time/file_len)
    # sheet.cell(row=turn_count, column=6, value=cal_time2/file_len)
    # wb.save('smalldata_result.xlsx')


# for i in reresult[0]:
#     print(i)
#
# print(len(reresult[0]))

# set_of_reresult = []
# for d in range(len(reresult)):
#     set_of_reresult.append(reresult[0])

#
# index = 1
# for v in reresult:
#     compare_paths_transdata = []
#     for v2 in trans_data["trans"]:
#         if v2 in v[0]:
#             compare_paths_transdata.append(v2)
#     print(compare_paths_transdata)
#     len_compare_paths_transdata = len(compare_paths_transdata)
#
#     path_start_end_pairs[len_compare_paths_transdata] = (v[0], v[-1])ㅔ
#     print(len_compare_paths_transdata, ",", v[0], ",", v[-1])
#     print(v[0][0], v[0][-1])
#     print(v)
#     # 지나가는 경유역 개수 (동일역 포함
#     sheet.cell(row=index, column=1, value=len_compare_paths_transdata)
#     sheet.cell(row=index, column=2, value=v[0][0])
#     sheet.cell(row=index, column=3, value=v[0][-1])
#     sheet.cell(row=index, column=4, value=v[-1])
#     sheet.cell(row=index, column=5, value=str(v[0]))
#
#
#     # sheet.cell(row=index, column=4, value=v)
#     # sheet.cell(row=index, column=4).value = v
#     # for r in range(0, len(v)):
#     #     sheet.cell(row=index, column=4).value=v[r]
#     index = index + 1
#
#     # alpha_pruning_result.append(alpha_pruning.get_result(metro, input_data[str(j)]['from'], input_data[str(j)]['to'], alpha_for_alpha_pruning))
#     # print(alpha_pruning.get_result(metro, input_data[str(j)]['from'], input_data[str(j)]['to'], alpha_for_alpha_pruning))
#     # alpha_pruning_result_avg = alpha_pruning_result_avg + alpha_pruning_result[j][2]
#
# wb.save('result for cal.xlsx')

# end_time = time.time()
# print(alpha_pruning_result_avg / len(input_data))
# print("AP_WorkingTime: {} sec".format(end_time-start_time))
#
# sheet.cell(row=k, column=1, value="알파 프루닝 결과 평균치")
# sheet.cell(row=k, column=2, value=alpha_pruning_result_avg / len(input_data))
# sheet.cell(row=k, column=3, value="알파 프루닝 결과 시간")
# sheet.cell(row=k, column=4, value=format(end_time-start_time))
#
# wb.save('result.xlsx')

# start_time = time.time()
# for j in range(len(input_data)):
#     straight_forward_result.append(straight_forward.get_result(metro, input_data[str(j)]['from'], input_data[str(j)]['to'], alpha_for_straight_forward))
#     straight_forward_result_avg = straight_forward_result_avg + straight_forward_result[j][2]
#
# end_time = time.time()
# print(straight_forward_result_avg / len(input_data))
# print("SF_WorkingTime: {} sec".format(end_time - start_time))

# # 1.2 내 포함되는 데이터셋 만드는 코드
# time_out = 3
# deny = []
# for i in range(0, 10000):
#     inlist = []
#     ran_start, ran_end = rand_start_end(data_set)
#
#     done_counting = threading.Event()
#     # t = threading.Thread(target=alpha_pruning.get_result, args=(metro, ran_start, ran_end, alpha))
#     # t = threading.Thread(target=straight_forward.get_result, args=(metro, ran_start, ran_end, alpha_for_alpha_pruning))
#     t = threading.Thread(target=straight_forward_for_datasetting.get_result, args=(metro, ran_start, ran_end, alpha_for_alpha_pruning))
#     t.setDaemon(True)
#
#     t.start()
#
#     t.join(time_out)
#     done_counting.wait(time_out)
#     # if runtime out (difficult problem)
#     if t.is_alive():
#         # print(ran_start, ran_end)
#         pass
#     # if runtime out (easy problem)
#     else:
#         inlist = [ran_start, ran_end]
#         if not list in deny:
#             deny.append([ran_start, ran_end])
#             print(ran_start, ran_end)
#         else:
#             i = i - 1
#     # pass

# wb.save('result2.xlsx')
コード例 #2
0
 def add_metro(self, metro_info):
     self.metros[metro_info['code']] = Metro(metro_info)
コード例 #3
0
ファイル: gen_test_case.py プロジェクト: dossa328/MaxPre3

def rand_start_end(_data_set):
    while True:
        _start = random.choice(_data_set)
        _end = random.choice(_data_set)

        if _start is not _end:
            break

    return _start, _end


alpha_for_alpha_pruning = 1.2
alpha_for_straight_forward = 1.0
metro = Metro()
alpha_pruning_result = []
alpha_pruning_result_avg = 0
straight_forward_result = []
straight_forward_result_avg = 0

wb = openpyxl.load_workbook('result for cal.xlsx')
sheet = wb['Sheet1']

# for k in range(1, 11):
# start_time = time.time()
reresult = []
path_start_end_pairs = {}
compare_paths_transdata = []

コード例 #4
0
 def create_metros(self, metro_list):
     for m in metro_list:
         self.metros[m['code']] = Metro(m)