我注意到这个网站上的一些问题提到了遗传算法,这让我意识到我对这些并不太了解。
我以前听说过这个词,但我从来没有使用过这个词,所以我不太了解它们是如何工作的以及它们有什么用处。我所知道的是,它们涉及某种进化和随机变化的价值观。
你能给我一个简短的解释,最好包括一些说明基本原理的实际例子吗?
我注意到这个网站上的一些问题提到了遗传算法,这让我意识到我对这些并不太了解。
我以前听说过这个词,但我从来没有使用过这个词,所以我不太了解它们是如何工作的以及它们有什么用处。我所知道的是,它们涉及某种进化和随机变化的价值观。
你能给我一个简短的解释,最好包括一些说明基本原理的实际例子吗?
进化算法是基于达尔文自然选择原理的一系列优化算法。作为自然选择的一部分,给定的环境中有一群为生存和繁殖而竞争的个体。每个人实现这些目标的能力决定了他们生育孩子的机会,换句话说,将他们的基因传给下一代,由于遗传原因,他们将有更多的机会做得更好,甚至更好,在实现这两个目标的过程中。
进化算法采用这种世代持续改进的原则来优化问题的解决方案。在初始生成中,随机或通过其他方法生成由不同个体组成的种群。个人是问题的解决方案,或多或少是好的:个人对问题的质量称为适应度,它反映了解决方案对要解决的问题的充分性。个体的适应度越高,将其部分或全部基因型传递给下一代个体的可能性就越大。
个体被编码为基因型,可以具有任何形状,例如位向量(遗传算法)或真实向量(进化策略)。在评估个体时,即在计算其适应度时,每个基因型都会转化为表型。在某些情况下,表型与基因型相同:称为直接 编码. 否则,编码称为间接编码。例如,假设您要优化由长、高和宽定义的长方体的大小。为了简化示例,假设这三个量是 0 到 15 之间的整数。然后我们可以使用 4 位二进制数来描述它们中的每一个。潜在解决方案的一个例子可能是基因型 0001 0111 1010。相应的表型是长 1、高 7 和宽 10 的平行六面体。
在从旧代到新一代的过渡过程中,应用了以操纵个体为目的的变异 算子。有两种不同类型的变体运算符:
进化算法已经在运筹学、机器人学、生物学、细微差别或密码学等各个领域证明了自己。此外,它们可以同时优化多个目标,并且可以用作黑匣子,因为它们不假设数学模型中的任何属性进行优化。它们唯一真正的限制是计算复杂性。
遗传算法是一种为一个问题随机生成许多尝试解决方案的算法。这组尝试的解决方案称为“人口”。
然后,它会尝试使用给定的适应度函数来查看这些解决方案解决问题的效果。具有最佳适应度值的尝试解决方案用于生成新种群。这可以通过对尝试的解决方案(突变)或通过组合现有的尝试解决方案(交叉)进行小的更改来完成。
这个想法是,随着时间的推移,会出现一种尝试性的解决方案,该解决方案具有足够高的适应度值来解决问题。
其灵感来自进化论。最适合的解决方案生存和繁殖。
示例 1
假设您正在寻找从一块木头上切割出多种形状的最有效方法。你想尽可能少地浪费木材。
您尝试的解决方案是在您的木头上随机排列这些形状。适合度将取决于在按照这种安排切割形状后剩下的木材量。
剩下的木头越少,尝试的解决方案就越好。
示例 2
假设您试图找到一个通过多个点的多项式。您尝试的解决方案将是随机多项式。
要确定这些多项式的适应度,您需要确定它们与给定点的拟合程度。(在这种特殊情况下,您可能会使用最小二乘法来确定多项式与点的拟合程度)。经过多次试验,你会得到更适合点的多项式,直到你有一个与点足够接近的多项式。
这里有很多很好的答案来解释什么是遗传算法,并给出了示例应用程序。我正在添加一些关于它们有什么好处的通用建议,以及你不应该使用它们的情况。
如果我的语气听起来很严厉,那是因为在下面不合适的部分中的任何情况下使用 GA 都会导致您的论文立即被任何顶级期刊拒绝。
首先,您的问题必须是优化问题。您需要定义一个您正在尝试优化的“适应度函数”,并且您需要有一种方法来衡量它。
最后,如果您正在考虑 GA,请考虑最近在进化策略方面的工作。我偏向于CMA-ES,我认为这是一个很好的简单算法,它以传统 GA 不具备的方式捕捉适应度景观中的梯度概念。
这个答案要求提供一个如何使用的实际示例,除了其他答案之外,我将尝试提供该示例。他们似乎很好地解释了遗传算法是什么。所以,这将举一个例子。
假设你有一个神经网络(尽管它们不是它的唯一应用),它从一些给定的输入中会产生一些输出。遗传算法可以创建这些种群,并通过查看哪个输出是最好的,繁殖并杀死种群中的成员。最终,如果神经网络足够复杂,这应该会优化它。
这是我所做的演示,尽管编码很糟糕,但可能会帮助您理解。http://khrabanas.github.io/projects/evo/evo.html 点击进化按钮,搞乱目标。
它使用一种简单的遗传算法来繁殖、变异并决定种群中的哪些个体能够存活下来。根据输入变量的设置方式,网络将能够在一定程度上接近它们。以这种方式,人口最终可能会成为一个同质的群体,其输出类似于目标。
遗传算法试图创建一种“神经网络”,通过接收 RGB,将产生输出颜色。首先,它生成一个随机种群。然后,它从种群中随机抽取 3 个成员,选择适应度最低的成员并将其从种群中删除。适应度等于顶部目标的平方差 + 底部目标的平方差。然后它将剩下的两个一起繁殖,并将孩子添加到与死亡成员相同的位置。当交配发生时,就有可能发生突变。此突变将随机更改其中一个值。
附带说明一下,由于它的设置方式,在许多情况下它不可能完全正确,尽管它会达到相对接近的程度。