基于改进遗传算法的路径规划MATLAB实现.docx

基于改进遗传算法的路径规划MATLAB实现.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
鉴于遗传算法的路径规划MATLAB实现 主程序: clearall; closeall; t=23;%过程点个数=t-1 s=500;%种群规模 pc=0.90;%交错概率 pm=0.20;%变异概率 pop=zeros(s,t); fori=1:s pop(i,1:t-1)=randperm(t-1); end fork=1:1:2000%进化代次数k ifmod(k,10)==1 k end pop=lujingdis(pop); c=15;%选择淘汰个数 pop=lujingselect(pop,c); p=rand; ifp>=pc pop=lujingcross(pop); end ifp>=pm pop=lujingmutate(pop); End end pop min(pop(:,t)) J=pop(:,t); fi=1./J; [Oderfi,Indexfi]=sort(fi);%安排fi从小到大 BestS=pop(Indexfi(s),:);%使BestS=E(m),m即是属于 I=BestS;  max(fi)的  Indexfi x=[23610141722202325302825212916181591165];y=[526142927242822263030171315413316227];%过程点坐标 x=[12346911108964];%12个过程点的坐标 y=[12348101195212]; fori=1:1:t-1 x1(i)=x(I(i)); y1(i)=y(I(i)); end x(t)=x(I(1)); y(t)=y(I(1)); 栅格 %a=[1111111111 1110011100 1010011111 0011110110 1111111111 1111111111 1001101111 1111111110 1111111111 0111110011];%11*11栅格 b=a; b(end+1,end+1)=0; colormap([000;111]),pcolor(b) axisimagexy;%绘制栅格图 holdon; figure(1); plot(x,y,'-or'); 适应度函数程序:lujingdis.m function[pop]=qiujuli(pop) [s,t]=size(pop); fori=1:1:s dd=0; forj=1:1:t-2 dd=dd+lujingcalculate(pop(i,j),pop(i,j+1)); end pop(i,t)=dd; End 距离计算程序:lujingcalculate.m function[d]=juli(m,n) x=[23610141722202325302825212916181591165];y=[526142927242822263030171315413316227];%x=[12346911108964]; y=[12348101195212];d=sqrt((x(m)-x(n))^2+(y(m)-y(n))^2); 选择算子程序:lujingselect.m function[pop]=select(pop,k) [s,t]=size(pop); m11=(pop(:,t)); m11=m11'; mmax=zeros(1,k); mmin=zeros(1,k); num=1; whilenum<k+1 [a,mmax(num)]=max(m11); m11(mmax(num))=a; num=num+1; end num=1; whilenum<k+1 [b,mmin(num)]=min(m11); m11(mmin(num))=a; num=num+1; end fori=1:k pop(mmax(i),:)=pop(mmin(i),:); End 交错算子程序:lujingcross.m function[pop]=cross(pop) [s,t]=size(pop); pop1=pop; fori=1:2:s m=randperm(t-3)+1; crosspoint(1)=min(m(1),m(2)); crosspoint(2)=max(m(1),m(2)); forj=1:crosspoint(1) whilefind(pop(i,crosspoint(1)+1:crosspoint(2))==pop(i,j))zhi=find(pop(i,crosspoint(1)+1:crosspoint(2))==pop(i,j));y=pop(i+1,crosspoint(1)+zhi); pop(i,j)=y; end end forj=crosspoint(2)+1:

文档评论(0)

182****7876 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档