Python 如何使用DEAP定义遵循特定顺序模式的自定义遗传算法个体

Python 如何使用DEAP定义遵循特定顺序模式的自定义遗传算法个体,python,genetic-algorithm,deap,Python,Genetic Algorithm,Deap,我的GA个体是一个int(例如:[4,5,10,11,8,12,9,13,2,6,3,7,0,14,15,1])的随机序列,遵循在另一个自定义函数中处理的特定顺序约束 如何将订单约束函数合并到单个初始化中 我的灵感来自以下方面: 但我得到了以下错误: AttributeError: 'list' object has no attribute 'fitness' 我也犯了同样的错误。我意识到你的generate_individual函数返回一个列表[]。因此,当一个新的个体被创建时,它被存储在

我的GA个体是一个
int
(例如:
[4,5,10,11,8,12,9,13,2,6,3,7,0,14,15,1]
)的随机序列,遵循在另一个自定义函数中处理的特定顺序约束

如何将订单约束函数合并到单个初始化中

我的灵感来自以下方面:

但我得到了以下错误:

AttributeError: 'list' object has no attribute 'fitness'

我也犯了同样的错误。我意识到你的generate_individual函数返回一个列表[]。因此,当一个新的个体被创建时,它被存储在一个列表中,给一个结果一个列表中的列表[]。如果您试图打印一个人,为了获得您想要的列表,您必须使用

individual[0]
。。。以获取您创建的列表

目前我不知道如何解决这个问题(因为我是DEAP的新手)

编辑: 我发现另一个StackOverflow问题解决了这个问题。我想如果你检查一下就好了。看看用户是如何创建个人的:


一个旧线程,但我遇到了它,因为我想做类似的事情

我正在做下面的工作,这似乎做的工作

pop = toolbox.population(n=POPSIZE)
pop[0] = creator.Individual((1.0 for _ in range(INDSIZE))) # add default individual

也许有人可以指出这是否有问题?

您需要定义一个自定义属性函数,并使用DEAP注册它。工具箱

例如,下面的代码创建具有两个独立属性的个人

# Structure initializers
toolbox.register("attr_r", random.uniform, R_MIN, R_MAX)
toolbox.register("attr_l", random.uniform, L_MIN, L_MAX)
toolbox.register("individual", tools.initCycle, creator.Individual,(toolbox.attr_l,
    toolbox.attr_r,toolbox.attr_l,toolbox.attr_l,toolbox.attr_r,toolbox.attr_l,toolbox.attr_l,toolbox.attr_r,toolbox.attr_l), n=N_CYCLES)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)

代码的哪一部分产生了这个错误?请详细说明怎么做
# Structure initializers
toolbox.register("attr_r", random.uniform, R_MIN, R_MAX)
toolbox.register("attr_l", random.uniform, L_MIN, L_MAX)
toolbox.register("individual", tools.initCycle, creator.Individual,(toolbox.attr_l,
    toolbox.attr_r,toolbox.attr_l,toolbox.attr_l,toolbox.attr_r,toolbox.attr_l,toolbox.attr_l,toolbox.attr_r,toolbox.attr_l), n=N_CYCLES)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)