人工智能AI 机器人路径问题解读_工业机器人人工智能

2020-02-28 其他范文 下载本文

人工智能AI 机器人路径问题解读由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“工业机器人人工智能”。

%%人工智能 机器人路径问题 function GoodACARPP123 %% n--循环次数 %% m--蚂蚁个数 %% a--小方格象素的边长 %% s--起始点(最短路径的起始点)%% e--终止点(最短路径的目的点)%% R--路线矩阵 %% G--地形图矩阵 %% L--路径长度矩阵 %% P--选择概率向量 %% Q--信息素增强系数 %% D--问题节点矩阵 %% DD--邻接节点矩阵 %% DL--已访问的节点 %% DN--待访问的节点 %% DT--要访问的节点 %% ex--终止点横坐标 %% ey--终止点纵坐标 %% nn--问题的规模(象素个数)%% inf--无穷大(infinite)%% Tau--信息素矩阵 %% rou--信息素蒸发系数 %% Ant--蚂蚁初始位置

%% alpha--表征信息素重要程度的参数 %% beta--表征启发式因子重要程度的参数 %% Eta--启发因子矩阵(这里设为距离的倒数)%% Deltatau--信息素增量矩阵

%% Tabootk--禁忌表矩阵(存储并记录第t次循环第k只蚂蚁的已走路径)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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 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 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 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的行数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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);%%初始化信息素矩阵(认为前面的觅食活动中有残留的信息素)%% 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

%启发式信息取为当前点至目标点(终点)直线距离的倒数%%

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=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);

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))==0

DL(j)=0;

end

end

DN=find(DL);

dnum=length(DN);%可选节点的个数

end

%% 第五步:记下每一代每一只蚂蚁的觅食路线和路线长度

R{t,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=R{t,k};

rnum=length(Route)-1;%%跳数%%

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(Lenmin)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-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=R{t,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(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-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 %%颜色矩阵[R,G,B]%%[1,1,1]为白色%%[0,0,0]为黑色%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hold on Route=R{mint,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(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、行万里路,读万卷书。

2、书山有路勤为径,学海无涯苦作舟。

3、读书破万卷,下笔如有神。

4、我所学到的任何有价值的知识都是由自学中得来的。——达尔文

5、少壮不努力,老大徒悲伤。

6、黑发不知勤学早,白首方悔读书迟。——颜真卿

7、宝剑锋从磨砺出,梅花香自苦寒来。

8、读书要三到:心到、眼到、口到

9、玉不琢、不成器,人不学、不知义。

10、一日无书,百事荒废。——陈寿

11、书是人类进步的阶梯。

12、一日不读口生,一日不写手生。

13、我扑在书上,就像饥饿的人扑在面包上。——高尔基

14、书到用时方恨少、事非经过不知难。——陆游

15、读一本好书,就如同和一个高尚的人在交谈——歌德

16、读一切好书,就是和许多高尚的人谈话。——笛卡儿

17、学习永远不晚。——高尔基

18、少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。——刘向

19、学而不思则惘,思而不学则殆。——孔子

20、读书给人以快乐、给人以光彩、给人以才干。——培根

《人工智能AI 机器人路径问题解读.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
人工智能AI 机器人路径问题解读
点击下载文档
相关专题 工业机器人人工智能 人工智能 机器人 路径 工业机器人人工智能 人工智能 机器人 路径
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文