0

我正在学习遗传算法,当我研究突变时,有些东西我无法弄清楚。在我们通过交叉点产生后代后有点不寻常,我们应该应用突变(小概率)那个小概率是多少?我有关于 8 个皇后问题的图像,我们在这里找到了最佳答案,我们的交叉点是 3,那么为什么例如我们在第一个、第三个和最后一个群体中有突变,但在第二个群体中没有? 在此处输入图像描述

很抱歉这个问题可能很愚蠢!

4

2 回答 2

1

首先,你所说的人口,它实际上只是人口中的一个人。人口是所有个体的整体。

一个好的遗传算法是平衡“探索与探索”的算法。探索试图找出新的解决方案,而不关心它们有多好(因为它们可能会导致一些更好的解决方案)。Exploatation 试图利用算法已经知道的“好的解决方案”。

CROSSOVER = EXPLOATATION 使用crossover,您正在尝试结合最好的个人(健康方面)以产生更好的解决方案

MUTATION = EXPLORATION 使用突变,你试图摆脱你的“基因库”并找出新的解决方案,这些解决方案具有你当前人口中没有的新特征。

话虽如此,平衡它们的最佳方法通常是反复试验。对于某个输入,尝试使用参数并查看它们是如何工作的。

关于为什么第二个个体根本没有变异,仅仅是因为变异个体的概率过程没有选择它。通常,在这类问题上,变异的工作方式如下:

for individual in population do:
    for gene in individual:
        if random() < MUTATION_RATIO:
            mutate(gene)

这意味着一个人可能会遭受不止一种突变。

于 2014-08-24T12:47:00.213 回答
0

我对遗传算法的经验是,最佳突变概率取决于算法,有时甚至取决于问题。根据经验:

  • 突变概率太小:种群收敛较早
  • 突变概率太高:人口永远不会收敛

所以基本上这个问题是无法回答的。根据参数的数量、变异算法和问题(即对参数变化的敏感性),我的百分比从 0.5% 上升到了 8%。还有一些算法可以改变几代人的突变率。

我找到了一种学习和试验突变率的好方法(尽管仅适用于该算法)是这个网站,您可以玩概率并立即看到效果。看着那些小汽车也很沉思。

于 2014-08-23T06:34:37.250 回答