在本篇中,我们介绍一种梯度法与基本遗传算法结合的混合遗传算法,并将之前的遗传算法解决一维问题,推广到解决多维问题。
混合遗传算法
本混合遗传算法对基本遗传算法作出了两点修正
- 修正选择操作
- 增加了交叉前的预处理
Part 1 对选择操作的修正
在基本遗传算法中,我们使用轮盘赌法根据比例确定优胜个体;而在混合遗传算法中,我们按以下公式进行:
- 定义
的适应度(函数)为:
![b181f6c603a27d41b73f3872e29741bb.png](https://img-blog.csdnimg.cn/img_convert/b181f6c603a27d41b73f3872e29741bb.png)
其含义为
- 则种群中的最大适应度:
![4707522f8817714908fdbe3447797870.png](https://img-blog.csdnimg.cn/img_convert/4707522f8817714908fdbe3447797870.png)
- 我们更新个体的公式为:
![1eec1e43ee0ed4ef8ed63a688684161f.png](https://img-blog.csdnimg.cn/img_convert/1eec1e43ee0ed4ef8ed63a688684161f.png)
上式类似于一般优化算法中的更新迭代式
也就是说我们朝向当前种群中函数值下降最大的方向更新
另外 ,需要注意的是,为了避免分母为0,我们加入判断条件,如果
Part 2 交叉操作前的预处理
在基本遗传算法的交叉计算中,我们将相邻两个染色体的依照随机确定的定位点进行基因交换。而在混合遗传算法中,我们将个体顺序打乱后再进行交叉。这样一方面可以使个体在遗传过程中机会均等,;另一方面也可以增加每个个体的优势。
Part 3 混合遗传算法解决一维问题
混合遗传算法只是在基本遗传算法的基础上做了一点修改,只需要对之前AirHead:工程优化设计与Matlab实现——基本遗传算法求解一维问题中的程序进行一些细微修改即可。(修改后的代码见Part5)
Part 4 混合遗传算法解决多维问题
回顾一下之前生物遗传的迭代图,其二维情况如下。
![a807d955421354049e38b196425beb69.png](https://img-blog.csdnimg.cn/img_convert/a807d955421354049e38b196425beb69.png)
二维问题与一维问题的唯一不同在于,每一个个体有两个染色体,两个个体交叉产生下一代时需要两个对应的染色体都进行交叉。为了实现交叉,我们需要对其都进行编码操作。也就是说,我们要对两个染色体进行编码、交叉、变异、解码。其他均与一维问题一致。
Part 5 混合遗传算法栗子
Point 1 混合遗传算法求一维问题
利用混合遗传算法求
目标函数定义:
function
一维混合遗传算法求解:
%----------求函数极小值----------%
求解结果:
![9a8e8ec4fcfb6b387facf90214f10ce3.png](https://img-blog.csdnimg.cn/img_convert/9a8e8ec4fcfb6b387facf90214f10ce3.png)
Point 2 混合遗传算法求多维问题
利用混合遗传算法求
目标函数定义:
function
多维混合遗传算法求解:
%----------求函数极小值----------%
计算结果:
![5e56f1f1dbd19fab3a2e7163fbf36954.png](https://img-blog.csdnimg.cn/img_convert/5e56f1f1dbd19fab3a2e7163fbf36954.png)