📄 ga.m
字号:
clear all
clc
Size=80;
G=100;
codel=10;
Umax=1;
Umin=0;
E=round(rand(Size,4*codel)); % initial code
% main program
for k=1:1:G
time(k)=k;
for s=1:1:Size
m=E(s,:);
a1=0;
a2=0;
a3=0;
a4=0;
% uncoding
m1=m(1:1:codel);
for i=1:1:codel
a1=a1+m1(i)*2^(i-1);
end
x1=(Umax-Umin)*a1/1023+Umin;
if x1>0.140
x1=0.134;
else x1=x1;
end
m2=m(codel+1:1:2*codel)
for i=1:1:codel
a2=a2+m2(i)*2^(i-1);
end
x2=(Umax-Umin)*a2/1023+Umin;
if x2>0.397
x2=0.3969;
else x2=x2;
end
m3=m(2*codel+1:1:3*codel)
for i=1:1:codel
a3=a3+m3(i)*2^(i-1);
end
x3=(Umax-Umin)*a3/1023+Umin;
if x3>0.671
x3=0.6699;
else x3=x3;
end
m4=m(3*codel+1:1:4*codel)
for i=1:1:codel
a4=a4+m4(i)*2^(i-1);
end
x4=(Umax-Umin)*a4/1023+Umin;
if x4>0.780
x4=0.751;
else x4=x4;
end
F(s)=(x1+2*x2+2*x3+x4)*0.01/6;
end
Ji=F;
% evaluate best J
BestJ(k)=min(Ji);
fi=F; %fitness function
[Oderfi,Indexfi]=sort(fi);
Bestfi=Oderfi(Size);
BestS=E(Indexfi(Size),:);
bfi(k)=Bestfi;
%select and reproduct operation
fi_sum=sum(fi);
fi_Size=(Oderfi/fi_sum)*Size;
fi_S=floor(fi_Size);
kk=1;
for i=1:1:Size
for j=1:1:fi_S(i)
TempE(kk,:)=E(Indexfi(i),:);
kk=kk+1;
end
end
%crossover
pc=0.60
n=ceil(40*rand);
for i=1:2:(Size-1)
temp=rand;
if pc>temp
for j=n:1:40
TempE(i,j)=E(i+1,j);
TempE(i+1,j)=E(i,j);
end
end
end
TempE(Size,:)=BestS;
E=TempE;
%mutation
pm=0.1
for i=1:1:Size
for j=1:1:4*codel
temp=rand;
if temp<pm
if TempE(i,j)==0
TempE(i,j)=1;
else
TempE(i,j)=0;
end
end
end
end
TempE(Size,:)=BestS;
E=TempE;
end
Max_value=Bestfi
BestS
x1
x2
x3
x4
figure(1);
plot(time,BestJ);
xlabel('Times');ylabel('BestJ');
figure(2);
plot(time,bfi);
xlabel('timeS');ylabel('BestF');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -