遗传算法什么时候是优化的好选择?


20

遗传算法是优化方法的一种形式。通常,随机梯度下降及其导数是函数优化的最佳选择,但有时仍会使用遗传算法。例如,NASA ST5航天器的天线是使用遗传算法创建的:

ST5天线

什么时候比最常见的梯度下降方法更好的选择是遗传优化方法?


7
以+1为例,我找到了原始论文:alglobus.net/NASAwork/papers/Space2006Antenna.pdf
蒂姆

Answers:


19

遗传算法(GA)是一个启发式方法家族,在很多情况下,它们在经验上都擅长提供一个不错的答案,尽管它们很少是给定领域的最佳选择。

您提到了基于导数的算法,但是即使没有导数,也有很多无导数优化算法的性能要比GA更好。看到这个这个答案的一些想法。

什么许多标准的优化算法的共同点(甚至衍生物-自由的方法)是假设底层空间是平滑歧管(也许有几个离散的尺寸),并且该函数以优化是有些表现良好。

但是,并非所有功能都在平滑歧管上定义。有时您想对图形或其他离散结构进行优化(组合优化)-这里有专用的算法,但是GA也可以。

您越倾向于使用复杂的,离散的结构定义的功能,则GA越有用,尤其是当您找到一个表示遗传算子能够最佳发挥作用的表示形式时(这需要大量的手工调整和领域知识)。

当然,未来可能会导致完全忘记GA并开发将离散空间映射到连续空间并使用我们在连续表示上使用的优化机制的方法。


2

当梯度下降致力于单准则优化时,遗传方法非常适合多准则优化。当存在导数并且只有一个最优解(如果我们除局部极小值之外)时,梯度下降允许找到最小的函数。遗传算法可用于多准则问题,并导致解决方案的连续性,每个解决方案都是从初始种群进化而来的。要优化的值是个体的表型,并且可以有几种表型。通常,没有一个人同时具有每种表型的更好的价值,因此不仅只有一种解决方案。最终总体中的所有个体都是优化的解决方案,它们是“帕累托阵线”的一部分,并标记为“帕累托排名第一” 个人。这意味着,与在每种表型上表现相同的其他每个人相比,他们在一个表型上至少比其他表型更好。


可以接受否决票,但您能解释我错了吗?
manu190466

5
该站点重视提供上下文和背景的答案。请参阅此帮助页面,以了解如何提供将添加到我们的知识库中的有趣问题的有用答案的答案。解释您的答案也是检验您自己的理解的一种好方法。例如,在这种情况下,您可能想扩展遗传算法如何“非常适合多准则优化”,因为Wikipedia页面似乎暗示单值适应度函数作为遗传算法的目标。
EdM

0

在哪个意义上最好?

以我的经验,GA是最实用的优化器之一。尽管许多更精确的算法需要时间和精力来形式化数学世界中的实际问题,但GA可以处理具有复杂规则和约束的任何成本函数(GA毕竟是通过执行方法而不是通过特定的计算来关联)。这个过程很简单,您可以尝试许多方法进行探索性工作。

我也很高兴为将来的运行重新注入算法的过去解决方案的可能性,这对于重复任务很有用。

从概念上讲,遗传算法可以用功能和适合的哈希表表示,因此像Clojure这样的功能语言也可以很快地取得巨大的成绩。

遗传算法也可以嵌套:一个遗传算法的成本函数可以是遗传算法!这些算法利用了现代硬件和基础架构的优势,这些硬件和基础架构使它们能够计算非常大的数量,因此,即使使用简单的突变/选择操作,您仍然可以获得良好的结果。

即使对于诸如找到波动函数最小值的简单问题,GA也不是那么糟糕,并且可以在可接受的时间内达到不错的精度。

所以,是的,分析解决方案可能具有更快的执行时间和精度,但是产生超重所需的时间通常是预期的收益!那什么时候?几乎对我而言,至少对于元优化而言。


这种说法的主要推论似乎是遗传算法是黑盒优化器。但是,那里有很多黑盒优化器。为什么这会比其他选择更好?此外,我认为GA可以轻松处理约束并不是真的。例如,如果除了4D世界中的3D子空间之外,该函数未定义,那么香草GA当然会失败。
Cliff AB

@CliffAB实际上,我没有对此说任何话,也许恰恰相反。在GA中,您对核心计算有很多控制权,GA本身是一系列步骤和轻订单的序列。定义成本函数时,您可以处理函数中的任何内容,甚至可以查询外部约束。我的主要论据是:处理许多问题,您不必担心与框架的兼容性(您只需要退还成本),即使在大多数情况下,即使并非总是都能找到一个体面的现实解决方案最好的
约瑟夫·尤里内
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.