多种群遗传算法的函数优化算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多种群遗传算法的函数优化算法

多种群遗传算法的函数优化算法2010年12月15日星期三21:30【注】原帖网址:、案例背景

针对遗传算法所存在的问题,一种多种群遗传算法结构模型(Multiple Population GA,简称MPGA)可以用来取代常规的标准计算模型(SGA)。

MPGA在SGA的基础上主要引入了以下几个概念:

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

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

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

2、案例目录:

第7章多种群遗传算法的函数优化算法

7.1理论基础

7.1.1遗传算法早熟问题

7.1.2多种群遗传算法概述

7.2案例背景

7.2.1问题描述

7.2.2解决思路及步骤

7.3 MATLAB程序实现

7.3.1移民算子

7.3.2人工选择算子

7.3.3目标函数

7.3.4标准遗传算法主函数

7.3.5多种群遗传算法主函数

7.3.6结果分析

7.4延伸阅读

7.5参考文献

3、主程序:

%%多种群遗传算法

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:MP Chrom{i}=crtbp(NIND,NVAR*PRECI);%创建初始种群

end pc=0.7+(0.9-0.7)*rand(MP,1);%在【0.7,0.9】范围i内随机产生交叉概率

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:MP ObjV{i}=ObjectFunction(bs2rv(Chrom{i},FieldD));%计算各初始种群个体的目标函数值

end MaxObjV=zeros(MP,1);%记录精华种群

MaxChrom=zeros(MP,PRECI*NVAR);%记录精华种群的编码

while gen0=MAXGEN gen=gen+1;%遗传代数加1 for i=1:MP

FitnV{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;

else gen0=gen0+1;%最优值保持次数加1 end 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)])

4、运行结果:

标准遗传算法运行5次得到的结果图

相关文档
最新文档