该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这一段里,建立区域描述器中的rep哪里是什么意思,没看懂
%% 定义遗传算法参数
sizepop=10; %个体数目(Numbe of individuals)
MAXGEN=100; %最大遗传代数(Maximum number of generations)
NVAR=m*cn; %变量的维数
PRECI=10; %变量的二进制位数(Precision of variables)
pc=0.7;
pm=0.01;
trace=zeros(NVAR+1,MAXGEN);
%建立区域描述器(Build field descriptor)
FieldD=[rep([PRECI],[1,NVAR]);rep([lb;ub],[1,cn]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(sizepop, NVAR*PRECI); % 创建初始种群
V=bs2rv(Chrom, FieldD);
ObjV=ObjFun(X,cn,V,options); %计算初始种群个体的目标函数值
T=T0;
while T>Tend
gen=0; %代计数器
while gen
FitnV=ranking(ObjV); %分配适应度值(Assign fitness values)
SelCh=select('sus', Chrom, FitnV); %选择
SelCh=recombin('xovsp', SelCh,pc); %重组
SelCh=mut(SelCh,pm); %变异
V=bs2rv(SelCh, FieldD);
newObjV=ObjFun(X,cn,V,options); %计算子代目标函数值
newChrom=SelCh;
%是否替换旧个体
for i=1:sizepop
if ObjV(i)>newObjV(i)
ObjV(i)=newObjV(i);
Chrom(i,:)=newChrom(i,:);
else
p=rand;
if p<=exp((newObjV(i)-ObjV(i))/T)
ObjV(i)=newObjV(i);
Chrom(i,:)=newChrom(i,:);
end
end
end
gen=gen+1; %代计数器增加
[trace(end,gen),index]=min(ObjV); %遗传算法性能跟踪
trace(1:NVAR,gen)=V(index,:);
fprintf(1,'%d ',gen);
end
T=T*q;
fprintf(1,'\n温度:%1.3f\n',T);
end