遗传算法及其Matlab实现(二元函数实现)

5. 遗传算法实例

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

运算过程如下:
(1)个体编码

​ 将x1,x2的定义域编码为一种符号串,该例题使用二进制编码。将编码后的x1,x2连接在一起形成个体的基因型

例如:基因型 X = 100 010

​ 其表现型 x = [4,2]
​ 基因型与表现型可通过解码程序与编码程序相互转换。

(2)初始群体产生

​ 本例中,选取初始群体为4,实际使用中应远远大于4。随机产生的群体如下:
image-20200723104939570

(3)适应度计算

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

(4)选择运算

​ 运用了轮盘选择的原理,不懂的可以看我上一篇文章。
​ 选择的具体操作过程如下:
计算出群体中所有个体的适应度总和image-20200723105359691
其次计算出每个个体的相对适应度image-20200723105408298

结果即为该个体遗传到下一代的概率:
image-20200723105451802

由上图可见,全部概率值之和位1.这之后再随机且顺序产生4个0<= x <= 1之间的数,依据该随机数出现的区间来选择个体。

选择结果如下:
image-20200723105646033

(5)交叉运算

首先说明,交叉以及变异全部都是概率事件,他是可能不发生的,实例中为了方便大家理解,使交叉与变异全部发生。

​ 本例的交叉运算使用单点交叉方法。其原理如图:
image-20200723105844593

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

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值