遗传算法常见问题解惑
记得自己在刚开始写基于GA的系列代码的时候也遇到了类似的问题,今天看到有人解释这些问题,现在转载过来,希望能帮助更多的人解惑
转自:http://zhzhou.me/2017/03/05/genetic-algorithm/
其他有用的外文链接:
GA算法介绍:https://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol1/hmw/article1.html
JAVA实现的遗传算法:http://www.theprojectspot.com/tutorial-post/creating-a-genetic-algorithm-for-beginners/3
使用GA求解TSP问题:http://www.theprojectspot.com/tutorial-post/applying-a-genetic-algorithm-to-the-travelling-salesman-problem/5
基因算法教程:http://www.w3ii.com/genetic_algorithms/default.html
1、在选择的过程中,选择多少次,会不会造成种群的减少,选到重复的怎么办?
答:选择次数没有限制,即然是选择肯定就会有没选上的,因此会造成种群数量减少,选到重复的个体舍弃重新选择。建议选择的次数少于种群数量,因为不重复,因此当次数为种群数量时即全部选择了,这样就失去了选择的意义。舍弃重复的是因为重复的个体对种群的差异化没有帮忙(试想极端情况下全是重复个体,那么交叉后全是一样的,没有意义)。
2、 即然计算出了种群中每个个体的适应度,为什么不直接选择适应度高的,舍弃适应度低的,而要用其他算法来选择?
答:适应度低的个体也可能存在优质基因。现实生活中的例子:一对傻子生了个聪明儿子。
3、交叉的过程是随机交叉还是两两交叉,交叉多少次合适?
答:随机或两两交叉都可以,交叉次数大于或等于初始种群中个体数量/2。因为交叉一次产生两个新个体,而第3步的变异不产生新个体,因此为保证种群中个体的数量不致于越来越少(人口负增长), 交叉次数大于或等于初始种群中个体数量/2。