Debug

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #28943
    Vizoni
    Participante

    bom dia,

    Aos 11 mim da aula 26, Biblioteca DEAP II, é feita uma execução do código elaborado até aquele momento e isso retorna as gerações.

    Eu escrevi o código e esta me retornando um erro que não consegui resolver, poderia me ajudar?

    segue código abaixo:

     

    import random
    import xlrd
    import numpy 
    from deap import base
    from deap import creator
    from deap import algorithms
    from deap import tools
    import matplotlib.pyplot as plt
    
    
    class Produto():
    def __init__(self, nome, espaco, valor):
    self.nome = nome
    self.espaco = espaco
    self.valor = valor
    
    lista_produtos = []
    lista_produtos.append(Produto("Geladeira Dako", 0.751, 999.90))
    lista_produtos.append(Produto("Iphone 6", 0.0000899, 2911.12))
    lista_produtos.append(Produto("TV 55' ", 0.400, 4346.99))
    lista_produtos.append(Produto("TV 50' ", 0.290, 3999.90))
    lista_produtos.append(Produto("TV 42' ", 0.200, 2999.00))
    lista_produtos.append(Produto("Notebook Dell", 0.00350, 2499.90))
    lista_produtos.append(Produto("Ventilador Panasonic", 0.496, 199.90))
    lista_produtos.append(Produto("Microondas Electrolux", 0.0424, 308.66))
    lista_produtos.append(Produto("Microondas LG", 0.0544, 429.90))
    lista_produtos.append(Produto("Microondas Panasonic", 0.0319, 299.29))
    lista_produtos.append(Produto("Geladeira Brastemp", 0.635, 849.00))
    lista_produtos.append(Produto("Geladeira Consul", 0.870, 1199.89))
    lista_produtos.append(Produto("Notebook Lenovo", 0.498, 1999.90))
    lista_produtos.append(Produto("Notebook Asus", 0.527, 3999.00))
    
    espacos = []
    valores = []
    nomes = []
    for produto in lista_produtos:
    espacos.append(produto.espaco)
    valores.append(produto.valor)
    nomes.append(produto.nome)
    limite = 3
    
    toolbox=base.Toolbox()
    creator.create("FitnessMax", base.Fitness, weights=(1.0, ))
    creator.create("Individual", list, fitness=creator.FitnessMax)
    toolbox.register("attr_bool", random.randint, 0, 1)
    toolbox.register("individual", tools.initRepeat, creator.Individual, 
    toolbox.attr_bool, n=len(espacos))
    toolbox.register("population", tools.initRepeat, list, toolbox.individual)
    
    def avaliacao(individual):
    nota = 0
    soma_espacos = 0
    for i in range(len(individual)):
    if individual[i] == 1:
    nota += valores[i]
    soma_espacos += espacos[i]
    if soma_espacos > limite:
    nota = 1
    return nota / 100000,
    
    toolbox.register("evaluate", avaliacao)
    toolbox.register("mate", tools.cxOnePoint)
    toolbox.register("mutate", tools.mutFlipBit, indpb = 0.01)
    toolbox.register("select", tools.selRoulette)
    
    if __name__ == "__main__":
    
    populacao = toolbox.population(n = 20)
    probabilidade_crossover = 1.0
    probabilidade_mutacao = 0.01
    numero_geracoes = 100
    
    estatisticas = tools.Statistics(key=lambda individuo: individuo.fitness.values)
    estatisticas.register("max", numpy.max)
    
    populacao, info = algorithms.eaSimple(populacao, toolbox,
    probabilidade_crossover,
    probabilidade_mutacao,
    numero_geracoes, estatisticas)
    #28945
    Vizoni
    Participante

    apareceu um novo erro:

    #28951
    Vizoni
    Participante

    Encontrei o erro, estava na identação do “return nota / 100000, ”

    Obrigado!

    #28954

    Olá Vizoni, que bom que deu certo 😉

    Fabio

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Você deve fazer login para responder a este tópico.