遗传算法
一、基本思想
遗传算法通过模拟自然界中生物的遗传进化过程,对优化问题的最优解进行搜索。从初始种群出发,采用优胜略汰的方式选择个体,经过选择保存下来的群体构成种群,通过杂交、变异产生新一代种群取代原来的群体,逐代进化,直至满足目标为止。
二、算法流程
- 初始化规模为N群体,随机生成染色体每个基因的值
- 采用评估函数对群体中所有染色体进行评价,分别计算每个染色体的适应值,保存适应值最大的染色体Best
- 采用轮盘赌选择算法对染色体进行选择操作,产生规模同样为N的种群
- 按照概率pc从种群中选择染色体进行交配。每两个进行交配的父代染色体,交换部分基因,产生新的子代染色体,子代染色体取代父代染色体进入新的种群,没有进行交配的染色体直接复制进入新种群。
- 按照概率pm对新种群中染色体的基因进行变异操作。变异后的染色体取代原有染色体进入新群体,未发生变异的染色体直接进入新群体。
- 重新计算群体中各个染色体的适应值。倘若群体中的最大适应值大于Best的适应值,则更新Best。
- 当前进化代数+1,如果进化代数超过最大进化代数或Best达到规定的误差要求,算法结束;否则返回步骤3
染色体编码方式:二进制编码
二进制编码方法产生的染色体是一个二进制符号序列。假设问题定义的有效解取值空间为[Umin,Umax] D ^D D,其中D是有效解的变量维数,使用L位二进制符号表示解的一维变量。其中Umin对应的实际取值为0000…0000,Umax对应的实际取值为1111…1111,XLXL-1…X2X1对应的实际取值是Umin+
( U m a x − U m i n ) ∑ j − 1 n X j 2 j − 1 / 2 L − 1 (U_{max}-U_{min})\sum_{j-1}^nX_j2^{j-1}/2^L-1 (Umax−Umin)∑j−1nXj2j−1/2L−1
选择操作
种群的选择操作使用轮盘赌选择算法,先根据每个染色体的适应值得到种群中所有染色体的适应值总和,并分别计算每个染色体的适应值与群体适应值总和的比。每转动一次轮盘,轮盘停止时指针停留的区域对应的染色体即被选中进入种群。
杂交操作
在交配阶段,每个染色体能否进行交配由交配概率pc决定,其具体过程为:对于每个染色体,如果随机值小于pc,则表示可进行交配,否者染色体不进行交配直接复制到新种群中。
变异操作
染色体的变异作用于基因之上,与杂交类似,对于染色体中的每一位基因,能够变异的概率取决于变异概率pm,如果随机值小于pm,则改变基因,否则保持不变。
三、分析不同的评估函数
1.Rastrigin评估函数
function y = Rastrigin(x)
% Rastrigin函数
% 输入x,给出相应的y值,在x = ( 0 , 0 ,…, 0 )处有全局极小点0.
[row,col] = size(x);
if row > 1
error( ' 输入的参数错误 '