Answers:
进化算法是基于达尔文自然选择原理的一系列优化算法。作为自然选择的一部分,给定的环境中有一群争夺生存和繁殖的个体。每个人实现这些目标的能力决定了他们生育孩子的机会,换句话说,将他们的基因传给下一代个体,由于遗传原因,他们在实现这些目标方面有更大的机会做得更好甚至更好。两个目标。
进化算法采用代代相传的不断改进的原理来优化问题的解决方案。在最初的一代中,随机或通过其他方法生成由不同个体组成的种群。一个人或多或少是一个解决问题的方法:关于问题的个人素质称为适应性,它反映了解决方案对于待解决问题的充分性。一个人的适应性越高,就越有可能将其部分或全部基因型传递给下一代。
个体被编码为基因型,可以具有任何形状,例如位向量(遗传算法)或实向量(进化策略)。在评估个体时,即在计算其适应性时,每种基因型都会转化为表型。在某些情况下,表型与基因型相同:称为直接 编码。否则,编码称为间接编码。例如,假设您要优化由矩形长方体的长度,高度和宽度定义的尺寸。为了简化示例,假设这三个数量是0到15之间的整数。我们可以使用4位二进制数来描述每个数量。潜在解决方案的示例可能是基因型0001 011101010。对应的表型是长1,高7和宽10的平行六面体。
在从旧到新的过渡过程中,称为变异 算子,其目的是操纵个体。变异运算符有两种不同的类型:
进化算法已经在各种领域证明了自己,例如运筹学,机器人技术,生物学,细微差别或密码学。此外,它们可以同时优化多个目标,并且可以用作黑匣子,因为它们在数学模型中不具有任何要优化的属性。它们唯一真正的限制是计算复杂度。
遗传算法是一种随机生成问题的许多尝试解决方案的算法。这组尝试的解决方案称为“人口”。
然后尝试使用给定的适应度函数来查看这些解决方案解决问题的能力。具有最佳适应性值的已尝试解决方案用于生成新种群。这可以通过对尝试的解决方案(变异)进行小的更改或通过组合现有的尝试的解决方案(交叉)来完成。
这个想法是,随着时间的流逝,将出现一种具有足够高的适用性值来解决问题的尝试解决方案。
灵感来自进化论。优胜劣汰的解决方案可以生存和繁殖。
例子1
假设您正在寻找最有效的方法来从一块木头上切出许多形状。您想浪费尽可能少的木材。
您尝试的解决方案是将这些形状随机排列在一块木头上。适应性将由按照这种布置切割形状后剩余的木材量来确定。
剩余的木材越少,尝试的解决方案越好。
例子2
假设您试图找到一个通过多个点的多项式。您尝试的解决方案将是随机多项式。
要确定这些多项式的适用性,请确定它们对给定点的拟合程度。(在这种特殊情况下,您可能会使用最小二乘法来确定多项式对点的拟合程度)。在许多试验中,您将获得更适合这些点的多项式,直到您拥有一个足够接近这些点的多项式。
此答案要求一个实际示例,说明如何使用它,除了其他答案之外,我还将尝试提供该示例。他们似乎应该很好地解释遗传算法是什么。因此,这将举一个例子。
假设您有一个神经网络(尽管它们不是唯一的应用程序),它从某些给定的输入中会产生一些输出。遗传算法可以创建这些种群,并通过查看哪个输出最佳来繁殖并杀死种群成员。最终,如果足够复杂的话,这应该优化神经网络。
这是我进行的演示,尽管编码不正确,也可能有助于您理解。http://khrabanas.github.io/projects/evo/evo.html 按下“进化”按钮并破坏目标。
它使用一种简单的遗传算法来繁殖,变异和决定哪个种群幸存。取决于输入变量的设置方式,网络将能够与之接近某种程度。以这种方式,总体可能最终成为同质群体,其输出类似于目标。
遗传算法正在尝试创建各种“神经网络”,通过引入RGB可以产生输出颜色。首先,它产生一个随机种群。然后通过从总体中抽取3个随机成员,选择适应性最低的成员并将其从总体中删除。适应度等于最高目标平方的差值+最低目标平方的差值。然后,它将剩下的两个繁殖在一起,并将孩子与死去的成员一起添加到人口中的同一位置。发生交配时,有可能发生突变。此突变将随机更改其中一个值。
附带说明一下,由于它的设置方式,尽管它会相对接近,但在很多情况下不可能完全正确。
这里有许多很好的答案,解释什么是遗传算法,并给出示例应用。我会针对它们的优点添加一些通用建议,但也建议您不要使用它们。如果我的语气看起来很刺耳,那是因为在不适当部分的任何情况下使用GA都会导致您的论文被任何顶级期刊立即拒绝。
首先,您的问题必须是优化问题。您需要定义要尝试优化的“健身功能”,并且需要一种方法来对其进行度量。
好:
不适当:
最后,如果您考虑采用通用遗传算法,请考虑“进化策略”中的最新工作。我偏向于CMA-ES,我认为CMA-ES是一种很好的简单算法,它以传统GA无法捕获的方式捕获了健身环境中的梯度概念。
正如在另一个答案中观察到的那样,应用遗传算法(GA)所需要做的只是以易于交叉和变异的形式表示问题的潜在解决方案。理想情况下,适应度函数将提供有关解决方案质量的某种平滑反馈,而不是简单地成为“干草堆中的针”。
以下是遗传算法(以及实际上通常是元启发法)可解决的问题的一些特征:
但是,尽管已将它们广泛用于此目的,但请注意,GA实际上并不是 GA GA功能优化器 -GA机制倾向于不探索搜索空间的“外围”区域,以期找到一些遥远的高质量解决方案,而是将其聚类在“健身景观”中容易达到的高峰。
有关遗传算法的适用性的更多详细信息,请参见著名的早期论文“是什么使遗传算法难以解决问题?”