- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下面的程序是蚁群算法在最短路中的应用,稍加扩展即可应用于机器人路径规划
function [ROUTES,PL,Tau]=ACASP(G,Tau,K,M,S,E,Alpha,Beta,Rho,Q)%% ---------------------------------------------------------------%? ACASP.m%? 蚁群算法动态寻路算法%? ChengAihua,PLA Information Engineering University,ZhengZhou,China%? Email:aihuacheng@%? All rights reserved%% ---------------------------------------------------------------%? 输入参数列表%? G??????? 地形图为01矩阵,如果为1表示障碍物%? Tau????? 初始信息素矩阵(认为前面的觅食活动中有残留的信息素)%? K??????? 迭代次数(指蚂蚁出动多少波)%? M??????? 蚂蚁个数(每一波蚂蚁有多少个)%? S??????? 起始点(最短路径的起始点)%? E??????? 终止点(最短路径的目的点)%? Alpha??? 表征信息素重要程度的参数%? Beta???? 表征启发式因子重要程度的参数%? Rho????? 信息素蒸发系数%? Q??????? 信息素增加强度系数%%? 输出参数列表%? ROUTES?? 每一代的每一只蚂蚁的爬行路线%? PL?????? 每一代的每一只蚂蚁的爬行路线长度%? Tau????? 输出动态修正过的信息素
%% --------------------变量初始化----------------------------------%loadD=G2D(G);N=size(D,1);%N表示问题的规模(象素个数)MM=size(G,1);a=1;%小方格象素的边长Ex=a*(mod(E,MM)-0.5);%终止点横坐标if Ex==-0.5??? Ex=MM-0.5;endEy=a*(MM+0.5-ceil(E/MM));%终止点纵坐标Eta=zeros(1,N);%启发式信息,取为至目标点的直线距离的倒数%下面构造启发式信息矩阵for i=1:N????if ix==-0.5??????? ix=MM-0.5;??? end??? iy=a*(MM+0.5-ceil(i/MM));?????? if i~=E??????? Eta(1,i)=1/((ix-Ex)^2+(iy-Ey)^2)^0.5;??? else??????? Eta(1,i)=100;??? endendROUTES=cell(K,M);%用细胞结构存储每一代的每一只蚂蚁的爬行路线PL=zeros(K,M);%用矩阵存储每一代的每一只蚂蚁的爬行路线长度%% -----------启动K轮蚂蚁觅食活动,每轮派出M只蚂蚁--------------------for k=1:K??? disp(k);??? for m=1:M%%???? 第一步:状态初始化??????? W=S;%当前节点初始化为起始点??????? Path=S;%爬行路线初始化??????? PLkm=0;%爬行路线长度初始化??????? TABUkm=ones(1,N);%禁忌表初始化??????? TABUkm(S)=0;%已经在初始点了,因此要排除??????? DD=D;%邻接矩阵初始化%%???? 第二步:下一步可以前往的节点??????? DW=DD(W,:);??????? DW1=find(DW??????? for j=1:length(DW1)??????????? if TABUkm(DW1(j))==0??????????????? DW(j)=inf;??????????? end??????? end??????? LJD=find(DW??????? Len_LJD=length(LJD);%可选节点的个数%%???? 觅食停止条件:蚂蚁未遇到食物或者陷入死胡同??????? while W~=ELen_LJD=1%%???????? 第三步:转轮赌法选择下一步怎么走??????????? PP=zeros(1,Len_LJD);??????????? for i=1:Len_LJD??????????????? PP(i)=(Tau(W,LJD(i))^Alpha)*(Eta(LJD(i))^B
文档评论(0)