遗传算法


遗传算法_第1张图片
遗传算法_第2张图片

% GA_zuiyou 
clc;clear
x=-1:0.01:2;
y=2+x.*sin(10*pi*x); 
plot(x,y,'LineWidth',1.5);
hold on 
%初始化参数 
T=100;%仿真代数 
N=10;% 群体规模 
pc=0.8;pm=0.05;%交叉变异概率 
umax=2;umin=-1;%参数取值范围 
L=12;%单个参数字串长度,总编码长度 L 
bval=round(rand(N,L)); %生成初始种群
bestv=-inf;%最优适应度初值 %迭代开始 
for ii=1:T 
    %解码,计算适应度 
    for i=1:N         
        y1=0;         
        for j=1:1:L            
            y1=y1+bval(i,L-j+1)*2^(j-1);         
        end
        x=(umax-umin)*y1/(2^L-1)+umin; %二进制变十进制        
        obj(i)=2+x.*sin(10*pi*x);         
        xx(i,:)=x;         
        plot(x,obj(i),'k*');
        hold on 
    end
    func=obj;%目标函数转换为适应度函数 
    p=func./sum(func); 
    q=cumsum(p); 
    [fmax,indmax]=max(func);%求当代最佳个体    
    if fmax>=bestv       
        bestv=fmax;%到目前为止最优适应度值       
        bvalxx=bval(indmax,:);%到目前为止最佳位串       
        optxx=xx(indmax);    
    end
    Best(ii)=fmax;    
    Bfit1(ii)=bestv; % 存储代的最优适应度
    %%%%遗传操作开始 %轮盘赌选择  
    for i=1:N     
        r=rand;     
        tmp=find(r<=q);    
        newbval(i,:)=bval(tmp(1),:);  
    end
    newbval(N,:)=bvalxx;%最优保留   
    bval=newbval; 
    %单点交叉 
    for i=1:2:(N-1)    
        cc=rand;    
        if cc

遗传算法_第3张图片
遗传算法_第4张图片

你可能感兴趣的:(优化算法)