Algorithm 遗传算法中交叉的有效性

Algorithm 遗传算法中交叉的有效性,algorithm,genetic-algorithm,Algorithm,Genetic Algorithm,我已经实现了许多遗传算法来解决各种各样的问题。然而,我仍然怀疑交叉/重组的有用性 我通常在实现交叉之前先实现变异。在我实施交叉后,与简单地使用变异和在每一代中引入几个随机个体以确保遗传多样性相比,我通常看不到生成好的候选解决方案的速度有显著的提高 当然,这可能是因为交叉函数和/或概率的选择不当,但我想得到一些具体的解释/证据,说明为什么/是否交叉改进了GAs。有没有关于这方面的研究 我理解其背后的原因:交叉允许两个人的优势结合成一个人。但对我来说,这就像说我们可以让一位科学家和一辆捷豹交配,得到

我已经实现了许多遗传算法来解决各种各样的问题。然而,我仍然怀疑交叉/重组的有用性

我通常在实现交叉之前先实现变异。在我实施交叉后,与简单地使用变异和在每一代中引入几个随机个体以确保遗传多样性相比,我通常看不到生成好的候选解决方案的速度有显著的提高

当然,这可能是因为交叉函数和/或概率的选择不当,但我想得到一些具体的解释/证据,说明为什么/是否交叉改进了GAs。有没有关于这方面的研究

我理解其背后的原因:交叉允许两个人的优势结合成一个人。但对我来说,这就像说我们可以让一位科学家和一辆捷豹交配,得到一辆智能快速的混合动力车


编辑:在mcdowella的回答中,他提到如何从多个起点找到一个交叉可以改善爬山的案例是非常重要的。有人能详细说明一下这一点吗?

这取决于搜索空间的平滑度。倒行逆施的例子是,如果每个“基因组”在被用来生成“表型”之前都经过哈希运算,那么你只是在进行随机搜索

不太极端的情况下,这就是为什么我们经常在气体中使用格雷码整数

您需要根据编码定制交叉和变异函数。如果你用非同情心的计算,气体很容易衰变。如果A和B的交叉不能产生既像A又像B的东西,那么它是无用的

例子: 基因组有3位长,第0位决定了它是陆地生物还是海洋生物。位1-2描述了陆栖生物的消化功能和海洋生物的视觉能力

    | bit 0 | bit 1 | bit 2
----+-------+-------+-------
Mum | 0     | 0     | 1
Dad | 0     | 1     | 0
以两种陆地生物为例

    | bit 0 | bit 1 | bit 2
----+-------+-------+-------
Mum | 0     | 0     | 1
Dad | 0     | 1     | 0
它们可能在第1位和第2位之间交叉产生一个孩子,其消化功能在妈妈和爸爸之间有所妥协。太好了

如果位0没有改变,这个交叉看起来是合理的。如果是这样的话,那么你的交叉功能已经把某种勇气变成了某种眼睛。呃。。。胡特?这可能是一个随机突变

回避了DNA如何绕过这个问题的问题。嗯,它既是模态的又是层次的。有一些大的片段可以改变很多而没有太大的影响,在另一些片段中,一个单一的突变可以产生剧烈的影响(如上面的0位)。有时,X的值会影响Y的行为,X的所有值都是合法的,可以探索,而对Y的修改则会导致动物的死亡


GAs的理论分析通常使用非常粗糙的编码,它们比语义问题更容易受到数值问题的影响。

我的印象是,从多个随机起点爬山非常有效,但试图找到一个交叉可以改善这一点的案例并不简单。其中一个参考文献是大卫·伊克兰赞(David Icl˘anzan)的《跨界:寻找中的神圣力量》(Crossover:The Divine Afflatus in Search)

传统的遗传算法理论是以积木假设为支撑的 (BBH)指出遗传算法(GAs)通过发现, 强调和重组高质量的低阶图式 字符串,以强并行的方式。历史上 捕捉拓扑适合度景观特征,举例说明 这一直观的直接过程,主要是 不成功的以群体为基础的重组方法已经被提出 在特殊设计的抽象测试套件上屡屡表现出色, 通过基于变异算法的不同变体

一篇相关的论文是“通过爬山克服等级困难” David Iclănzan和Dan Dumitrescu的“积木结构”,其中指出

构造块假设表明遗传算法(GAs) 非常适合层次化问题,在这种情况下,可以高效地解决 需要对问题进行适当的分解,并从 具有强非线性相关性的子解。报纸 建议在建筑砌块(BB)空间上方操作爬山者 这可以有效地解决分层问题


约翰·霍兰德(John Holland)的两部开创性著作《自然和人工系统中的适应》(Adaption in Natural and Artificial Systems)和《隐藏秩序》(Hidden Order)(不太正式)深入讨论了交叉理论。在国际海事组织,Goldberg的“搜索、优化和机器学习中的遗传算法”有一个关于数学基础的非常平易近人的章节,其中包括以下结论:

通过交叉和复制……那些性能高于平均水平且定义长度较短的模式将以指数级增长的速率进行采样

另一个很好的参考可能是Ankenbrandt的“收敛理论的延伸和遗传算法时间复杂性的证明”(在Rawlins的“遗传算法的基础”中)


我很惊讶,在你的工作中,交叉的力量对你来说并不明显;当我开始使用遗传算法,并看到“定向”交叉是多么有力时,我觉得自己对进化的洞察颠覆了我在学校里所学的东西。所有关于“突变如何导致这个和那个?”以及“好吧,在这么多代人的过程中……”的问题似乎从根本上被误导了

您对交叉操作的怀疑是正确的。有一份报纸叫 “模拟进化优化中交叉的有效性”(Fogel和Stayton,Biosystems 1994)。可在以下网址免费获取:

顺便说一句,如果你还没有,我建议你研究一种叫做“差异进化”的技术。它可以很好地解决许多优化问题。

i