遗传算法是否都是最大化算法?

3

我不确定我的最大化和最小化的理解是否正确。

那么,假设对于一些函数f(x,y,z),我想找到会给出最高值的输入,这将是最大化,对吗?如果我想找到最低值,这将是最小化,对吗?

那么,如果遗传算法是一种搜索算法,试图最大化某些适应度函数,它们就意味着是最大化算法吗?


3
如果您的适应度函数在搜索空间中是实值的,只需将其乘以-1,最大化就变成了最小化(或反之亦然)。 - David Tonhofer
2
重要的教训是:不要过于关注最大/最小值。考虑使用遗传算法来探索搜索空间,以找到“适应度函数”的局部极值(如果存在)。这些极值可能是局部最大值或局部最小值,具体取决于你如何看待事物。然后,适应度函数会发生变化(“环境变化”),需要找到新的极值。 - David Tonhofer
1
请注意,适应值和目标值之间存在差异。遗传算法试图最大化适应度,因为它们试图进化更健康的个体。然而,这并不意味着潜在问题是最小化或最大化一个函数。对于最小化问题,只是更接近最小值的个体更健康(因此适应度更高)。正如@DavidTonhofer所提到的,这很容易转换,通常并不重要。 - orange
为了解决这个问题,我认为“优化”是一个更常用的术语。同时,值得指出的是,在很多遗传算法中,特别是那些带有多样性维护组件的算法中,适应度函数部分依赖于当前种群,因此会随时间变化而改变。在新颖性搜索中尤其如此,其中适应度完全由与以前发现的任何内容不同来定义。因此,谈论最大值并不总是完全有意义的。 - seaotternerd
2个回答

4
我想找到能够使函数f(x,y,z)达到最大值的值,这就是最大化,对吗?如果我想找到能够使函数f(x,y,z)达到最小值的值,那么这就是最小化,对吗?
是的,根据定义是这样的。
如果遗传算法是一种试图最大化某些适应性函数的搜索算法,那么它们就是最大化算法,尽管我不确定“最大化算法”是否是一个常用术语,并且只有在遗传算法被定义为这样做时才是如此,我认为这并不严格。
通用算法也可以尝试将距离某个目标函数值的距离最小化,或者最小化函数值,但是这又可以等价地重新表述为最大化而不失一般性。
也许更重要的是,甚至不需要一个严格的函数 - 候选人只需要可比较。如果它们具有总序,那么可以将其重新表述为最大化问题。如果它们没有总序,可能会更难以获得客观上比其他所有候选人更好的候选人,尽管这种类型的数据也可以使用遗传算法运行。总之 - 尝试最大化函数是常态(并可能符合您通常看到的定义),但是如果您遇到不这样做的遗传算法,请不要感到惊讶。

-1
遗传算法是否都是最大化算法?
不是的。
遗传算法是多目标优化的流行方法(例如NSGA-II或SPEA-2是基于遗传算法的非常著名的方法)。
对于多目标优化,您并不试图最大化一个函数。
这是因为将多目标优化问题标量化往往不是可行的方式(即没有单个解决方案可以同时优化每个目标),而您要寻找的是一组非支配解(或帕累托最优解的代表子集)。

还有一些进化算法的方法,试图捕捉自然进化的开放性,寻找行为新颖性。即使在以目标为基础的问题中,这种新颖性搜索也会忽略目标(详见 Joel Lehman 和 Kenneth O. Stanley 的《放弃目标:仅通过寻找新颖性进行进化》)。 (请参阅Abandoning Objectives: Evolution through the Search for Novelty Alone)。


虽然遗传算法确实可以用于多目标函数,但这并不是它们的独有目的:大部分早期工作(以及许多正在进行的工作)都是单目标。 - NietzscheanAI
@NietzscheanAI 你说的是对的,但问题是“所有遗传算法都是最大化算法吗?”。在我看来,我们不能肯定回答这个问题,因为存在具有实际应用的重要例外情况。 - manlio
遗传算法确实适用于最大化和最小化问题。它们也适用于多目标问题,其中一些目标需要最大化,而另一些需要最小化。 - NietzscheanAI
@NietzscheanAI 这也是正确的,但问题是“所有遗传算法都是最大化算法吗?”(不是“一些”,“许多”...)。我已经在答案中添加了另一个有趣的例外(还有其他例外)。 - manlio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接