【问题标题】:Apply mutation (with small probability) to the offspring将突变(以小概率)应用于后代
【发布时间】:2014-10-17 00:29:57
【问题描述】:
我正在学习遗传算法,当我研究突变时,有些东西我无法弄清楚。在我们通过交叉点产生后代后有点不寻常,我们应该应用突变(概率很小)那小可能性?我有关于 8 个皇后问题的图像,我们在这里找到了最佳答案,我们的交叉点是 3,那么为什么例如我们在第一个、第三个和最后一个群体中有突变,但在第二个群体中没有?
对不起,这个问题可能很愚蠢!
【问题讨论】:
标签:
genetic-algorithm
genetic-programming
n-queens
【解决方案1】:
首先,所谓的人口,实际上只是人口中的一个个体。人口是所有个体的整体。
一个好的遗传算法是平衡“探索与探索”的算法。探索试图找出新的解决方案,而不关心它们有多好(因为它们可能会导致一些更好的解决方案)。 Exploatation 试图利用算法已经知道的“好的解决方案”。
CROSSOVER = EXPLOATATION 使用交叉,您试图结合最优秀的个人(健身方面)以产生更好的解决方案
MUTATION = EXPLORATION 使用突变,您可以尝试跳出“基因库”并找到新的解决方案,并具有您当前人群中没有的新特征。
话虽如此,平衡它们的最佳方法通常是反复试验。对于某个输入,尝试使用参数并查看它们是如何工作的。
关于为什么第二个个体根本没有变异仅仅是因为变异个体的概率过程没有选择它。通常,在这类问题上,变异的工作方式如下:
for individual in population do:
for gene in individual:
if random() < MUTATION_RATIO:
mutate(gene)
这意味着一个人可能会遭受不止一种突变。
【解决方案2】:
我在遗传算法方面的经验是,最佳变异概率取决于算法,有时甚至取决于问题。根据经验:
- 突变概率太小:种群收敛较早
- 突变概率过高:种群永远不会收敛
所以基本上这个问题是无法回答的。根据参数的数量、变异算法和问题(即对参数变化的敏感性),我的百分比从 0.5% 上升到了 8%。还有一些算法可以改变几代人的突变率。
我找到了一种很好的方法来学习和试验突变率(尽管仅适用于该算法)是this site,您可以使用概率并立即看到效果。看着那些小汽车也很沉思。