def exec_ag(prmt): populacao = Populacao(tipo_rep='real', selecao='roleta', cruzamento='alpha_beta', npop=prmt[0], nger=prmt[1], elitismo=prmt[5], gerar_log_exec=False, taxa_cruzamento=prmt[3], pv=0.9) if populacao.tipo_rep == 'real': populacao.inicializa_indiv_real(alpha=0.75, beta=0.25, taxa_mutacao=prmt[2], ndim=prmt[4], xmax=3, xmin=-3) else: populacao.inicializa_indiv_bin(nbits=prmt[5], ndim=prmt[4], taxa_mutacao=prmt[2], xmax=3, xmin=-3) for geracao_atual in range(0, populacao.nger): populacao.avalia_pop() populacao.exec_selecao() populacao.exec_cruzamento() populacao.calc_log_ger() populacao.subst_pop() if populacao.elitismo: populacao.exec_elitismo() return populacao
EXEC_PARALELA = int(sys.argv[1]) if not EXEC_PARALELA: inicio = time.time() print("\nAlgoritmo Genético em execução...") populacao = Populacao(tipo_rep='real', selecao='roleta', cruzamento='ponto', npop=100, nger=100, elitismo=True, gerar_log_exec=False, taxa_cruzamento=0.8, pv=0.9) if populacao.tipo_rep == 'real': populacao.inicializa_indiv_real(alpha=0.75, beta=0.25, taxa_mutacao=0.05, ndim=10, xmax=2, xmin=-2) else: populacao.inicializa_indiv_bin(nbits=10, taxa_mutacao=0.05, ndim=10, xmax=3, xmin=-3) print(colored('\033[1m' + populacao.parametros + '\033[0m', "green")) for geracao_atual in tqdm(range(0, populacao.nger), position=0, leave=True): populacao.avalia_pop() populacao.exec_selecao() populacao.exec_cruzamento() populacao.calc_log_ger() populacao.subst_pop() if populacao.elitismo: populacao.exec_elitismo() fim = time.time() log_ger = list(map(list, zip(*populacao.log_ger))) melhores_ger, media_ger, mediana_ger, std_fitness = log_ger[0], log_ger[1], log_ger[2], log_ger[3] print(colored('\033[1m'+"\n-> Solução Encontrada: ", "green")) print(colored('\033[1m'+"\n-> Melhor Indivíduo: %.10f" % populacao.melhor_individuo.fitness, "green")) if populacao.tipo_rep == "real": print(colored("Xns: ", "green"), populacao.melhor_individuo.cromossomo) else: print(colored("Xns: ", "green"), populacao.melhor_individuo.x_ns) print(colored('\033[1m'+"\n-> Media Fitness : %.10f" % populacao.media_fitness, "blue"))