Пример #1
0
    def gera_nova_populacao(self, shapes = None):
        self.populacao = sorted(self.populacao, key=lambda x: x.avaliacao) 
        nova_populacao = []
        while len(nova_populacao) < len(self):
            p1 = self.seleciona()
            p2 = self.seleciona()

            while p1 == p2:
                p2 = self.seleciona()

            if shapes:
                f1, f2 = Individuo.crossover_rede(p1, p2, shapes)
            else:
                f1, f2 = Individuo.crossover(p1, p2)

            if random() < self.prob_mutacao:
                f1.mutacao()
            if random() < self.prob_mutacao:
                f2.mutacao()

            nova_populacao.append(f1)
            nova_populacao.append(f2)

        while len(nova_populacao) > len(self):
            nova_populacao.remove(nova_populacao[randint(
                0, len(nova_populacao))])

        self.populacao = nova_populacao
        self.geracao += 1