📄 coga2fort_p2.m
字号:
% the function of this file is to test Co-GA programming in T_P2 in binary
NVAR = 1225;
NIND1=120;
Chrom1=crtbp(NIND1,NVAR);
NIND2=20;
PRECI=10;
FieldD2=[rep([PRECI],[1,1]); rep([0;1000],[1,1]);rep([1;0;1;1],[1,1])];
Chrom2=crtbp(NIND2,PRECI);
Chrom1u=Chrom1(5,:);
Chrom2u=Chrom2(1,:);
r=1;
MAXGEN=550;
%pr=0.1; % can adjust it
for i=1:120
reqmin(i)=T_P2Lag(Chrom1(i,:),bs2rv(Chrom2u,FieldD2),r);
end
[R,S]=size(reqmin);
if R==1
reqmin=reqmin';
end
%t1=(min(reqmin)-max(reqmin))./log(pr);
for j=1:20
reqmax(j)=T_P2Lag(Chrom1u,bs2rv(Chrom2(j,:),FieldD2),r);
end
[M,N]=size(reqmax);
if M==1
reqmax=reqmax';
end
%t2=(min(-reqmax)-max(-reqmax))./log(pr);
%row=1;
for gen=1:MAXGEN
%tic;
for gen1=1:10
% GA begin
FitnVmin=ranking(reqmin);
SelChmin=select('rws',Chrom1,FitnVmin);
SelChmin=recombin('xovsp',SelChmin,0.8);
SelChmin=mut(SelChmin);
for i=1:105
ObjVSelmin(i)=T_P2Lag(SelChmin(i,:),bs2rv(Chrom2u,FieldD2),r);
end
[R,S]=size(ObjVSelmin);
if R==1
ObjVSelmin=ObjVSelmin';
end
Chrom1=reins(Chrom1,SelChmin);
% SA begin
%eta=(10-(-10))./10;
%for i=1:120
%Chrom1real(i,:)=bs2rv(Chrom1(i,:),FieldD1);
%for n=1:7
%esp=normrnd(0,1);
%if min(1,exp(-eta.*esp./t1))>=rand(1)
%Chrom1real(i,:)=Chrom1real(i,:)+eta.*esp;
%else
%Chrom1real(i,:)=Chrom1real(i,:)+0;
%end
%end
% transverse to 25 bit binary
%end
% SA end except decrease temperature
for i=1:120
reqmin(i)=T_P2Lag(Chrom1(i,:),bs2rv(Chrom2u,FieldD2),r);
end
[R,S]=size(reqmin);
if R==1
reqmin=reqmin';
end
%t1=t1.*0.85; % can adjust 0.85
end
[dmin,ii]= min(reqmin);
Chrom1u=Chrom1(ii,:);
%fitnessbest=dmin;
%fitnessmean=mean(reqmin);
%plot(row,fitnessbest,'.k',row,fitnessmean,'.b');
%row=row+1;
%hold on
for gen2=1:2
FitnVmax=ranking(-reqmax);
SelChmax=select('rws',Chrom2,FitnVmax);
SelChmax=recombin('xovsp',SelChmax,0.8);
SelChmax=mut(SelChmax);
for j=1:20
ObjVSelmax(j)=T_P2Lag(Chrom1u,bs2rv(SelChmax(j,:),FieldD2),r);
end
[R,S]=size(ObjVSelmax);
if R==1
ObjVSelmax=ObjVSelmax';
end
Chrom2=reins(Chrom2,SelChmax);
% SA begin
%eta=(10-(-10))./10;
%for j=1:20
%Chrom2real(j,:)=bs2rv(Chrom2(j,:),FieldD2);
%for n=1:7
%esp=normrnd(0,1);
%if min(1,exp(-eta.*esp./t1))>=rand(1)
%Chrom2real(j,:)=Chrom2real(j,:)+eta.*esp;
%else
%Chrom2real(j,:)=Chrom1real(j,:)+0;
%end
%end
% transverse to 25 bit binary
%end
% SA end except decrease temperature
for j=1:20
reqmax(j)=T_P2Lag(Chrom1u,bs2rv(Chrom2(j,:),FieldD2),r);
end
[M,N]=size(reqmax);
if M==1
reqmax=reqmax';
end
%t2=t2.*0.85;
end
[dmax,jj]=max(reqmax);
Chrom2u=Chrom2(jj,:);
r=r.*1.1;
if r>10000
r=10000;
end
x=Chrom1u;
temp00=0;
for i=1:100
temp00=temp00+i.*x(i);
end
Obj(gen)=temp00;
disp(gen);
%toc;
end
mm=1:MAXGEN;
plot(mm,Obj);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -