大家好我正在研究遗传算法来创造新一代。我遇到了以下问题:
这个问题涉及遗传算法。假设你有一个由10个人组成的人口。每个人都是5位。这是最初的人口。
x1 = (1, 0, 0, 1, 1)
x2 = (1, 1, 0, 0, 1)
x3 = (1, 1, 0, 1, 1)
x4 = (1, 1, 1, 1, 1)
x5 = (0, 0, 0, 1, 1)
x6 = (0, 0, 1, 1, 1)
x7 = (0, 0, 0, 0, 1)
x8 = (0, 0, 0, 0, 0)
x9 = (1, 0, 1, 1, 1)
x10 = (1, 0, 0, 1, 0)
根据健康值对个体进行排名(x1具有最大适应值,x2具有最佳适应值,等等)。假设在抽样时,您获得的排名与排名相同。假设以下内容创建新一代解决方案:
复制率为20%。交叉是80%(假设交叉掩码如下:11100;配对示例与排名相同)。没有突变。
我的解决方案:复制是20%,这意味着前两个人口没有变化。接下来给定交叉掩码给出11100我从交叉(11100)掩码中随机选择3个字,所以从x3和x4开始,这里我保留前3个字相同的x3和x4,最后交换最后两个剩余的单词x3和x4并生成新的人口。我对x5和x6,x7和x8以及x9和x10遵循相同的规则。我不确定这个答案是正确还是错误。有人可以帮我吗?
答案 0 :(得分:0)
我不知道您正在使用的实现的背景,所以我可能不正确,但从遗传算法的角度来看,您的大多数答案似乎都是正确的。
据我所知,你的推理中唯一的问题是交叉。复制完成后,使用剩余的染色体进行交叉。从遗传算法的角度来看,这似乎存在固有的缺陷。遗传算法通常在交叉中使用最佳染色体。你已经保存了最好的东西,然后似乎将它们排除在任何重组之外。这种想法违背了遗传算法的想法,遗传算法是通过最适合个体的重组来进化种群。至少应该包括最适合的染色体。
通常,大多数实现涉及选择随机性的元素,其中最适合的染色体给予更多权重。由于你的问题明确指出按照排名顺序选择对,因此没有随机性,我假设在1到8号染色体上进行交叉。
你对这个交叉面具的理解似乎是正确的。
同样,我对所讨论的实施一无所知,所以我不确定我的理解有多好。我很有兴趣知道这个来源,因为遗传算法似乎很不寻常。