遗传算法
一、能解决的问题
如果你需要解决一个问题,这个问题的每一个可能的解均可以用位串来表示,那么遗传算法就能解决这个问题。
二、术语
- 个体:每一个可能的解;
- 种群:一群个体;
- 基因:个体中位的一个序列包含着个体的一些特征信息,这个序列被称为基因;
- 染色体:一个个体中全部基因的集合;
- 基因型:特定的基因被称为基因型;
- 表型:基因型所代表的与问题相关的参数被称为表型;
三、适应度函数
如果对适应度函数没有一个好的定义,就无法模拟进化。需要根据自己的理解给出一个合理的定义。
四、选择与交叉
-
选择交配的父代
① 介绍:
② 算法伪代码
-
交叉繁衍后代
① 交叉过程
② 后代要求
五、变异
六、终止准则
- 可以是预先给定遗传算法运行的代数;
- 让遗传算法一直运行直到最好的个体的适应度好过由用户定义的某个阈值;
- 让遗传算法一直运行直到从一代到下一代最好个体的适应度不再有改进。
七、简单的遗传算法伪代码
Parents <- {随机生成的种群}
While not(终止条件)
计算种群中每个父代的适应度
Children <- 空集
While |Children| < |Parents|
用适应度根据概率选出一对交配的父代
父代交配生成子代c1和c2
Children <- Children 并上{c1,c2}
Loop
一些子代随机变异
Parents <- Children
下一代