0

这是我将给出的一个非常小的例子:

假设我的人口规模为 4。现在,假设我根据他们的适应度对它们进行排序,并且我决定删除最后 2 个(所以现在我的人口规模为 2)。现在我需要回到原来的大小,但首先我必须创建后代。

假设我有这个:(不是用任何特定语言编写的)

population = [[2.2],[49.7],[34.1],[25.39]] //original population, I would run this under a fitness function
sortedPopulation = [[49.7],[25.39],[2.2],[34.1]] //sorted population based upon their fitness
best = [[49.7],[25.39]] //updated population with the last 2 elements being dropped (because they are the 2 worst)

在这一点上,我试图弄清楚如何交叉并创造后代。在后代之后,我将产生更多的双打以恢复到原来的种群规模(我已经知道该怎么做)。有哪些穿越的方法?交叉的结果实际上会是什么样子?

我还想确保有一种方法适用于总体元素中的任何 # 个元素。例如,如果每个元素都是 2 双,那么我将如何从这样的东西中创建后代:

best = [[3.3,92.56],[10.5,15.01]]
4

1 回答 1

0

如果您正在使用整数,最好将它们作为二进制使用...然后您可以例如将最后 2 位交换为交叉,交换每一个第二位等...甚至更好地作为格雷码(https:// en.wikipedia.org/wiki/Gray_code)或者你可能会卡在汉明的障碍上(https://en.wikipedia.org/wiki/Hamming_distance

希望它有帮助^^帕特里克

于 2020-10-24T23:27:30.550 回答