人工智能AI 机器人路径问题解读_工业机器人人工智能
人工智能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、读书给人以快乐、给人以光彩、给人以才干。——培根