《2023年人工智能AI 机器人路径问题解读.docx》由会员分享,可在线阅读,更多相关《2023年人工智能AI 机器人路径问题解读.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年人工智能AI 机器人路径问题解读 %人工智能 机器人路径问题 function GoodACARPP123 % n-循环次数 % m-蚂蚁个数 % a-小方格象素的边长 % s-起始点(最短路径的起始点) % e-终止点(最短路径的目的点) % R-路线矩阵 % G-地形图矩阵 % L-路径长度矩阵 % P-选择概率向量 % Q-信息素增强系数 % D-问题节点矩阵 % DD-邻接节点矩阵 % DL-已访问的节点 % DN-待访问的节点 % DT-要访问的节点 % ex-终止点横坐标 % ey-终止点纵坐标 % nn-问题的规模(象素个数) % inf-无穷大(infinite) %
2、 Tau-信息素矩阵 % rou-信息素蒸发系数 % Ant-蚂蚁初始位置 % alpha-表征信息素重要程度的参数 % beta-表征启发式因子重要程度的参数 % Eta-启发因子矩阵(这里设为距离的倒数) % Deltatau-信息素增量矩阵 % Tabootk-禁忌表矩阵(存储并记录第t次循环第k只蚂蚁的已走路径) % 1 % clc clear all close all % %G地形图为01矩阵%1表示障碍物% G=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; 0 1
3、 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 1 1 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0; 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0; 0 0 0 0 0 0 0 0
4、0 0 1 1 1 1 0 0 0 0 0 0; 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0; 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0; 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0; 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0; 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0
5、 0 0 1 1 0; 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; % gm=size(G,1);%求矩阵G的行数% 2 % s=1; a=1; Q=1; m=25; n=50; e=gm*gm; alpha=1; beta=7; rou=0.3 ; mint=0; mink=0; D=G2D(G); mintk=inf; Tau=ones(gm*gm,gm*gm);%初始化信息素矩阵(认为前面
6、的觅食活动中有残留的信息素)% Tau=8.*Tau;%初始化信息素矩阵(认为前面的觅食活动中有残留的信息素)% nn=size(D,1); ex=a*(mod(e,gm)-0.5); if ex=-0.5 ex=gm-0.5; end ey=a*(gm+0.5-ceil(e/gm); ee=ex,ey Eta=zeros(nn); %下面构造启发式信息矩阵% for i=1:nn ix=a*(mod(i,gm)-0.5); if ix=-0.5 ix=gm-0.5; end iy=a*(gm+0.5-ceil(i/gm); if i=e %启发式信息取为当前点至目标点(终点)直线距离的倒数%
7、 Eta(i)=1/(ix-ex)2+(iy-ey)2)0.5; else Eta(i)=100; end end R=cell(n,m);%用细胞结构存储每次循环每只蚂蚁的爬行路线% L=zeros(n,m);%用矩阵存储每次循环每只蚂蚁爬行路线的总长度% %启动t轮蚂蚁觅食活动%每轮派出m只蚂蚁% for t=1:n for k=1:m %第一步:状态初始化% w=s;%当前节点初始化为起始点% Path=s;%爬行路线向量初始化% pathlen=0;%爬行路线长度初始化% Tabootk=ones(nn);%禁忌表初始化% Tabootk(s)=0;%已经在初始点了%因此要排除% DD
8、=D;%邻接矩阵初始化% %第二步:下一步可以前往的节点% DL=DD(w,:); DLF=find(DL); for j=1:length(DLF) if Tabootk(DLF(j)=0 DL(DLF(j)=0; end end DN=find(DL); dnum=length(DN);%可选节点的个数% %觅食停止条件:蚂蚁未遇到食物或者陷入死胡同% while w=e&dnum=1 %第三步:转轮赌法选择下一步怎么走% P=zeros(dnum); for i=1:dnum P(i)=(Tau(w,DN(i)alpha)*(Eta(DN(i)beta); end P=P/sum(P);
9、 Pcum=cumsum(P);%计算累计概率分布% DS=find(Pcum=rand); DT=DN(DS(1); %第四步:状态更新和记录% Path=Path,DT;%路径增加% pathlen=pathlen+DD(w,DT);%路径长度增加% w=DT;%蚂蚁移动到下一个节点% for ki=1:nn if Tabootk(ki)=0 DD(w,ki)=0; DD(ki,w)=0; end end Tabootk(w)=0;%已访问过的节点从禁忌表中删除% DL=DD(w,:); DLF=find(DL); for j=1:length(DLF) if Tabootk(DLF(j)
10、=0 DL(j)=0; end end DN=find(DL); dnum=length(DN);%可选节点的个数 end % 第五步:记下每一代每一只蚂蚁的觅食路线和路线长度 Rt,k=Path; if Path(end)=e L(t,k)=pathlen; if pathlen mint=t; mink=k; mintk=pathlen; end else PL(t,k)=0; end end %第六步:更新信息素% Deltatau=zeros(nn,nn);%信息素更新量初始化% for k=1:m if L(t,k) Route=Rt,k; rnum=length(Route)-1;
11、%跳数% for j=1:rnum x=Route(j); y=Route(j+1); Deltatau(x,y)=Deltatau(x,y)+Q/L(t,k); Deltatau(y,x)=Deltatau(y,x)+Q/L(t,k); end end end Tau=(1-rou).*Tau+Deltatau;%信息素挥发一部分,新增加一部分 end % %绘收敛曲线图% Lenmin=zeros(n); for t=1:n Lt=L(t,:); FLt=find(Lt); LFLt=Lt(FLt); Lenmin(t)=min(LFLt); end figure(1) plot(Lenm
12、in) hold on grid on xlabel(循环次数); ylabel(每次循环后路径长度); title(收敛曲线(最小路径长度与循环次数关系曲线)); % %绘每次循环蚂蚁爬行路线图% figure(2) gm=size(G,1); axis(0,gm,0,gm) for i=1:gm for j=1:gm if G(i,j)=1 x1=j-1;y1=gm-i; x2=j;y2=gm-i; x3=j;y3=gm-i+1; x4=j-1;y4=gm-i+1; fill(x1,x2,x3,x4,y1,y2,y3,y4,0,0,0); hold on else x1=j-1;y1=gm
13、-i; x2=j;y2=gm-i; x3=j;y3=gm-i+1; x4=j-1;y4=gm-i+1; fill(x1,x2,x3,x4,y1,y2,y3,y4,1,1,1); hold on end end end % for t=1:n Lt=L(t,:); minlen=min(Lt); FLt=find(Lt=minlen); k=FLt(1); Route=Rt,k; Rx=Route; Ry=Route; for i=1:length(Route) Rx(i)=a*(mod(Route(i),gm)-0.5); if Rx(i)=-0.5 Rx(i)=gm-0.5; end Ry(
14、i)=a*(gm+0.5-ceil(Route(i)/gm); end plot(Rx,Ry) hold on end % %绘最优爬行路线图% figure(3) gm=size(G,1); axis(0,gm,0,gm) for i=1:gm for j=1:gm if G(i,j)=1 x1=j-1;y1=gm-i; x2=j;y2=gm-i; x3=j;y3=gm-i+1; x4=j-1;y4=gm-i+1; fill(x1,x2,x3,x4,y1,y2,y3,y4,0,0,0);%向左下角画黑色矩形填充% hold on else x1=j-1;y1=gm-i; x2=j;y2=gm
15、-i; x3=j;y3=gm-i+1; x4=j-1;y4=gm-i+1; fill(x1,x2,x3,x4,y1,y2,y3,y4,1,1,1);%向左下角画白色矩形填充% hold on end end end 9 %颜色矩阵R,G,B%1,1,1为白色%0,0,0为黑色% % hold on Route=Rmint,mink; Rx=Route; Ry=Route; for i=1:length(Route) Rx(i)=a*(mod(Route(i),gm)-0.5); if Rx(i)=-0.5 Rx(i)=gm-0.5; end Ry(i)=a*(gm+0.5-ceil(Route
16、(i)/gm); end plot(Rx,Ry) % function D=G2D(G) gm=size(G,1); D=zeros(gm*gm,gm*gm); for i=1:gm for j=1:gm if G(i,j)=0 for ii=1:gm for jj=1:gm if G(ii,jj)=0 im=abs(i-ii);jn=abs(j-jj); if im+jn=1|(im=1&jn=1)%找出G(i,j)上下左右邻近点% D(i-1)*gm+j,(ii-1)*gm+jj)=(im+jn)0.5; end end end end end end end % 读书的好处 1、行万里路
17、,读万卷书。 2、书山有路勤为径,学海无涯苦作舟。 3、读书破万卷,下笔如有神。 4、我所学到的任何有价值的知识都是由自学中得来的。达尔文 5、少壮不努力,老大徒悲伤。 6、黑发不知勤学早,白首方悔读书迟。颜真卿 7、宝剑锋从磨砺出,梅花香自苦寒来。 8、读书要三到:心到、眼到、口到 9、玉不琢、不成器,人不学、不知义。 10、一日无书,百事荒废。陈寿 11、书是人类进步的阶梯。 12、一日不读口生,一日不写手生。 13、我扑在书上,就像饥饿的人扑在面包上。高尔基 14、书到用时方恨少、事非经过不知难。陆游 15、读一本好书,就如同和一个高尚的人在交谈歌德 16、读一切好书,就是和许多高尚的人谈话。笛卡儿 17、学习永远不晚。高尔基 18、少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。刘向 19、学而不思则惘,思而不学则殆。孔子 20、读书给人以快乐、给人以光彩、给人以才干。培根 人工智能AI 机器人路径问题解读 人工智能与机器人 机器人与人工智能 人工智能在机器人领域的应用 推拿机器人诞生:人工智能与中医结合 ”人工智能AI“赏析 人工智能AI老师介绍 智能机器人路径规划及算法研究 金准人工智能 养老机器人产业研究报告 人工智能教学讲座:机器智能
限制150内