人工智能AI 机器人路径问题解读.docx

上传人:b****5 文档编号:8522974 上传时间:2023-01-31 格式:DOCX 页数:12 大小:17.60KB
下载 相关 举报
人工智能AI 机器人路径问题解读.docx_第1页
第1页 / 共12页
人工智能AI 机器人路径问题解读.docx_第2页
第2页 / 共12页
人工智能AI 机器人路径问题解读.docx_第3页
第3页 / 共12页
人工智能AI 机器人路径问题解读.docx_第4页
第4页 / 共12页
人工智能AI 机器人路径问题解读.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

人工智能AI 机器人路径问题解读.docx

《人工智能AI 机器人路径问题解读.docx》由会员分享,可在线阅读,更多相关《人工智能AI 机器人路径问题解读.docx(12页珍藏版)》请在冰豆网上搜索。

人工智能AI 机器人路径问题解读.docx

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

%%人工智能机器人路径问题

functionGoodACARPP123

%%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

clearall

closeall

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%G地形图为01矩阵%%1表示障碍物%%

G=[00000000000000000000;

01100000000000000000;

01100011100000000000;

00000011100000000000;

00000011100000000000;

01110011100000000000;

01110011100000000000;

01110011101111000000;

01110000001111000000;

00000000001111000000;

00000001101111000000;

00000001100000000000;

00000000000111011110;

00000000000111011110;

00110000000111011110;

00110011100000000000;

00000011101100000110;

00000000001100100110;

00000000000000100000;

00000000000000000000];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

ifex==-0.5

ex=gm-0.5;

end

ey=a*(gm+0.5-ceil(e/gm));

ee=[ex,ey]

Eta=zeros(nn);

%%下面构造启发式信息矩阵%%

fori=1:

nn

ix=a*(mod(i,gm)-0.5);

ifix==-0.5

ix=gm-0.5;

end

iy=a*(gm+0.5-ceil(i/gm));

ifi~=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只蚂蚁%%

fort=1:

n

fork=1:

m

%%第一步:

状态初始化%%

w=s;%%当前节点初始化为起始点%%

Path=s;%%爬行路线向量初始化%%

pathlen=0;%%爬行路线长度初始化%%

Tabootk=ones(nn);%%禁忌表初始化%%

Tabootk(s)=0;%%已经在初始点了%%因此要排除%%

DD=D;%%邻接矩阵初始化%%

%%第二步:

下一步可以前往的节点%%

DL=DD(w,:

);

DLF=find(DL);

forj=1:

length(DLF)

ifTabootk(DLF(j))==0

DL(DLF(j))=0;

end

end

DN=find(DL);

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

%%觅食停止条件:

蚂蚁未遇到食物或者陷入死胡同%%

whilew~=e&&dnum>=1

%%第三步:

转轮赌法选择下一步怎么走%%

P=zeros(dnum);

fori=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;%%蚂蚁移动到下一个节点%%

forki=1:

nn

ifTabootk(ki)==0

DD(w,ki)=0;

DD(ki,w)=0;

end

end

Tabootk(w)=0;%%已访问过的节点从禁忌表中删除%%

DL=DD(w,:

);

DLF=find(DL);

forj=1:

length(DLF)

ifTabootk(DLF(j))==0

DL(j)=0;

end

end

DN=find(DL);

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

end

%%第五步:

记下每一代每一只蚂蚁的觅食路线和路线长度

R{t,k}=Path;

ifPath(end)==e

L(t,k)=pathlen;

ifpathlen

mint=t;

mink=k;

mintk=pathlen;

end

else

PL(t,k)=0;

end

end

%%第六步:

更新信息素%%

Deltatau=zeros(nn,nn);%%信息素更新量初始化%%

fork=1:

m

ifL(t,k)

Route=R{t,k};

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

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

fort=1:

n

Lt=L(t,:

);

FLt=find(Lt);

LFLt=Lt(FLt);

Lenmin(t)=min(LFLt);

end

figure

(1)

plot(Lenmin)

holdon

gridon

xlabel('循环次数');

ylabel('每次循环后路径长度');

title('收敛曲线(最小路径长度与循环次数关系曲线)');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%绘每次循环蚂蚁爬行路线图%%

figure

(2)

gm=size(G,1);

axis([0,gm,0,gm])

fori=1:

gm

forj=1:

gm

ifG(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]);

holdon

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

holdon

end

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

fort=1:

n

Lt=L(t,:

);

minlen=min(Lt);

FLt=find(Lt==minlen);

k=FLt

(1);

Route=R{t,k};

Rx=Route;

Ry=Route;

fori=1:

length(Route)

Rx(i)=a*(mod(Route(i),gm)-0.5);

ifRx(i)==-0.5

Rx(i)=gm-0.5;

end

Ry(i)=a*(gm+0.5-ceil(Route(i)/gm));

end

plot(Rx,Ry)

holdon

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%绘最优爬行路线图%%

figure(3)

gm=size(G,1);

axis([0,gm,0,gm])

fori=1:

gm

forj=1:

gm

ifG(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]);%%向左下角画黑色矩形填充%%

holdon

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]);%%向左下角画白色矩形填充%%

holdon

end

end

end

%%颜色矩阵[R,G,B]%%[1,1,1]为白色%%[0,0,0]为黑色%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

holdon

Route=R{mint,mink};

Rx=Route;

Ry=Route;

fori=1:

length(Route)

Rx(i)=a*(mod(Route(i),gm)-0.5);

ifRx(i)==-0.5

Rx(i)=gm-0.5;

end

Ry(i)=a*(gm+0.5-ceil(Route(i)/gm));

end

plot(Rx,Ry)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

functionD=G2D(G)

gm=size(G,1);

D=zeros(gm*gm,gm*gm);

fori=1:

gm

forj=1:

gm

ifG(i,j)==0

forii=1:

gm

forjj=1:

gm

ifG(ii,jj)==0

im=abs(i-ii);jn=abs(j-jj);

ifim+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、读书给人以快乐、给人以光彩、给人以才干。

——培根

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1