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

📄 ymsga.m

📁 规则障碍物环境下的机器人路径规划matlab源码!
💻 M
字号:
function [Best,Gen,BestF,AvrF,gen,pt]=ymSGA(m,n,g,op_pre,MM,d,Xlu,O,C,P,a,b,c)
[n1,n2]=size(Xlu);
%Best=ones(1,n1+1);
%a=.2;
% BestF=zeros();   %各代的最优的适应值
% AvrF=zeros();    %各代适应值的平均值
% Best=[];    %最优个体
% gen=0;  %寻得最优个体的代数
% Gen=0;  %算法收敛代数
% t=0;
%种群的初始化

P=rejudge(P,d,n,O,Xlu,C);
P=refresh(P,d);
Best=P(1,:);
Best=ymfitness1(Best);
         %进化操作
         I=20;
         
         %知识的大小
         %a=0.4;%每代提取百分比
        
         %b=0.3;
         
   for i=1:g
    P=ymfitness1(P);          %适应值即为目标值
    [Fmx,Fs]=min(P(:,1));
    BestF(i)=Fmx;
    AvrF(i)=mean(P(:,1));
        if Fmx<Best(:,1)
          Best=P(Fs,:);
          gen=i;
          end    
    newP1=ymLS_selector(P,m);
    newP2=ymcrossover(newP1,m,n,Xlu);
    newP2=refresh(newP2,d);
  
    newP2=ymfitness1(newP2);
    newP2=updown(newP2,a);
    
    if mod(i,c)==0
        for k=1:m*b
        person(k,:)=replace(BesT,d,m,n,MM,O,Xlu,pt);
        end
        pn=xutubiao(person,d);
        newP2(m-m*b:m-1,:)=pn;
    else
    newP3=ymmutation(newP2,m,n,d,Xlu,O);
    end
    newP3=rejudge(newP3,d,n,O,Xlu,C);
    P=newP3;
    P=refresh(P,d);
    [P,P0]=updown(P,a);
    if i<=ceil(I/(m*a))
      BesT((i-1)*m*a+1:(i-1)*m*a+m*a,:)=P0;
     [v1,v2]=size(BesT);
      if v1>I
       BesT=updown(BesT,a);
       BesT=BesT(1:I,:);
      end
    else
        BesT(I+1:I+m*a,:)=P0;
        BesT=updown(BesT,a);
       BesT=BesT(1:I,:);
    end
   if mod(i,2)==0
        pt(i/2,:)=finder(BesT,d);
   end
     P(m,:)=Best;        %最优个体保留
    if i>=5
%       if abs(AvrF(i)-AvrF(i-1))<op_pre&abs(AvrF(i-2)-AvrF(i-1))<op_pre
       if abs(Best(1,1)-AvrF(i))<op_pre
        Gen=i;
        break
      end 
   end
end
if i==g
    fprintf('达到最大进化代数')
    Gen=i;
%     gen=i;
end

⌨️ 快捷键说明

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