首页 >> 大全

遗传算法的进一步探究—多种群_数学建模matlab算法(六)

2023-10-29 大全 27 作者:考证青年

多种群遗传算法可以解决传统遗传算法存在的早熟收敛问题,多种群遗传算法MPGA在标准遗传算法SGA的基础上主要引入了以下概念:

(1)突破SGA仅靠单个群体进行遗传进化的框架,引入多个种群同时进行优化搜索;不同的种群赋以不同的控制参数,实现不同的搜索目的。

(2)各个种群之间通过移民算子进行联系,实现多种群的协同进化;最优解的获取是多个种群协同进化的综合结果。

(3)通过人工选择算子保存各种群每个进化代中的最有个体,并作为判断算法收敛的依据。

MPGA的算法结构示意图:

下面,我们以一个具体问题为例,使用英国谢菲尔德大学的遗传算法工具箱求解。

求复杂二元函数的最值:

求解结果如图:

图2 标准遗传算法运行5次的进化过程图

求解结果如图:

图3 多种群遗传算法运行5次的进化过程图

从图2可见,5次得到的优化结果均不同,标准遗传算法很不稳定,而且在接近500代的时候任然未稳定下来,说明最优解还有上升的可能。对于这种复杂的函数优化,使用标准的遗传算法已经很难得到最优解了。

从图3可见,多种群遗传算法运行5次的结果完全一致,说明多种群遗传算法稳定性很好,而且稳定性很好,而且使用的遗传代数很小,最大不超过60代,可见,多种群遗传算法的收敛速度快,适合复杂问题的优化。

参考文献:

[1]叶在福,单渊达.基于多种群遗传算法的输电系统扩展规划[J].电力系统自动化,2000(05):24-27,35.

[2]余健明,吴海峰,杨文宇.基于改进多种群遗传算法的配电网规划[J].电网技术,2005,29(07):36-40,55.

[3]郝翔,李人厚.适用于复杂函数优化的多群体遗传算法[J].控制与决策,1998,17(03):184-188.

[4]周文彬,蔡永铭,陈华艳.实值多种群遗传算法求解动态规划问题[J].控制工程,2007,5(14):103-104,124.

[5]陈曦,王希诚.一种改进的多种群遗传算法[J].辽宁科技大学学报,2009,32(2):160-163.

代码:

%% 多种群遗传算法
clear;
clc
close all
NIND=40;               %个体数目
NVAR=2;                %变量的维数
PRECI=20;              %变量的二进制位数
GGAP=0.9;             %代沟
MP=10;                   %种群数目
FieldD=[rep(PRECI,[1,NVAR]);[-3,4.1;12.1,5.8];rep([1;0;1;1],[1,NVAR])];  %译码矩阵
for i=1:MPChrom{i}=crtbp(NIND, NVAR*PRECI);                       %创建初始种群
end
pc=0.7+(0.9-0.7)*rand(MP,1);    %在【0.7,0.9】范围内随机产生交叉概率
pm=0.001+(0.05-0.001)*rand(MP,1);  %在【0.001,0.05】范围内随机产生变异概率
gen=0;  %初始遗传代数
gen0=0; %初始保持代数
MAXGEN=10;  %最优个体最少保持代数
maxY=0; %最优值
for i=1:MPObjV{i}=ObjectFunction(bs2rv(Chrom{i}, FieldD));%计算各初始种群个体的目标函数值
end
MaxObjV=zeros(MP,1);           %记录精华种群
MaxChrom=zeros(MP,PRECI*NVAR); %记录精华种群的编码
while gen0<=MAXGENgen=gen+1;       %遗传代数加1for i=1:MPFitnV{i}=ranking(-ObjV{i});                      % 各种群的适应度SelCh{i}=select('sus', Chrom{i}, FitnV{i},GGAP); % 选择操作SelCh{i}=recombin('xovsp',SelCh{i}, pc(i));      % 交叉操作SelCh{i}=mut(SelCh{i},pm(i));                    % 变异操作ObjVSel=ObjectFunction(bs2rv(SelCh{i}, FieldD)); % 计算子代目标函数值[Chrom{i},ObjV{i}]=reins(Chrom{i},SelCh{i},1,1,ObjV{i},ObjVSel);    %重插入操作end[Chrom,ObjV]=immigrant(Chrom,ObjV);     % 移民操作[MaxObjV,MaxChrom]=EliteInduvidual(Chrom,ObjV,MaxObjV,MaxChrom);     % 人工选择精华种群YY(gen)=max(MaxObjV);    %找出精华种群中最优的个体if YY(gen)>maxY   %判断当前优化值是否与前一次优化值相同maxY=YY(gen); %更新最优值gen0=0;elsegen0=gen0+1; %最优值保持次数加1end
end
%% 进化过程图
plot(1:gen,YY)
xlabel('进化代数')
ylabel('最优解变化')
title('进化过程')
xlim([1,gen])
%% 输出最优解
[Y,I]=max(MaxObjV);    %找出精华种群中最优的个体
X=(bs2rv(MaxChrom(I,:), FieldD));   %最优个体的解码解
disp(['最优值为:',num2str(Y)])
disp(['对应的自变量取值:',num2str(X)])

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了