?? gapidann.m
字號(hào):
global yout rin time wrh who
rin=1.0;
a_1=subplot(3,1,1);
set(a_1,'XColor','white','YColor','white');
a_2=subplot(3,1,2);
set(a_2,'XColor','white','YColor','white');
pause(0.1);
if popsize<0
popsize=2;
end
if maxgen<1
maxgen=1;
end
codeL=9*lchrom;
%do something
%initial
bestwrh=zeros(2,3);
bestwho=zeros(3,1);
code=round(rand(codeL,popsize));
itpa=1;
ispa=zeros(1,lchrom);
itpa=num2str(dec2bin(round((itpa+5)*2^lchrom/10-1)));
ispa(lchrom+1-length(itpa):lchrom)=itpa-48;
code(1:lchrom,1)=ispa';
code(2*lchrom+1:3*lchrom,1)=ispa';
itpa=-1;
ispa=zeros(1,lchrom);
itpa=num2str(dec2bin(round((itpa+5)*2^lchrom/10-1)));
ispa(lchrom+1-length(itpa):lchrom)=itpa-48;
code(3*lchrom+1:4*lchrom,1)=ispa';
code(5*lchrom+1:6*lchrom,1)=ispa';
itpa=0.1;
ispa=zeros(1,lchrom);
itpa=num2str(dec2bin(round((itpa+5)*2^lchrom/10-1)));
ispa(lchrom+1-length(itpa):lchrom)=itpa-48;
code(lchrom+1:2*lchrom,1)=ispa';
itpa=1;
ispa=zeros(1,lchrom);
itpa=num2str(dec2bin(round((itpa+5)*2^lchrom/10-1)));
code(6*lchrom+1:7*lchrom,1)=ispa';
code(7*lchrom+1:8*lchrom,1)=ispa';
code(8*lchrom+1:9*lchrom,1)=ispa';
itpa=-0.1;
ispa=zeros(1,lchrom);
itpa=num2str(dec2bin(round((itpa+5)*2^lchrom/10-1)));
ispa(lchrom+1-length(itpa):lchrom)=itpa-48;
code(4*lchrom+1:5*lchrom,1)=ispa';
bestobj=0;
wmin=-10;
wmax=10;
pamax=2^lchrom-1;
for i=1:1:maxgen
timef(i)=i;
%select save cross num to indexobj
for t=1:1:popsize
kk=0;
for j=1:1:2
for k=1:1:3
ch=code(lchrom*kk+1:lchrom*(kk+1),t)';
kk=kk+1;
par=0;
for h=1:1:lchrom
par=par+ch(h)*2^(h-1);
end
wrh(j,k,t)=(wmax-wmin)*par/pamax+wmin;
end
end
for j=1:1:3
ch=code(lchrom*kk+1:lchrom*(kk+1),t)';
kk=kk+1;
par=0;
for h=1:1:lchrom
par=par+ch(h)*2^(h-1);
end
who(j,t)=(wmax-wmin)*par/pamax+wmin;
end
obj(t)=pidannobj(wrh(:,:,t),who(:,t),popsize,lchrom,differ,gs);
end
[orderobj,indexobj]=sort(obj);
if(bestobj<obj(indexobj(popsize)))
bestobj=obj(indexobj(popsize));
bestwrh=wrh(:,:,indexobj(popsize));
bestwho=who(:,indexobj(popsize));
end;
beobj(i)=bestobj;
obj_sum=sum(obj);
for j=1:1:popsize
select_rand=rand;
select_p=0;
k=0;
while select_rand>select_p
k=k+1;
select_p=select_p+obj(k)/obj_sum;
end
cindex(j)=k;
end
%cross
tempcode=code(:,cindex);
for j=1:2:popsize-1
cross_rand=rand;
n=ceil(codeL*rand);
if cross_rand<pcross
tempcode(n:codeL,j)=code(n:codeL,cindex(j+1));
tempcode(n:codeL,j+1)=code(n:codeL,cindex(j));
end
end
%mutate
for j=1:1:popsize
for k=1:1:codeL
mumate_rand=rand;
if pmutate>mumate_rand %Mutation Condition
if tempcode(k,j)==0
tempcode(k,j)=1;
else
tempcode(k,j)=0;
end
end
end
end
code=tempcode;
end
pidannobj(bestwrh,bestwho,popsize,lchrom,differ,gs);
a_1=subplot(3,1,1);plot(timef,beobj);
set(a_1,'XColor','white','YColor','white');
xlabel('遺傳代數(shù)');ylabel('最大適應(yīng)度');
a_2=subplot(3,1,2);plot(time,rin,'r',time,yout,'b');
set(a_2,'XColor','white','YColor','white');
xlabel('時(shí)間(周期)');ylabel('輸入(紅),輸出(藍(lán))');
t_s3 = uicontrol( 'Style','text','Position',[0.05 0.3 0.15 0.04],'String','wrh',...
'BackgroundColor',[0.3 0.3 0.3], 'ForegroundColor','white');
t_s8 = uicontrol( 'Style','text','Position',[0.21 0.3 0.6 0.04],'String',mat2str(bestwrh),...
'BackgroundColor',[0.3 0.3 0.3], 'ForegroundColor','white');
t_s3 = uicontrol( 'Style','text','Position',[0.05 0.2 0.15 0.04],'String','who',...
'BackgroundColor',[0.3 0.3 0.3], 'ForegroundColor','white');
t_s8 = uicontrol( 'Style','text','Position',[0.21 0.2 0.6 0.04],'String',mat2str(bestwho),...
'BackgroundColor',[0.3 0.3 0.3], 'ForegroundColor','white');
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -