遗传算法求解多元单峰值函数的优化问题。
Show older comments
为什么在编译器下运行算法会提示

程序是下面的:clc;
clear;
NIND=80; %种群中个体数目(染色体):80
NVAR=20; %变量维数为20
PRECI=20; %变量的二进制位数为:20
MAXGEN=500; %最大遗传代数为:500
GGAP=0.9; %使用代沟为:0.9
trace=zeros(2,MAXGEN); %寻优结果的初值
FieldD=[repmat(PRECI,[1,NVAR]);...
repmat([-512;512],[1,NVAR]);...
repmat([1;0;1;1],[1,NVAR])]; %区域描述器
Chrom=crtbp(NIND,NVAR*PRECI); %初始种群
gen=0; %代计数器
variable=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换
ObjV=objfun1(variable); %objfun1为De Jong函数
while gen<MAXGEN
FitnV=ranking(ObjV); %分配适应度值
SelCh=select('sus',Chrom,FitnV,GGAP); %选择
SelCh=recombin('xovsp',SelCh,0.7); %重组,交叉
SelCh=mut(SelCh);%变异
variable=bs2rv(SelCh,FieldD); %子代个体的十进制转换
ObjVSel=objfun1(variable); %计算子代的目标函数值
[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代的新种群
gen=gen+1; %代计数器增加
[Y,I]=min(ObjV);
X=bs2rv(Chrom(I,:),FieldD);
trace(1,gen)=Y; %遗传算法性能追踪
trace(2,gen)=sum(ObjV)/length(ObjV);
disp([gen,Y,trace(2,gen)]); %显示中间过程
end
figure(1)
plot(X,'-bo');grid;
figure(2)
plot(trace(2,:)','-.');
length('解的变化','种群均值的变化');grid;
Accepted Answer
More Answers (0)
Categories
Find more on 安装和许可简介 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!