资源简介

遗传算法 GA 最优保留 轮盘赌算子、单点交叉算子、位点变异算子 最后绘制最优适应度进化曲线

资源截图

代码片段和文件信息

clc;
%初始化参数
T=100;%仿真代数
N=80;% 群体规模
pm=0.05;pc=0.8;%交叉变异概率
umax=2.048;umin=-2.048;%参数取值范围
L=10;%单个参数字串长度,总编码长度2L
bval=round(rand(N2*L));%初始种群   %%RAND返回0到1的均匀分布随机数
bestv=-inf;%最优适应度初值
%迭代开始
for ii=1:T
%解码,计算适应度
for i=1:N
        y1=0;y2=0;
        for j=1:1:L
           y1=y1+bval(ij)*2^(L-j);
        end
        x1=(umax-umin)*y1/(2^L-1)+umin;
        for j=(L+1):1:2*L
           y2=y2+bval(ij)*2^(2*L-j);
        end
        x2=(umax-umin)*y2/(2^L-1)+umin;
        obj(i)=100*(x1*x1-x2)^2+(1-x1)^2; %目标函数 
        xx(i:)=[x1x2];%用以记录当前x1和x2的值
    end
func=obj;%目标函数转换为适应度函数
p=func/sum(func);
q=cumsum(p);%累加
[fmaxindmax]=max(func);%求当代最佳个体
   if fmax>=bestv
      bestv=fmax;%到目前为止最优适应度值
      bvalxx=bval(indmax:);%到目前为止最佳位串
      optxx=xx(indmax:);%到目前为止最优参数
   end   
   Bfit1(ii)=bestv; % 存储每代的最优适应度
%%%%遗传操作开始
%轮盘赌选择
 for i=1:(N-1)
    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       point=ceil(rand*(2*L-1));%取得一个1到2L-1的整数
       ch=bval(i:);
       bval(ipoint+1:2*L)=bval(i+1point+1:2*L);
       bval(i+1point+1:2*L)=ch(1point+1:2*L);
    end
end   
bval(N:)=bvalxx;%最优保留
%位点变异
mm=rand(N2*L)mm(N:)=zeros(12*L);%最后一行不变异,强制赋0
bval(mm)=1-bval(mm); 
end
%输出
plot(Bfit1‘red‘);% 绘制最优适应度进化曲线
title(‘函数最大值‘);
bestv   %输出最优适应度值
optxx    %输出最优参数

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1679  2012-12-18 22:22  zuiyoubaoliu.m

----------- ---------  ---------- -----  ----

                 1679                    1


评论

共有 条评论