多种群遗传算法的函数寻优算法
多种群遗传算法的介绍
传统的遗传算法是一种借鉴于生物界自然选择和进化机制发展起来的高度并行、随机、自适应的全局优化概率搜索算法。因为优化时不依赖于梯度,具有很强的鲁棒性和全局搜索能力。但是未成熟收敛确实遗传算法中不可忽视的现象,它主要表现为所有个体都区域同一状态而停止进化。
接下来所介绍的多种群遗传算法可以很好地解决这个问题。
多种群遗传算法主要引入了这几个概念。
1.突破SGA仅靠单个种群进行遗传进化的框架,引入多个种群进行全局搜索,不同种群用不同参数,实现不同的搜索目的。2.各种群之间通过移民算子进行联系,实现了多种群协同进化,最优解是多个种群共同进化的结果,3.通过人工算子保留每代中的最优个体,并作为判断收敛的依据。
问题与思路
这里是谢尔德工具箱的下载地址,大家可以自行前往gatbx
代码
话不多说,看Matlab代码:
% 多种群遗传算法主函数
clear
clc
nind = 40;
nvar = 1;
preci = 20;
ggap = 0.9; % 代沟
mp = 10; % 种群数目
field = [preci;0;1;1;0;1;1]; % 区域描述器
for i = 1:mp
chrom{
i} = crtbp(nind,nvar*preci);
end
gen = 0;
pc = 0.7 + (0.9-0.7)*rand(mp,1);
pm = 0.001