clear all
clc
close all
tic
%定义遗传算法基本参数
NVAR=6; %变量维数
RANGE=[-10;10]; %变量范围
GGAP=0.8; %代沟
XOVR=1; %交叉率
MUTR=1/NVAR; %变异率
MAXGEN=110; %最大遗传代数
INSR=0.9; %插入率
SUBPOP=8; %子代群数
MIGR=0.2; %迁移率
MIGGEN=20; %在子种群之间迁移20代
NIND=20; %个体数目
SEL_F='sus'; %选择函数名
XOV_F='recdis'; %重组函数名
MUT_F='mutbga'; %变异函数名
OBJ_F='objharv'; %目标函数名
FieldDR=rep(RANGE,[1,NVAR]); %实数边界矩阵
gen=0; %遗传代数赋0
trace=zeros(MAXGEN,2);
Chrom=crtrp(NIND*SUBPOP,FieldDR); %创建初始种群
GG=zeros(NIND*SUBPOP,NVAR);
GG(1:NIND*SUBPOP,1:NVAR)=Chrom(1:NIND*SUBPOP,1:NVAR);
ObjV=fitness(GG); %计算目标值
%ObjV=feval(OBJ_F,Chrom)
%ObjV=ObjV';
while gen<MAXGEN
FitnV=ranking(ObjV,[2 1],SUBPOP); %分配适应度值
SelCh=select(SEL_F,Chrom,FitnV,GGAP,SUBPOP); %选择
SelCh=recombin(XOV_F,SelCh,XOVR,SUBPOP); %重组
SelCh=mutate(MUT_F,SelCh,FieldDR,[MUTR],SUBPOP); %变异
[m n]=size(SelCh);
GG=zeros(m,n);
GG(1:m,1:n)=SelCh(1:m,1:n);
ObjVOff=fitness(GG); %计算子代种群目标值
%ObjVOff=ObjVOff';
[Chrom,ObjV]=reins(Chrom,SelCh,SUBPOP,[1 INSR],ObjV,ObjVOff); %重插入
gen=gen+1; %遗传代数叠加
[trace(gen,1),I]=min(ObjV);
trace(gen,2)=mean(ObjV);
%在种群间迁移的个体
if rem(gen,MIGGEN)==0
[Chrom,ObjV]=migrate(Chrom,SUBPOP,[MIGR,1,1],ObjV);
end
end
toc
[Y I]=min(ObjV); %追踪最后一代最小值的位置
figure(1)
plot(Chrom(I,:)),hold on
grid;
plot(Chrom(I,:),'bo'),hold on
figure(2)
plot(trace(:,1)),hold on
plot(trace(:,2),'-.');
legend('解的变化','种群均值的变化');
xlabel('迭代次数');
多子群遗传算法.rar_plantfem_遗产算法
版权申诉
200 浏览量
2022-07-15
21:15:46
上传
评论
收藏 1KB RAR 举报
小波思基
- 粉丝: 72
- 资源: 1万+
最新资源
- unity控制对象移动.rar
- TortoiseSVN-1.14.3.29387-x64-svn-1.14.2
- jdk-8u411-macosx-aarch64.dmg
- docker安装.rar
- 美赛数学建模算法-使用Matlab实现常微分方程OridinaryDifferentialEquation-国赛-题解.zip
- FileUploadTestController.java
- 基于MATLAB的数字水印系统源码+GUI操作界面+全部数据资料+使用文档(高分课程设计).zip
- 美赛数学建模算法-使用Matlab实现非线性规划NonLinearProgramming-国赛-题解.zip
- linux安装java8环境资源包
- pcb问题和3D猴制作外壳.7z
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈