遗传算法求解多元单峰值函数的优化问题。

9 Ansichten (letzte 30 Tage)
新锦江娱乐开户咨询【微8785092】
为什么在编译器下运行算法会提示
程序是下面的: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;

Akzeptierte Antwort

新锦江娱乐开户注册【微8785092】
这个CRTBP函数应该是由第三方提供的,两种可能性:
1) 你没有这个CRTBP函数
2) 你下载了CRTBP函数,但这个函数不在你的MATLAB搜索路径上
你可以用 which crtbp 检查一下,如果没有搜索结果,上述两种情况之一

Weitere Antworten (0)

Kategorien

Mehr zu 安装和许可简介 finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!