Example #1
0
def run(parametros):

    prmt = {
        "npop": parametros[0],
        "nger": parametros[1],
        "tc": parametros[2],
        "tm": parametros[3],
    }
    melhores_solucoes = []
    for _ in range(0, 5):

        populacao = Populacao(refeicoes, produtos_ids, dieta_kcal,
                              prmt["npop"], prmt["tc"], prmt["tm"])

        for _ in range(0, prmt["nger"]):
            populacao.avalia_pop(nutrientes_prod_dict,
                                 restricoes,
                                 penalidade=100)
            melhor_indiv = populacao.get_melhor_indiv()
            pais = populacao.torneio()
            indiv_interm = populacao.cruzamento(pais, refeicoes, produtos_ids)
            populacao.substituir_pop(indiv_interm)
            populacao.exec_elitismo(melhor_indiv)

        if melhor_indiv.kcal >= 1200: melhores_solucoes.append(melhor_indiv)
    return melhores_solucoes, prmt
Example #2
0
    }

    produtos_ids = __io.load_products("Dataset/produtos.json")
    nutrientes_prod = __io.load_data("Dataset/dataset_formatado.csv")
    nutrientes_prod_dict = pd_to_dict(nutrientes_prod)

    populacao = Populacao(refeicoes, produtos_ids, dieta_kcal, npop,
                          taxa_cruzamento, taxa_mutacao)
    log_pop = []

    for ger_i in range(0, nger):
        populacao.avalia_pop(nutrientes_prod_dict, restricoes, penalidade=100)
        log_pop.append(gen_log(populacao))
        melhor_indiv = populacao.get_melhor_indiv()
        pais = populacao.torneio()
        indiv_interm = populacao.cruzamento(pais, refeicoes, produtos_ids)
        populacao.substituir_pop(indiv_interm)
        populacao.exec_elitismo(melhor_indiv)
        print("=> Geração: " + str(ger_i + 1) + "/" + str(nger) +
              " -> Melhor solução encontrada até o momento: %.2f" %
              melhor_indiv.fitness,
              melhor_indiv.valida(nutrientes_prod_dict, restricoes),
              end="    \r")

    print("\n\nRestrições:", restricoes)
    print("\nDieta:",
          populacao.get_melhor_indiv().get_nutrientes(nutrientes_prod_dict),
          "\n")
    print("\nFitness: %.2f" % populacao.get_melhor_indiv().fitness,
          " - Kcal: %.2f" % populacao.get_melhor_indiv().kcal)
    pc.plot_graphics(log_pop, parametros)