⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gabpann.asv

📁 这是一个遗传算法的优化软件
💻 ASV
字号:
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=(rnum*hnum+hnum*onum)*lchrom;
%do something
%initial
bestwrh=zeros(rnum,hnum);
bestwho=zeros(hnum,onum);
code=round(rand(codeL,popsize));

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:rnum
        for k=1:1:hnum
            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:hnum
        for k=1:1:onum
            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,k,t)=(wmax-wmin)*par/pamax+wmin;
        end
     end
     obj(t)=bpannobj(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
bpannobj(bestwrh,bestwho,popsize,lchrom,differ,gs);

a_1=subplot(3,1,1);plot(timef,beobj);
set(a_1,'XColor','white','YColor','white');
xlabel('遗传代数');ylabel('最大适应度');

a_2=subplot(3,1,2);plot(time,rin,'r',time,yout,'b');
set(a_2,'XColor','white','YColor','white');
xlabel('时间');ylabel('输入,输出');


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');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -