5

我一直在为我ai班上的一个项目对遗传算法进行一些研究,但我对似乎是传统算法有点困惑。

基本上,我想知道他们为什么使用轮盘赌等不同的选择来选择父母进行繁殖。为什么不选择体能得分最高的父母并收工呢?

交叉也让我感到困惑。每次随机选择点拼接父信息。但是根据以前的信息改变交叉似乎更有意义。如果已知染色体串在某一点上是好的,则交叉仍然可能是随机的,但不在字符串中好的部分的范围内。

有什么想法吗?

4

5 回答 5

10

选择

如果你只选择最好的父母,你得到的就是爬山。爬山效果很好,但问题越难,一般来说,你就越有可能陷入无法进一步进步的位置。

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

现代遗传算法通常会花费大量精力来维持种群的多样性,以防止过早收敛。一种技术是健身分享。另一种简单的方法是将种群划分为不同的物种,以便不同物种的个体不能(或很少能)相互繁殖。

分频器

Crossover 试图在因突变而产生的个体之间分配良好的基因组部分。如果可以交换基因组中好的部分确实会很好,并且已经尝试过;例如,您可以查看每个基因并测量拥有该基因的个体的平均适应度。

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

  1. 它的计算成本很高。

  2. 基因组中可能存在相互依赖性。根据您的指标,也许基因 A 看起来非常好,但基因 B 不好看,所以您将其忽略。但实际上,如果没有基因 B,基因 A 可能实际上不起作用。

于 2011-11-12T19:21:50.327 回答
1

只选择两个父母并收工收工太快了。您希望同时调整许多不同的变量。想象一个双变量场景,您使用遗传算法找到房间中的最低点。您的方法可能会很快找到一个局部低谷中的最低点,但如果飞机有很多起伏,您可能会找不到最低点的低谷。

于 2011-11-12T17:32:43.720 回答
1

不选择最好的 => 因为否则你很可能会陷入局部最优。出于类似的原因,轮盘赌选择是过去的事情,酷孩子使用基于等级的选择(根据适应度对后代进行排序并保持,比如说最好的 1/10,检查“进化策略”)。轮盘赌选择,也就是适应度比例选择,如果适应度尺度不是很规则,就不能很好地工作,实际上它从来都不是规则的。

交叉 => 进化策略只使用突变并且没有交叉完全可以。交叉假设您的目标函数可以整齐地分解为几个位,交叉会找到。在大多数基因型中,基因型的各个部分以高度非线性的方式相关。仅在玩具问题上非常幼稚和真实。如果您没有充分的理由使用交叉运算符,请不要使用它,奥卡姆剃刀等等。

于 2011-11-17T14:35:50.367 回答
0

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

-泰德

于 2011-11-26T21:17:49.303 回答
0

交叉后更换物种怎么样?

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

真不知道你们用什么物种来代替新生?如果儿童的体能比泳池中最差的两个人的体能更差怎么办?请解释轮盘赌比例选择方法中的替换过程。

于 2012-08-15T15:05:29.097 回答