遗传算法的选择和交叉

5

我正在为我的ai课程中的一个项目研究遗传算法,但是我有些困惑于似乎是传统算法的东西。

基本上,我想知道为什么他们使用不同的选择方法,比如轮盘赌来选择父母进行繁殖。为什么不选择具有最佳适应度得分的父母并结束呢?

此外,交叉也让我感到困惑。它每次随机选择点来拼接父代信息。但是如果交叉基于以前的信息进行更改,那么似乎更有意义。如果某个染色体字符串已知在某一点之前很好,那么交叉仍然可以是随机的,但不在字符串的好部分范围内。

你有什么想法吗?


你是否想知道为什么它如此简单,或者抱怨轮盘赌?在轮盘赌中,每个数字都有相同的机会。 - Micromega
5个回答

11

选择

如果你只选择最好的父代,那么你得到的就是爬山算法。爬山算法能够很好地工作,但是一般来说,问题越难,你就越有可能陷入一个无法进一步取得进展的局面。

一般来说,问题越难,这种局部最优解就越多。除了选择最好的个体之外,选择其他个体可以保持种群的多样性:解在搜索空间更广泛地分布,如果一个部分的种群陷入局部最优解,另一个部分的种群仍然可以取得进展。

现代遗传算法通常会花费大量精力来保持种群的多样性,以防止过早收敛。其中一种技术是适应度共享。另一种简单的方法是将种群划分为不同的物种,使不同物种的个体无法(或极少)相互繁殖。

交叉

交叉试图在由突变引起的个体之间分配基因组的好部分。如果能够只交换基因组的好部分,那就太好了,这种尝试也已经有人做过;例如,可以查看每个基因,并测量拥有该基因的个体的平均适应度。

但是,这样做有两个主要问题:

  1. 它计算成本高。

  2. 基因组可能存在相互依赖性。也许基因A根据你的指标看起来很好,但基因B却不好,所以你将其排除。然而,在现实中,基因A没有基因B存在可能就不起作用。


1
挑选两个父代然后就这样结束,会很快收敛到一个解决方案。你要同时调整许多不同的变量。想象一下一个双变量场景,在其中使用遗传算法寻找房间中最低点。你的方法可能很快地找到一个局部低谷的最低点,但如果平面有许多波动,你就有可能找不到最低点所在的低谷。

1

不选择最佳方案 => 因为否则你很可能会陷入局部最优解。出于类似的原因,轮盘赌选择已经过时了,时髦的孩子们使用基于排名的选择(按适应度对后代进行排序并保留最好的1/10,参见“进化策略”)。轮盘赌选择,又称适应度比例选择,在适应度尺度不是非常规则时效果不佳,在实践中它几乎从来没有是规则的。

交叉 => 进化策略只使用变异,没有交叉也完全可以。交叉假设您的目标函数可以被整洁地分解成几个部分,而交叉将找到这些部分。在大多数基因型中,基因型的各个部分以高度非线性的方式相关联。这是非常幼稚的,只在玩具问题上才是真实的。如果您没有严肃的理由使用交叉算子,请不要使用,奥卡姆剃刀和所有其他原则都是如此。


0

交叉后替换物种怎么样?

我使用轮盘赌选择方法选择繁殖物种。我的交叉率为0.7(70%),但实际上我不知道这意味着什么。这是指我选择70对父母,交叉并用新的两个替换池中最差的两个吗?还是它意味着我选择70/2 = 35对父母,交叉并用最差的那些替换它们?

我真的不知道你用什么物种替换新孩子?如果孩子的适应度比池中最差的两个还要差怎么办?请解释使用轮盘赌比例选择方法的替换过程。


或者说0.7的交叉率意味着我生成70个新孩子,并用当前池中最差的70个替换它们吗?我举的例子是我的种群大小为100。 - Ivansek

0

我认为DataWraith回答了这个问题。关于交叉,我只想补充一点,John Holland认为GA通过随机交叉和选择隐式地计算每个染色体子串(“模式”)的适应度,而不是显式地计算它,这将非常耗时(正如DataWraith所说)。Holland称这个过程为“隐式并行性”。

-Ted


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