def tecnica_selecao_elitista(self, populacao_inicial: list): tela = Application() tela.start() tempo = 1 populacao = [] melhor_individuo = {} for i in populacao_inicial: individuo = self.vetor_para_objeto_populacao_variavel(i) self.atribuir_expectativa_vida(individuo) populacao.append(individuo) while tempo < self.num_max_geracoes and self.melhor_fitness < 63: # avaliacao # selecao # recombinacao tela.show_geracao(tempo) #seleção tela.show_estado("Seleção") populacao = self.selecao_elitista(populacao) #Gerando estatisticas tela.show_estado("Estatistica") self.melhor_fitness = 0 pontuacao_melhor_individuo = 0 vida_individuo_melhor_finess = 0 for i in populacao: if self.melhor_fitness < i['fitness']: self.melhor_fitness = i['fitness'] vida_individuo_melhor_finess = i['vida'] melhor_individuo = i pontuacao_melhor_individuo = str( i['somatorio']) + ' [' + ', '.join( str(e) for e in i['calculo_somario']) + ']' tela.show_status(len(populacao), pontuacao_melhor_individuo, self.melhor_fitness, vida_individuo_melhor_finess) #mutacao tela.show_estado("Mutação") populacao = self.mutacao(populacao) #reprodução tela.show_estado("Reprodução") novos_individuos = self.recombinacao_populacao_variavel( populacao, self.percentual_recombinacao) populacao = populacao + novos_individuos tempo = tempo + 1 tela.show_estado("Finalizado") print("Fim") print("Relatório:") print('Individuo:', melhor_individuo) print('Geração atual: ', tempo) print('Tamanho população inicial: ', self.tamanho_inicial_populacao) print('Número máximo gerações: ', self.num_max_geracoes) print('Porcentagem de recombinação: ', self.percentual_recombinacao) print('Porcentagem de mutação: ', self.percentual_mutacao) print('Limite populacional: ', self.limite_populacional) print('Porcentagem de redução populacional: ', self.porcentagem_reducao_populacional)
def tecnica_selecao_elitista(self, populacao_inicial:list): tela = Application() tela.start() tempo = 1 populacao = populacao_inicial self.melhor_individuo = populacao[0] while tempo < self.num_max_geracoes and self.melhor_individuo.resultado != 0: #tela.show_geracao(tempo) #seleção #tela.show_estado("Seleção") populacao = self.selecao_elitista(populacao) #Gerando estatisticas #tela.show_estado("Estatistica") for i in populacao: if self.melhor_individuo.resultado > i.resultado: self.melhor_individuo = copy.deepcopy(i) print(self.melhor_individuo.altura(), self.altura_maxima) tela.show_geracao(tempo) tela.show_status(len(populacao), self.melhor_individuo.resultado, self.melhor_individuo.formula(), 0 ) #mutacao #tela.show_estado("Mutação") populacao = self.mutacao(populacao) #reprodução #tela.show_estado("Reprodução") novos_individuos = self.recombinacao_populacao(populacao, self.percentual_recombinacao) populacao = populacao + novos_individuos tempo = tempo + 1 tela.show_estado("Finalizado") print("Fim") print("Relatório:") print('Individuo:', str(self.melhor_individuo.resultado)+ ' - ('+self.melhor_individuo.formula()+')') print('Geração atual: ', tempo) print('Tamanho população inicial: ', self.tamanho_inicial_populacao) print('Número máximo gerações: ', self.num_max_geracoes) print('Porcentagem de recombinação: ', self.percentual_recombinacao) # print('Porcentagem de mutação: ', self.percentual_mutacao) #print('Limite populacional: ', self.limite_populacional) print('Porcentagem de redução populacional: ', self.porcentagem_reducao_populacional)