Пример #1
0
    def start_evolution(self):
        gen = 0
        while gen != self.generations_count:
            '''Tworze kolejna generacje, dodaje ja do listy'''

            if gen == 0:
                generation = Gen(self.pop_size, self.gene_count)
                '''Pierwsza generacje losuje'''
                if GeneticAlgorithm.first_generation is None:
                    generation.generate_generation()
                    GeneticAlgorithm.first_generation = copy.deepcopy(
                        generation)
                else:
                    generation = copy.deepcopy(
                        GeneticAlgorithm.first_generation)
                '''Tworze kolejna generacje, dodaje ja do listy'''
                self.generations.append(generation)
                '''Ewaluuje w niej wszystkich osobnikow'''
                self.generations[gen].evaluate_all_individuals(
                    self.flow_matrix, self.distance_matrix)
            else:
                '''Przepisuje populacje "wyzej" i na niej dzialam, potem zmieniam ja na jej dzieci'''
                generation = self.generations[gen - 1]
                self.generations.append(generation)

                self.generations[gen].evaluate_all_individuals(
                    self.flow_matrix, self.distance_matrix)
                '''Podmieniam te generacje na tylko wybranych prawdopodobnych do zostania rodzicem'''
                self.generations[gen].population = self.select_function(
                    self.generations[gen].population, self.tour)
                '''Podmieniam generacje na jej dzieci'''

                self.generations[gen].evaluate_all_individuals(
                    self.flow_matrix, self.distance_matrix)
                self.generations[gen].population.sort(key=attrgetter('value'))
                self.generations[gen].population = self.generations[
                    gen].make_children(self.p_x, self.combine_point_count)
                '''Mutuje'''
                self.generations[gen].mutate_population(self.p_m)
                '''Ewaluuje w niej wszystkich osobnikow'''
                self.generations[gen].evaluate_all_individuals(
                    self.flow_matrix, self.distance_matrix)
            '''Biore sobie najlepszego z generacji'''
            best_alpha_of_gen = self.generations[gen].choose_alpha_individual()
            worst_of_gen = self.generations[gen].choose_looser_individual()
            self.best_of_generations.append(best_alpha_of_gen)
            self.worst_of_generations.append(worst_of_gen)
            self.average_of_generations.append(
                self.generations[gen].get_average_of_population())
            '''
            print(gen)
            print(len(self.generations[gen].population))
            '''
            gen += 1
        pass