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

📄 ga_basicprogram.m

📁 基本遗传算法(GA)的matlab源程序!许多改进的遗传算法均可在此基础上修改而成.
💻 M
字号:

%This  is basic program about genetic algorithm.

%Parameters
size=80;        
G=100;
codel=10;
umax=2.048;
umin=-2.048;

E=round(rand(size,2*codel));    %Initial Code



%main pogram
for k=1:1:G
    time(k)=k;
    for s=1:1:size
       m=E(s,:);
       y1=0;y2=0;
       
       %uncoding
       m1=m(1:1:codel);
       for i=1:1:codel
          y1=y1+m1(i)*2^(i-1); 
       end
       x1=(umax-umin)*y1/1023+umin;
       m2=m(codel+1:1:2*codel);
       for i=1:1:codel
          y2=y2+m2(i)*2^(i-1);
          
       end
       x2=(umax-umin)*y2/1023+umin;
       F(s)=100*(x1^2-x2)^2+(1-x1)^2; %Fitness Function
    end
    
    Ji=1./F;
    %----------step 1
    BestJ(k)=min(Ji);
    fi=F;
    [oderfi,indexfi]=sort(fi);%Arranging fi small to bigger
    Bestfi=oderfi(size);    %Let Bestfi=max(fi)
    BestS=E(indexfi(size),:);%Let BestS=E(m),m is the Indexfi belong to max(fi)
    bfi(k)=Bestfi;
    
    %*********** step 2 :Select and Reproduct Operation----------------
    fi_sum=sum(fi);
    fi_size=(oderfi/fi_sum)*size;
    
    fi_S=floor(fi_size);        %Selecting Bigger fi value
    
    kk=1;
    for i=1:1:size
        for u=1:1:fi_S(i)          %Select and Reproduce
           TempE(kk,:)=E(indexfi(i),:);
           kk=kk+1;                 %kk is used to reproduce
        end
    end
    
    %********** step 3 :Crossover Operation---------------------
    
    pc=0.60;
    n=ceil(20*rand);
    for i=1:2:(size-1)
       temp=rand;
       if pc>temp
           for u=n:1:20
              TempE(i,u)=E(i+1,u);
              TempE(i+1,u)=E(i,u);
           end
       end
    end
    TempE(size,:)=BestS;
    E=TempE;
    
    %*************** step 4 :Mutation Operation ------------------
    
    pm=0.1;
    for i=1:1:size
       for u=1:1:2*codel
          temp=rand;    
          if pm>temp
             if TempE(i,u)==0
                TempE(i,u)=1;
             else
                 TempE(i,u)=0;
             end
          end
       end
    end
    
    %***************************************************
    TempE(size,:)=BestS;    %Save the best individual
    E=TempE;
    
    
end

max_value=Bestfi
BestS
x1
x2
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 + -