我正在研究遗传算法的实现,并且正在使用 DEAP 工具箱。我编写了一个代码来初始化染色体,其中它们的第一个基因是 [0.01, 2048] 范围内的浮点数,它们的第二个基因再次在 [0.0001, 10] 范围内浮点数并且它们的最后三个基因是布尔值。这是我的代码:
toolbox.register("attr_flt1", random.uniform, 0.01, 2048)
toolbox.register("attr_flt2", random.uniform, 0.0001, 10)
toolbox.register("attr_bool", random.randint, 0, 1)
enter ctoolbox.register("individual", tools.initCycle, creator.Individual,
(toolbox.attr_flt1, toolbox.attr_flt2, toolbox.attr_bool, toolbox.attr_bool, toolbox.attr_bool),
n=1)
有一个创建人口的样本:
[1817.2852738610263, 6.184224906600851, 0, 0, 1], [1145.7253307024512, 8.618185266721435, 1, 0, 1], ...
现在,我想通过考虑基因类型和范围的差异来对我的染色体进行突变和交叉。目前我有一个错误,因为在应用交叉和变异算子后,染色体的第一个基因产生了 0 值,这与我的评估函数错误。任何人都可以帮助我使用 DEAP 工具箱在最初定义的范围内产生新种群的代码选择、变异和交叉吗?