将变异(概率很小)应用于后代

时间:2014-08-23 06:25:50

标签: genetic-algorithm genetic-programming n-queens

我正在学习遗传算法,当我研究突变时,有些东西在那里我无法弄明白。在我们通过交叉点产生后代后我们应该应用突变(概率很小)是什么有点不寻常那个小概率?我有关于8个女王问题的图像,我们在这里找到了最佳答案,我们的交叉点是3,那么为什么例如我们在第一个和第三个和最后一个人口中有变异而在第二个人群中却没有? enter image description here

对不起,这个问题可能很傻!

2 个答案:

答案 0 :(得分:1)

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

良好的遗传算法可以平衡"探索& Exploatation&#34 ;.探索试图寻找新的解决方案,而不是关心它们有多好(因为它们可能会导致一些更好的解决方案)。 Exploation正在试图利用算法已经知道的优秀解决方案"。

CROSSOVER = EXPLOATATION使用交叉,你试图结合最好的个体(健身明智)来产生更好的解决方案

突变=探索使用突变,你试图摆脱你的基因库"并找出新的解决方案,具有当前人口不会产生的新特点。

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

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

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

这意味着个人可能会遭受多于一次的突变。

答案 1 :(得分:0)

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

  • 突变概率太小:人口早期收敛
  • 突变倾向过高:人口永不收敛

所以基本上问题是不负责任的。根据参数的数量,变异算法和问题(即对参数变化的敏感性),我已经从0.5%变为8%。还有一些算法可以改变几代人的突变率。

我找到了一种学习和试验突变率的好方法(尽管只有那个算法)this site你可以玩概率并立即看到效果。看着那些小汽车也很冥想。