Пример #1
0
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])
Пример #2
0
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
Пример #3
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
Пример #4
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)
Пример #5
0
    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)