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
		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]