遗传算法求解多元单峰值函数的优化问题。
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
新锦江娱乐开户咨询【微8785092】
am 21 Mai 2023
Beantwortet: 新锦江娱乐开户注册【微8785092】
am 21 Mai 2023
为什么在编译器下运行算法会提示

程序是下面的: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;
0 Kommentare
Akzeptierte Antwort
新锦江娱乐开户注册【微8785092】
am 21 Mai 2023
这个CRTBP函数应该是由第三方提供的,两种可能性:
1) 你没有这个CRTBP函数
2) 你下载了CRTBP函数,但这个函数不在你的MATLAB搜索路径上
你可以用 which crtbp 检查一下,如果没有搜索结果,上述两种情况之一
0 Kommentare
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!