global gen;
NIND=200;
MAXGEN=2000;
NVAR=55;
Cmax=5000000;
Pm=0.3;
m=2;
n=5;
l=8;
A=[100 100];
M=[90 105 100 115 115];
D=[10 10 10 15 5 15 10 15];
f=[60000;90000;60000;75000;75000];
v=[50;65;60;55;55];
a=[60;120;70;100;80;90;120;60;110;80];
e=[30;55;25;40;25;50;55;55;65;80;40;45;20;35;20;20;50;55;15;25;5;25;45;25;65;75;
45;30;35;10;50;10;45;35;15;10;30;25;60;40];
P=3;
for i=l:NIND
while 0<l
for j=l:5
chroml(i,j)=round(rand(l));
end
if(sum(chroml(i,:),2)>=l)&(sum(chroml(i,:),2)<=P)
break
end
end
end
sumx=zeros(NIND,5);
sumy=zeros(NIND,5);
for i=l:NIND
for j=l:5
if chrom1(i,j)==0
chrom2(i,(2*(j-l)+l):(2*j))=0;
chrom3(i,(8*(j-l)+l):(8*j))=0;
else
while chrom1(i,j)==1
chrom2(i,(2*(j-1)+l):(2*j))=rand(1,2).*min(A,[M(j)M(j)]);
sumx(i,j)=sum(chrom2(i,(2*(j-l)+l):(2*j)),2);
chrom3(i,(8*(j-1)+l):(8*j))=rand(l,8).*(rep(M(j),[1 l]));
sumy(i,j)=sum(chrom3(i,(8*(j-l)+l):(8*j)),2);
chrom3(i,(8*(j-l)+l):(8*j))=(sumx(i,j)/sumy(i,j))*chrom3(i,(8*(j-l)+l):(8*j));
if sumx(i,j)<=1.0*M(j)
break
end
end
end
end
end
Chrom=[chrom1 chrom2 chrom3];
[objvalue]=calobjvalue(chrom,m,n,l,a,c,v,f);
[fitvalue,restriction]=calfitvalue(objvalue,chrom,Cmax,m,n,l,A,M,D,P);
[bestindividual,bestfit,bestrestriction,nopos]=best(chrom,fitvalue,restrietion);
gen= 0;
while gen<MAXGEN,
[objvalue]=calobjvalue(chrom,m,n,l,a,c,v,f);
[fitvalue,restriction]=calfitvalue(objvaluechrom,Cmax,m,n,1,A,M,D,P);
[bestindividual1,bestfit1,bestrestriction1,nopos1]=best(chrom,fitvalue,restriction);
if bestrestrction>bestrestriction1
bestindividual=bestindividual1;
bestfit=bestfit1;
bestrestriction=bestrestriction1;
end
if(bestrestriction==bestrestriction1)&&(bestfit<bestfit1)
bestindividual=bestindividual1;
bestfit=bestfit1;
bestrestriction=bestrestriction1;
end
chrom(nopos1,:)=bestindividual;
[newchrom]=selection(chrom,fitvalue);
[newchrom]=crossover(newchrom,m,n,l);
[newchrom]=mutation(newchrom,Pm,m,n,l);
[bestindividual2,bestfit2,bestrestriction2,nopos2]=best(newchrom,fitvalue,restriction);
if bestrestriction>bestrestriction2
bestindividual=bestindividual2;
bestfit=bestfit2;
bestrestriction=bestrestriction2;
end
if(bestrestriction==bestrestriction2)&&(bestfit<bestfit2)
bestindividual=bestindividual2;
bestfit=bestfit2;
bestrestriction=bestrestriction2;
end
chrom=newchrom;
gen=gen+l;
end
bestindividual,bestfit,bestrestriction
function[objvalue]=calobjvalue(chrom,m,n,l,a,c,v,f)
chrom1=chrom(:,1:n);
chrom2=chrom(:,(n+l):(n+m*n));
chrom3=chrom(:,(n+m*n+1):(n+m*n十n*l));
[NIND,,NVAR]=size(chrom);
for i=l:NIND
for j=l:n
u(i,j)=120*sum(chrom2(i,(2*(j-1)+l):(2*j)),2);
end
end
objvalue=chrom2*a*120+chrom3*c*260+sqrt(u).*chrom1*v+chrom1*f;
function[fitvalue restriction]=calfitvalue(objvalue,chrom,Cmax,m,n,l,A,M,D,P))
global gen;
[NIND,NVAR]=size(chrom);
chrom1=chrom(:,1:n);
chrom2=chrom(:,(n+l):(n+m*n));
chrom3=chrom(:,(n+m*n+1):(n+m*n+n*l));
restriction=zeros(NIND,1);
r=zeros(NIND,m);
s=zeros(NIND,n);
t=zeros(NIND,1);
u=zeros(NIND,2);
p=zeros(NIND,n);
for i=l:NIND
for i=l:m
r(i,j)=A(j)-sum((chrom2(i,j:m:m*n)),2);
if r(i,j)<0
restriction(i,l)=restriction(i,l)+1;
end
end
for j=1:l
t(i,j)=sum((chrom3(i,j:l:n*l)),2)-D(j);
if t(i,j)<0
restriction(i,l)=restriction(i,l)+1;
end
end
for j=l:n
s(i,j)=chrom1(i,j)*M(j)-sum(chrom2(i,(m*(j-1)+l)+l):(m*j)),2);
p(i,j)=abs(sum(chrom3(i,(l*(j-1)+1):(l*j)),2)-sum(chrom2(i,(m*(j-1)+l):(m*j)),2));
if s(i,j)<0
restriction(i,1)=restriotion(i,l)+l:
end
if p(i,j)>=1e-3
restriction(i,l)=restriction(i,l)+l;
end
end
u(i,l)=P-sum(chrom1(i,:),2);
if u(i,1)<0
restriction(i,l)=restriction(i,l)+l;
end
u(i,2)=sum(chrom1(i,:),2)-l;
if u(i,2)<0
restriction(i,l)=restriction(i,l)+l;
end
if(objvalue(i,1)<Cmax)
fitvalue(i,l)=Cmax-objvalue(i,l);
else
fitvalue(i,l)=0.0;
end
end
Function
[bestindividual,bestfit,bestrestriction,nopos]=best(chrom,fitvalue,restriction);
[NIND,NVAR]=size(chrom);
pos=l;
for i=l:NIND
if restriction(pos,l)>restriction(i,l)
pos=i;
end
if(restriction(pos,l)==restriction(i,1))&(fitvalue(pos,l)<fitvalue(i,l))
pos=i;
end
end
bestindividual=chrom(pos,:);
bestfit=fitvalue(pos);
bestrestriction=restriction(pos,:);
nopos=l;
for i=l:NIND
if restriction(nopos,l)<restriction(i,l)
nopos=i;
end
if(restriction(nopos,1)==restriction(i,l))&(fitvalue(nopos,l)>fitvalue(i,l))
nopos=i;
end
end
function[newchrom]=selection(chrom,fitvalue)
totalfit=sum(fitvalue);
fitvalue=fitvalue/totalfit;
fitvalue=cumsum(fitvalue);
[NIND,NVAR]=size(chrom);
ms=sort(rand(NIND,l));
fitin=l;newin=l;
while newin<=NIND
if(ms(newin))<fitValue(fitin)
temp(newin,:)=chrom(fitin,:);
newin=newin+l;
else
fitin=fitin+1;
end
if fitin>=NIND
fitin=NIND;
end
end
newchrom=temp;
function[newchrom]=crossover(chrom,m,n,l)
global gen;
[NIND,NVAR]=size(chrom);
chrom1=chrom(:,1:n);
chrom2=chrom(:,(n+l):(n+m*n));
chrom3=chrom(:,(n+m*n+l):(n+m*n+n*l));
newchrom=zeros(NIND,NVAR);
Pc=0.75;
for i =l:2:NIND-l
if(rand<Pc)
point=ceil(rand*(n-l));
if point<5
newchrom(i,:)=[chrom1(i,l:point)chroml(i+l,point+l:n)…
chrom2(i,l:m*point)chrom2(i+l,m*point+l:m*n)…
chrom3(i,1:l*point)chrom3(i+l,l*point+l:n*l)];
newehrom(i+l,:)=[chrom1(i+l,l:point)chrom1(i,point+l:n)…
chrom2(i+l,l:m*point)chrom2(i,m*point+1:m*n)…
chrom3(i+l,l:l*point)chrom3(i,l*point+l:n*l)];
else
newchrom(i,:)=chrom(i,:);
newchrom(i+1,:)=chrom(i+l,:);
end
else
newchrom(i,:)=chrom(i,:);
newchrom(i+l,:)=chrom(i+l,:);
end
end
function[newchrom]=mutation(chrom,Pm,m,n,l)
global gen;
FieldDR=[0 0 0 0 0 0 0 0 0 0;90 90 105 105 100 100 115 115 115 115];
RANGE=[0 0 0 0 0 0 0 0;10 10 10 15 5 15 10 15];
[NIND,NVAR」=size(chrom);
chrom1=chrom(:,l:n);
chrom2=chrom(:,(n+l):(n十m*n));
chrom3=chrom(:,(n+m*n+1):(n+m*n+n*l));
newchrom=zeros(NIND,NVAR);
newchrom1=zeros(NIND,n);
newchrom2=zeros(NIND,m*n);
newchrom3=zeros(NIND,n*l);
for i=l:NIND
for j=l:n
if chrom1(i,j)==0
newchrom2(i,(m*(j-l)+l):(m*j))=0;
newchrom3(i,(l*(j-l)+l):(l*j))=0;
else
if round(rand)==0
newchrom2(i,(m*(j-l)+l):(m*j))=chrom2(i,(m*(j-l)+l):(m*j))+…
(FieldDR(2,(m*(j-l)+l):(m*j))-chrom2(i,(m*(j-l)+l):(m*j)))*(l-rand^((l-gen/2000)^10));
newchrom3(i,(l*(j-l)+l):(l*j))=chrom3(i,(l*(j-l)+l):(l*j))+…
([10 10 10 15 5 15 10 15]-chrom3(i,(l*(j-l)+1):(l*j)))*(l-rand^((1-gen/2000)^10));
elseif round(rand)=1
newchrom2(i,(m*(j-l)+l):(m*j))=chrom2(i,(m*(j-l)+1):(m*j))-…
(chrom2(i,(m*(j-l)+l):(m*j))-[0 0])*(1-rand^((l-gen/2000)^10));
newchrom3(i,(l*(j-l)+l):(l*j))=chrom3(i,(l*(j-1)+l):(l*j))-…
(chrom3(i,(1*(j-1)+l):(l*j))-[0 0 0 0 0 0 0 0]))*(l-rand^((l-gen/2000)^10));
end
end
end
end
newchrom1=chrom1;
newchrom=[newchrom1 newchrom2 newchrom3];
评论20
最新资源