• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Matlab
  • 标签: ga  

资源简介

利用遗传算法求Rosenbrock函数的极大值

资源截图

代码片段和文件信息

function [ output_args ] = Untitled1( input_args )
%UNtitleD1 Summary of this function goes here
%  Detailed explanation goes here
clear all;
close all;
 Size=500;
 CodeL=2;
 
 MinX(1)=-2.048;
 MaxX(1)=2.048;
 MinX(2)=-2.048;
 MaxX(2)=2.048;
 
 E(:1)=MinX(1)+(MaxX(1)-MinX(1))*rand(Size1);
 E(:2)=MinX(2)+(MaxX(2)-MinX(2))*rand(Size1);
 
 G=200;
 BsJ=0;
 
 %---------------Start Running--------------------------------------------%
 for kg=1:G
     time(kg)=kg;
     
     %----------------------step 1: Evaluate BestJ-----------------------%
     for i=1:Size;
         xi=E(i:);
         x1=xi(1);
         x2=xi(2);
         
         F(i)=100*(x1^2-x2)^2+(1-x1)^2;
         Ji=1./F;
         BsJi(i)=min(Ji);
     end
     [OderJiIndexJi]=sort(BsJi);
     BestJ(kg)=OderJi(1);
     BJ=BestJ(kg);
     Ji=BsJi+eps;%Avoiding deviding zero
     
     fi=F;
     [OderfiIndexfi]=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 belongs to max(fi)
     bfi(kg)=Bestfi;
     
     kg
     BestS
     %---------------------------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
     r=Size-sum(fi_S);
     
     Rest=fi_Size-fi_S;
  

评论

共有 条评论