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

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

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

1、案例背景

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

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

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

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

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

图 7-1 MPGA的算法结构示意图

复杂二元函数求最值:

图 7-2 二元函数图像

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次得到的结果图:

多种群遗传算法运行5次得到的结果图:

相关文档
最新文档