5. 遗传算法实例
参考文献:
1.《遗传算法原理及应用》
2.https://www.cnblogs.com/LoganChen/p/7509702.html
求下列二元函数的最大值:

运算过程如下:
(1)个体编码
将x1,x2的定义域编码为一种符号串,该例题使用二进制编码。将编码后的x1,x2连接在一起形成个体的基因型。
例如:基因型 X = 100 010
其表现型 x = [4,2]
基因型与表现型可通过解码程序与编码程序相互转换。
(2)初始群体产生
本例中,选取初始群体为4,实际使用中应远远大于4。随机产生的群体如下:

(3)适应度计算
适应度大小决定了该个体的优劣程度,从而决定其遗传机会的大小。由于目标函数总是非负数,因此可直接选取目标函数的函数值作为个体的适应值。
对初始群体解码后计算得出:

(4)选择运算
运用了轮盘选择的原理,不懂的可以看我上一篇文章。
选择的具体操作过程如下:
计算出群体中所有个体的适应度总和
;
其次计算出每个个体的相对适应度
;
结果即为该个体遗传到下一代的概率:
;
由上图可见,全部概率值之和位1.这之后再随机且顺序产生4个0<= x <= 1之间的数,依据该随机数出现的区间来选择个体。
选择结果如下:

(5)交叉运算
首先说明,交叉以及变异全部都是概率事件,他是可能不发生的,实例中为了方便大家理解,使交叉与变异全部发生。
本例的交叉运算使用单点交叉方法。其原理如图:

具体操作过程是:先对群体进行随机配对,其次随机设置交叉点位置,这之后进行交叉运算:

&spm=1001.2101.3001.5002&articleId=107540029&d=1&t=3&u=cb26e5863f454b95bb15b3c0b314f585)
8602

被折叠的 条评论
为什么被折叠?



