我们知道遗传算法(或进化计算)可以对解空间Ω中的点进行编码,而不是直接对这些点进行编码。在文献中,我们经常发现GAs具有以下缺点:(1)由于许多染色体被编码成相似的Ω点或相似的染色体具有非常不同的点,因此效率相当低。你认为这真的是一个缺点吗?因为这些算法在每次迭代中使用变异算子来使候选解决方案多样化。为了增加更多的多样性,我们只需增加交叉的概率。我们不能忘记,我们的初始种群(染色体)是随机产生的(另一种更多样化)。问题是,如果你认为(1)是GA的缺点,你能提供更多细节吗?谢谢。
答案 0 :(得分:6)
突变和随机初始化不足以解决被称为遗传漂移的问题,这是遗传算法的主要问题。遗传漂变意味着遗传算法可能很快失去其大部分遗传多样性,并且搜索以不利于交叉的方式进行。这是因为随机初始种群快速收敛。突变是一个不同的东西,如果它很高,它会变得多样化,真实,但同时它会阻止收敛,并且解决方案将以更高的概率保持在一定距离到最佳状态。您需要在搜索过程中调整变异概率(而不是交叉概率)。以类似的方式,类似于GA的进化策略在搜索期间调整突变强度。
我们开发了GA的变体,称为OffspringSelection GA(OSGA),它在交叉之后引入了另一个选择步骤。只接受那些超过父母健康的孩子(更好,更差或任何线性插值)。这样你甚至可以使用随机的父选择,并对后代的质量产生偏差。已经表明,这减缓了遗传漂变。该算法在我们的框架HeuristicLab中实现。它具有GUI,因此您可以下载并尝试解决一些问题。
其他抵抗遗传漂移的技术是小生境和拥挤,让多样性流入选择,从而引入另一种但可能不同的偏见。
编辑:我想补充一点,拥有多个质量相同的解决方案的情况当然会造成问题,因为它会在搜索空间中创建中性区域。但是,我认为你并不是那个意思。主要问题是遗传漂移,即。 (重要的)遗传信息的丢失。
答案 1 :(得分:0)
作为旁注,你(OP)说:
我们知道遗传算法(或进化计算)可以对解空间Ω中的点进行编码,而不是直接对这些点进行编码。
这并非总是如此。个体被编码为基因型,其可以具有任何形状,例如字符串(遗传算法)或真实的矢量(进化策略)。在评估个体时,即当计算其适合度<>时,将每种基因型转化为表型。在某些情况下,表型与基因型相同:它被称为直接编码。否则,编码称为间接。 (您可以找到更多定义here (section 2.2.1))
直接编码示例: http://en.wikipedia.org/wiki/Neuroevolution#Direct_and_Indirect_Encoding_of_Networks
间接编码示例:
假设您想要根据长度,高度和宽度优化长方体的大小。为了简化示例,假设这三个量是0到15之间的整数。然后我们可以使用4位二进制数来描述它们。潜在解决方案的示例可以是基因型0001 0111 01010.相应的表型是长度1,高度7和宽度10的平行六面体。
现在回到关于多样性的原始问题,除了DonAndre所说的你可以阅读的内容之外,你还可以阅读由AE写的优秀书籍Introduction to Evolutionary Computing的第9章“多模态问题和空间分布”艾宾和杰克史密斯。以及关于这个问题的研究论文,如Encouraging Behavioral Diversity in Evolutionary Robotics: an Empirical Study。 总之,多样性不是GA的缺点,它只是一个问题。