遗传算法
生物进化(Evolution)主要通过染色体(Chromosome)之间的交叉和变异来完成。
遗传算法的核心思想:适者生存。
基本遗传算法的步骤
染色体编码(Chromosome coding)与解码(Decode)
基本遗传算法使用固定长度的二进制符号串来表示种群中的个体。其等位基因(Allele)由二值{0,1}组成。初始种群中各个个体的基因可以用均匀分布的随机数来生成。
编码
设某一参数的取值范围为[U1,U2],我们用k表示二进制编码的长度,总共能产生2k种不同编码,参数与编码之间存在一个映射关系(有点类似比例尺):
解码
假设某一个体的编码为bkbk-1......b2b1,则对应的解码公式:
个体适用度的检测与评估
基本遗传算法按与个体适应度成正比的概率来决定当前群体中各个个体遗传到下一代群体中的机会多少。为了正确评估这个概率,要求所有个体适应度为非负数。所以,根据不同种类的问题,需要预先确定好由目标函数值到各个适应度之间的转换规律。特别注意,要预先确定好当前目标函数值为负值时的处理方法。例如:可选取适当大的正c,使得个体适应度为目标函数值加上正c。
遗传算子
基本遗传算法使用下列三种遗传算子:
1. 选择运算使用比例选择算子
比例选择因子是利用各个个体适应度占总体适应度的比例。若设种群数为M,个体i的适应度为fi,则个体i被选取的概率为:
当个体选择的概率给定后,产生[0,1]之间的均匀随机数来决定哪个个体参加交配。。若个体的选择概率大,则能被多次选中,它的遗传基因就会在种群中扩大;若个体的选择概率小,则被淘汰。
2. 交叉运算使用单点交叉算子
只有一个交叉点位置,任意挑选经过选择操作后种群中两个个体作为交叉对象,随机产生一个交叉点位置,两个个体在交叉点位置互换基因码,形成两个子个体。
3. 变异(Mutation)
变异运算使用的是基本位变异算子或者是均匀变异算子,为了避免问题过早的收敛,对于二进制基因码组成的个体种群,实现小概率基因码反转。
2020年4月20日
基本遗传算法的参数设置
基本遗传算法有4个参数需要预定:
设M为种群的大小,一般取值为20—100
设T为遗传算法终止时的进化代数,一般取值为100—500
设Pcrossover为交叉概率,一般取值为0.4—0.99
设Pmutation为变异概率,一般取值为0.0001—0.1
后续会给出相应的练习