def calculate(times): population = Species_origin(Constant.population_size) next_species_result = population max_result_list = [] max_powerselection_list = [] for i in range(times): translation_result = translation( next_species_result) # translation result 也是二维数组 output_max_result = test_output_max(translation_result) max_result = output_max_result[0] maxresult_number = output_max_result[1] max_result_list.append(max_result) max_temporary = translation_result[maxresult_number] max_powerselection_list.append(max_temporary) print("time:", i, "maxresult:", max_result) newpopulation_result = newpopulation(next_species_result) fitness_result = fitness(newpopulation_result) selection_result = selection(fitness_result) next_species_result = nextspecies(newpopulation_result, selection_result) print("max_result_list:", max_result_list) perfect = max(max_result_list) print("the most max:", perfect) j = 0 while max_result_list[j] != perfect: j = j + 1 print("the most max temporary selection:", max_powerselection_list[j])
def calculate(times, mover, number, mode): ''' if mover == 0: # 燃气轮机 population = Species_origin(Constant.population_size) else: # 内燃机 population = SpeciesOriginICE(Constant.population_size).population ''' population = [[21, 5, 15, 35, 63, 0, 0, 0], [16, 9, 16, 69, 40, 0, 0, 0], [30, 18, 17, 77, 81, 0, 0, 0], [29, 26, 18, 32, 87, 0, 0, 0], [15, 11, 13, 80, 25, 0, 0, 0], [16, 2, 15, 80, 44, 0, 0, 0], [28, 22, 19, 56, 56, 0, 0, 0], [16, 5, 16, 60, 31, 0, 0, 0], [22, 4, 18, 79, 55, 0, 0, 0], [29, 15, 25, 45, 78, 0, 0, 0]] next_species_result = population print("the original", next_species_result) max_result_list = [] max_powerselection_list = [] for i in range(times): translation_result = translation( next_species_result) # translation result 也是二维数组 if mover == 0: output_max_result = output_max(translation_result, mode) max_result = output_max_result[0] maxresult_number = output_max_result[1] else: output_max_result = OutputMaxICE(translation_result, number, mode) max_result = output_max_result.max_profit_result maxresult_number = output_max_result.array_number max_result_list.append(max_result) max_temporary = translation_result[maxresult_number] max_powerselection_list.append(max_temporary) print("time:", i, "maxresult:", max_result) print("") newpopulation_result = newpopulation(next_species_result, mover) if mover == 0: fitness_result = fitness(newpopulation_result, mode) else: fitness_result = FitnessICE(newpopulation_result, number, mode).fitness1 selection_result = selection(fitness_result) next_species_result = nextspecies(newpopulation_result, selection_result) print("max_result_list:", max_result_list) perfect = max(max_result_list) print("the most max:", perfect) perfect_number = 0 while max_result_list[perfect_number] != perfect: perfect_number = perfect_number + 1 print("the most max temporary selection:", max_powerselection_list[perfect_number]) economy_index = EconomyIndex(max_powerselection_list[perfect_number], mover, number, mode) print("IRR:", economy_index.IRR) print("PaybackPeriod:", economy_index.PaybackPeriod) print("ReturnOnCapital:", economy_index.ReturnOnCapital) # 将数组 min_result_list (遗传算法每次最优结果)的值写入excel中 return 0
def calculate(times, mover, number, season, mode): if mover == 0: # 燃气轮机 population = Species_origin(Constant.population_size) else: # 内燃机 population = SpeciesOriginICE(Constant.population_size).population next_species_result = population print("the original", next_species_result) max_result_list = [] max_powerselection_list = [] for i in range(times): translation_result = translation( next_species_result) # translation result 也是二维数组 if mover == 0: output_max_result = output_max(translation_result, mode) max_result = output_max_result[0] maxresult_number = output_max_result[1] else: output_max_result = OutputMaxICE(translation_result, number, season, mode) max_result = output_max_result.max_profit_result maxresult_number = output_max_result.array_number max_result_list.append(max_result) max_temporary = translation_result[maxresult_number] max_powerselection_list.append(max_temporary) print("time:", i, "maxresult:", max_result) print("") newpopulation_result = newpopulation(next_species_result, mover) if mover == 0: fitness_result = fitness(newpopulation_result, mode) else: fitness_result = FitnessICE(newpopulation_result, number, season, mode).fitness1 selection_result = selection(fitness_result) next_species_result = nextspecies(newpopulation_result, selection_result) print("max_result_list:", max_result_list) perfect = max(max_result_list) print("the most max:", perfect) perfect_number = 0 while max_result_list[perfect_number] != perfect: perfect_number = perfect_number + 1 print("the most max temporary selection:", max_powerselection_list[perfect_number]) economy_index = EconomyIndex(max_powerselection_list[perfect_number], mover, number, season, mode) print("IRR:", economy_index.IRR) print("PaybackPeriod:", economy_index.PaybackPeriod) print("ReturnOnCapital:", economy_index.ReturnOnCapital) # 将数组 min_result_list (遗传算法每次最优结果)的值写入excel中 return 0
def __init__(self, times, mover, number, season, mode, way_pareto): # way_pareto=0:正pareto,其他:反pareto if mover == 1: # population = SpeciesOriginICE(Constant.population_size).population population = [[21, 5, 15, 35, 63, 92, 37, 65], [16, 9, 16, 69, 40, 34, 20, 91], [30, 18, 17, 77, 81, 52, 98, 99], [29, 26, 18, 32, 87, 77, 86, 32], [15, 11, 13, 80, 25, 77, 62, 97], [16, 2, 15, 80, 44, 18, 76, 29], [28, 22, 19, 56, 56, 37, 36, 32], [16, 5, 16, 60, 31, 71, 57, 55], [22, 4, 18, 79, 55, 81, 84, 28], [29, 15, 25, 45, 78, 94, 96, 71]] next_species_result = population print("the original", next_species_result) self.pareto_best = [] if way_pareto == 0: pareto_sorting = ParetoSorting(next_species_result, number, season, mode) else: pareto_sorting = ReverseParetoSorting(next_species_result, number, season, mode) print("original_best:", pareto_sorting.pareto_sorting_result) for i in range(times): solution_best_of_this_generation = [] new_population = newpopulation(next_species_result, mover) # 遗传变异 print("new_population:", new_population) selecting_process = NextGeneration(new_population, number, season, mode, way_pareto) selecting_queue = selecting_process.selecting_queue print("selecting_queue:", selecting_queue) next_species_result = [] for m in range(Constant.population_size): next_species_result.append(new_population[selecting_queue[m]]) print("next_species_result:", next_species_result) for n in range(selecting_process.length_of_best): solution_best_of_this_generation.append(next_species_result[n]) self.pareto_best.append(solution_best_of_this_generation) print("time:", i, self.pareto_best[i]) # 列出每代最优解之集合的最优解,即看最优解的进化过程 set_of_best = [] self.evaluation_of_best = [] self.average_evaluation_of_cost = [] self.average_evaluation_of_emission = [] self.average_evaluation_of_pei = [] self.best_evaluation_of_cost = [] self.best_evaluation_of_emission = [] self.best_evaluation_of_pei = [] self.list_evaluation_of_cost = [] self.list_evaluation_of_emission = [] self.list_evaluation_of_pei = [] for i in range(times): for j in range(len(self.pareto_best[i])): set_of_best.append(self.pareto_best[i][j]) if way_pareto == 0: pareto_again = ParetoSorting(set_of_best, number, season, mode) else: pareto_again = ReverseParetoSorting(set_of_best, number, season, mode) self.evaluation_of_best.append(pareto_again.pareto_sorting_best) self.list_evaluation_of_cost.append(pareto_again.pareto_sorting_best_cost_result) self.list_evaluation_of_emission.append(pareto_again.pareto_sorting_best_emission_result) self.list_evaluation_of_pei.append(pareto_again.pareto_sorting_best_pei_result) length = len(self.list_evaluation_of_cost[i]) self.average_evaluation_of_cost.append(sum(self.list_evaluation_of_cost[i]) / length) self.average_evaluation_of_emission.append(sum(self.list_evaluation_of_emission[i]) / length) self.average_evaluation_of_pei.append(sum(self.list_evaluation_of_pei[i]) / length) self.best_evaluation_of_cost.append(min(self.list_evaluation_of_cost[i])) self.best_evaluation_of_emission.append(min(self.list_evaluation_of_emission[i])) self.best_evaluation_of_pei.append(max(self.list_evaluation_of_pei[i])) print("pareto again:", i)
def __init__(self, times, mover, number, mode, way_pareto, storage_or_not): # way_pareto=0:正pareto,其他:反pareto if mover == 1: # population = SpeciesOriginICE(Constant.population_size, storage_or_not).population if storage_or_not == 1: # 有储能 population = [[21, 17, 16, 35, 63, 20, 22, 24], [30, 27, 37, 69, 40, 34, 44, 31], [40, 38, 30, 76, 81, 50, 54, 60], [50, 45, 43, 32, 87, 27, 86, 32], [60, 50, 52, 80, 25, 77, 62, 50], [70, 67, 57, 60, 44, 18, 72, 39], [80, 72, 76, 26, 56, 20, 36, 52], [90, 83, 70, 60, 31, 71, 57, 55], [55, 30, 40, 79, 66, 43, 36, 28], [45, 39, 40, 45, 78, 74, 34, 45]] else: # 无储能 population = [[21, 17, 16, 35, 63, 0, 0, 0], [30, 27, 37, 69, 40, 0, 0, 0], [40, 38, 30, 76, 81, 0, 0, 0], [50, 45, 43, 32, 87, 0, 0, 0], [60, 50, 52, 80, 25, 0, 0, 0], [70, 67, 57, 60, 44, 0, 0, 0], [80, 72, 76, 26, 56, 0, 0, 0], [90, 83, 70, 60, 31, 0, 0, 0], [55, 30, 40, 79, 66, 0, 0, 0], [45, 39, 40, 45, 78, 0, 0, 0]] next_species_result = population print("the original", next_species_result) self.pareto_best = [] if way_pareto == 0: pareto_sorting = ParetoSorting(next_species_result, number, mode) else: pareto_sorting = ReverseParetoSorting(next_species_result, number, mode) print("original_best:", pareto_sorting.pareto_sorting_result) for i in range(times): solution_best_of_this_generation = [] new_population = newpopulation(next_species_result, mover) # 遗传变异 # print("new_population:", new_population) selecting_process = NextGeneration(new_population, number, mode, way_pareto) selecting_queue = selecting_process.selecting_queue # print("selecting_queue:", selecting_queue) next_species_result = [] for m in range(Constant.population_size): next_species_result.append(new_population[selecting_queue[m]]) # print("next_species_result:", next_species_result) for n in range(selecting_process.length_of_best): solution_best_of_this_generation.append(next_species_result[n]) self.pareto_best.append(solution_best_of_this_generation) print("time:", i, self.pareto_best[i]) # 每代最优解集合 # 列出每代最优解之集合的最优解,即看最优解的进化过程 set_of_best = [] self.evaluation_of_best = [] self.average_evaluation_of_cost = [] self.average_evaluation_of_emission = [] self.average_evaluation_of_pei = [] self.best_evaluation_of_cost = [] self.best_evaluation_of_emission = [] self.best_evaluation_of_pei = [] self.list_evaluation_of_cost = [] self.list_evaluation_of_emission = [] self.list_evaluation_of_pei = [] self.list_evaluation_of_ele_waste_0 = [] self.list_evaluation_of_ele_waste_1 = [] self.list_evaluation_of_ele_waste_2 = [] self.list_evaluation_of_heat_waste = [] self.list_evaluation_of_cold_waste = [] self.average_evaluation_of_ele_waste_0 = [] self.average_evaluation_of_ele_waste_1 = [] self.average_evaluation_of_ele_waste_2 = [] self.average_evaluation_of_heat_waste = [] self.average_evaluation_of_cold_waste = [] for i in range(times): for j in range(len(self.pareto_best[i])): set_of_best.append(self.pareto_best[i][j]) remove_the_same = RemoveTheSame(set_of_best) # 去除重复项 set_of_best_after = remove_the_same.after_removing if way_pareto == 0: pareto_again = ParetoSorting(set_of_best_after, number, mode) else: pareto_again = ReverseParetoSorting(set_of_best_after, number, mode) self.evaluation_of_best.append(pareto_again.pareto_sorting_best) # pareto最高层级的 self.list_evaluation_of_cost.append(pareto_again.pareto_sorting_best_cost_result) self.list_evaluation_of_emission.append(pareto_again.pareto_sorting_best_emission_result) self.list_evaluation_of_pei.append(pareto_again.pareto_sorting_best_pei_result) self.list_evaluation_of_ele_waste_0.append(pareto_again.ele_waste_0) self.list_evaluation_of_ele_waste_1.append(pareto_again.ele_waste_1) self.list_evaluation_of_ele_waste_2.append(pareto_again.ele_waste_2) self.list_evaluation_of_heat_waste.append(pareto_again.heat_waste) self.list_evaluation_of_cold_waste.append(pareto_again.cold_waste) length = len(self.list_evaluation_of_cost[i]) self.average_evaluation_of_cost.append(sum(self.list_evaluation_of_cost[i]) / length) self.average_evaluation_of_emission.append(sum(self.list_evaluation_of_emission[i]) / length) self.average_evaluation_of_pei.append(sum(self.list_evaluation_of_pei[i]) / length) self.average_evaluation_of_ele_waste_0.append(sum(self.list_evaluation_of_ele_waste_0[i]) / length) self.average_evaluation_of_ele_waste_1.append(sum(self.list_evaluation_of_ele_waste_1[i]) / length) self.average_evaluation_of_ele_waste_2.append(sum(self.list_evaluation_of_ele_waste_2[i]) / length) self.average_evaluation_of_heat_waste.append(sum(self.list_evaluation_of_heat_waste[i]) / length) self.average_evaluation_of_cold_waste.append(sum(self.list_evaluation_of_cold_waste[i]) / length) self.best_evaluation_of_cost.append(min(self.list_evaluation_of_cost[i])) self.best_evaluation_of_emission.append(min(self.list_evaluation_of_emission[i])) self.best_evaluation_of_pei.append(max(self.list_evaluation_of_pei[i])) print("pareto again:", i)