Home › Fóruns › Fórum Algoritmos Genéticos em Python › Debug
- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 3 anos, 10 meses atrás por
Fábio Spak.
Visualizando 4 posts - 1 até 4 (de 4 do total)
- AutorPosts
- 19 de maio de 2021 às 09:59 #28943
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)
19 de maio de 2021 às 10:42 #28945apareceu um novo erro:
19 de maio de 2021 às 15:21 #28951Encontrei o erro, estava na identação do “return nota / 100000, ”
Obrigado!
19 de maio de 2021 às 22:08 #28954Olá Vizoni, que bom que deu certo 😉
Fabio
- AutorPosts
Visualizando 4 posts - 1 até 4 (de 4 do total)
- Você deve fazer login para responder a este tópico.