- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于蚁群算法的机器人路径规划
说明: 基于蚁群算法的机器人路径规划,使用网格离散化的方法对带有障碍物的环境
建模,使用邻接矩阵存储该环境,使得问题转化为蚁群算法寻找最短路径。
使用网格离散化的方法对带有障碍物的环境建模, 使用邻接矩阵存储该环境, 使得问题转化
为蚁群算法寻找最短路径。
% ACASP.m
% 蚁群算法动态寻路算法
% GreenSim 团队原创作品,转载请注明
% Email:greensim@163.com
%%
% 输入参数列表
% G 地形图为 01 矩阵,如果为 1 表示障碍物
% Tau 初始信息素矩阵(认为前面的觅食活动中有残留的信息素)
% K 迭代次数(指蚂蚁出动多少波)
% M 蚂蚁个数(每一波蚂蚁有多少个)
% S 起始点(最短路径的起始点)
% E 终止点(最短路径的目的点)
% Alpha 表征信息素重要程度的参数
% Beta 表征启发式因子重要程度的参数
% Rho 信息素蒸发系数
% Q 信息素增加强度系数
%
% 输出参数列表
% ROUTES 每一代的每一只蚂蚁的爬行路线
% PL 每一代的每一只蚂蚁的爬行路线长度
% Tau 输出动态修正过的信息素
%% 变量初始化
%load
D=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;
end
Ey=a*(MM+0.5-ceil(E/MM));% 终止点纵坐标
Eta=zeros(1,N);% 启发式信息,取为至目标点的直线距离的倒数
%下面构造启发式信息矩阵
for i=1:N
ix=a*(mod(i,MM)-0.5);
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;
end
end
ROUTES=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(S)=0;% 已经在初始点了,因此要排除
DD=D;% 邻接矩阵初始化
%% 第二步:下一步可以前往的节点
DW=DD(W,:);
DW1=find(DW<INF);
for j=1:length(DW1)
if TABUkm(DW1(j))==0
end
end
LJD=find(DW<INF);% 可选节点集
Len_LJD=length(LJD);% 可选节点的个数
%% 觅食停止条件:蚂蚁未遇到食物或者陷入死胡同
while W~=E&&Len_LJD>=1
%% 第三步:转轮赌法选择下一步怎么走
PP=zeros(1,Len_LJD);
for i=1:Len_LJD
end
PP=PP/(sum(PP));% 建立概率分布
Pcum=cumsum(PP);
Select=find(Pcum>=rand);
to_visit=LJD(Select(1));% 下一步将要前往的节点
%% 第四步:状态更新和记录
Path=[Path,to_visit];% 路径增加
PLkm=PLkm+DD(W,to_visit);% 路径长度增加
W=to_visit;% 蚂蚁移到下一个节点
f
文档评论(0)