我正在尝试实现遗传算法来最大化n
变量函数,使每个变量都在范围内[-n, n]
。
为了使交叉变得不那么复杂,在生成初始种群时,我只生成从0
to 的数字2n
,然后在评估适应度时,我从每个数字中减去 n。由于n
可能很小,我决定使用位字符串而不是整数数组来表示染色体。
2n
现在的问题是在交叉和变异期间生成非法值(大于)。一种方法是在交叉和变异期间用合法值替换非法值。但这会有点复杂,也可能会影响性能。
所以我想知道我是否可以在交叉和变异时离开检查和替换,而是在两者都完成后进行。所以我有了新一代之后,我将遍历每个个体的染色体并替换非法字符串并计算适应度。另外,是否有可能在不替换非法位串的情况下逃脱?