我有一个DEAP工具箱设置
import random
from deap import base, tools, creator, algorithms
toolbox = base.Toolbox()
creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)
toolbox.register("individual", tools.initRepeat, creator.Individual, random.random, n=2)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)我想强制人群中某些人的价值。为此,我想创建具有给定基因组的个体,并将它们添加到种群中
pop = toolbox.population(n=10)
new_individual = ?
pop.append(new_individual)我如何定义新的个体?做new_individual = toolbox.individual([.1, .2])是行不通的。new_individual = toolbox.individual(); new_individual.values = [.1, .2]也是如此。如果我使用new_individual = [.1, .2],那么它就不再具有正确的类型(list而不是deap.creator.Individual。
发布于 2021-02-24 07:53:22
一种方法如下: new_individual = creator.Individual(individual_values)
样板示例(用于上下文):
from deap import base, creator, tools
import numpy as np
creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)
toolbox = base.Toolbox()
toolbox.register('evaluate', lambda x: fitness_fn(x, **fitness_fn_kwargs))
toolbox.register("attr_int", np.random.randint, low = 0, high = nvals)
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_int, n = npars)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
pop = toolbox.population(n=pop_size)替换一个个体的值:
pop[0] = creator.Individual(10 * [0])https://stackoverflow.com/questions/58975201
复制相似问题