csdn的第一篇博文介绍遗传算法入门,希望对刚刚学习遗传算法的同学能有所帮助。
下面是参考于维基百科对遗传算法的定义:遗传算法是一种解决最优化问题的启发式算法,借鉴了进化生物学的一些现象,其中包括遗传,突变,自然选择和杂交等。通俗来讲,遗传算法就是在一群问题的候选解中通过各种操作寻找最优解(或近似最优解)的过程,这个过程中用到了模拟生物遗传学的知识。
1. 遗传算法(Genetic algorithm ,GA)的组成:
种群(population):生物进化的最小单位,包含许多个个体。
个体(individual):种群中的一个个体,含有某些基因片段。
基因(gene):一个遗传变量
编码(encode):讲个体描述成机器可以识别的模式(0,1字符串或者浮点数)
交叉(crossover):两个被选中的个体,通过交叉生成两个新个体,替换原来的两个个体
变异(mutation):对一个个体基因变异,生成新个体替换原来的老个体。
适应度(relative fitness):个体对环境的适应能力,同样代表该个体的生命力。
2. 遗传算法的思想:
遗传算法模拟生活中的遗传现象,类似于环境对生物的自然选择,优胜劣汰。我们用该个体的适应度(fitness)代表该个体对环境的适应能力,适应度高代表个体优秀,适应度低代表个体弱。我们通过适应度为基础对种群的个体进行概率选择,适应度高的个体被选中进入下一代的概率高,适应度低的个体被选中的概率低。那么随着下一代个体总体上比上一代个体更加优秀,最后选择出最优秀的个体作为最优解。
3. 遗传算法的基本步骤:
开始 BEGIN
初始化第0代种群 Initialization
评估初始种群中每个个体的适应度Evaluation
循环操作直到找到最优解或循环到终止条件While(obtain solution or termination)
种群进入下一代 generation++
选择操作 Selection
交叉操作