资源简介
这是找到的开源的很不错的matlba蚁群算法的仿真代码。经验证,可以很不错的实现蚁群算法的路径规划和避障的仿真实验,可借鉴并运用在机器人上。感谢开源作者。分享给大家,一起学习。
代码片段和文件信息
function main()
map=[0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0;
0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0;
0 1 1 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 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 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0;
0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0;
0 1 1 1 0 0 1 1 0 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 1 1 1 1 1 0 0 0 0 0 0;
0 0 0 0 0 0 0 1 1 1 1 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 1 1 0;
0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0;
1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0;
1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0;
0 0 0 0 0 0 0 0 0 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 0 0 0;
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0;];
Map_Size=size(map1); % map 地形图为01矩阵,如果为1表示障碍物
Phe_Mat =ones(Map_Size*Map_SizeMap_Size*Map_Size); % Phe_Mat 初始信息素矩阵
Phe_Mat=8.*Phe_Mat;
%..........................
diedai_num=100; %迭代次数(指蚂蚁出动多少波)
ant_num=50; %蚂蚁个数
min_start=1 ; %最短路径的起始点
Map_Size_pow2=Map_Size*Map_Size; %最短路径的目的点
Alpha_infoimpor=1; % Alpha_infoimpor 表征信息素重要程度的参数
Alpha_qifa=7; % Alpha_qifa 表征启发式因子重要程度的参数
Alpha_zhenfa=0.3 ; % Alpha_zhenfa 信息素蒸发系数
Alpha_add=1; % Alpha_add 信息素增加强度系数
%...................................
minkl=inf; %正无穷
mink=0;
minl=0;
queMap=G2D(map);
queMap_size=size(queMap1); %queMap_size表示问题的规模(象素个数)
a=1; %小方格象素的边长
End_x=a*(mod(Map_Size_pow2Map_Size)-0.5); %终止点横坐标
if End_x==-0.5
End_x=Map_Size-0.5;
end
%....................
End_y=a*(Map_Size+0.5-ceil(Map_Size_pow2/Map_Size)); %终止点纵坐标
%..........................................
qifa_info=zeros(queMap_size); %启发式信息,取为至目标点的直线距离的倒数
%以下启发式信息矩阵
for i=1:queMap_size
ix=a*(mod(iMap_Size)-0.5);
if ix==-0.5
ix=Map_Size-0.5;
end
iy=a*(Map_Size+0.5-ceil(i/Map_Size));
if i~=Map_Size_pow2
qifa_info(i)=1/((ix-End_x)^2+(iy-End_y)^2)^0.5;
else
qifa_info(i)=100;
end
end
%................................
per_g_ant_path=cell(diedai_numant_num); %用细胞结构存储每一代的每一只蚂蚁的爬行路线
per_g_perant_pathlong=zeros(diedai_numant_num); %用矩阵存储每一代的每一只蚂蚁的爬行路线长度
%启动diedai_num轮蚂蚁觅食活动,每轮派出ant_num只蚂蚁
for diedai_item=1:diedai_num
for ant_item=1:ant_num
%状态初始化
W=min_start; %当前节点初始化为起始点
Path=min_start; %爬行路线初始化
PLkm=0; %爬行路线长度初始化
TABUkm=ones(queMap_size); %禁忌表初始化
TABUkm(min_start)=0
相关资源
- 光伏电池阵列matlab模型
- matlab算法——计算三维散乱点云的曲
- 潮流计算matlab程序
- matlab环境下光伏电池典型模型光照变
- 拉丁超立方体抽样matlab
- 朴素贝叶斯分类器MATLAB源代码
- 《MATLAB 7.0从入门到精通》书中源代码
-
无人车轨迹跟踪控制的MATLAB/Simuli
- 通信原理基于matlab的计算机仿真_源代
- 基于Matlab的导线网平差程序设计
- 基于matlab的fir滤波器设计
- 超详细的ORB解读.md
- 数字信号处理 基于MATLAB 的语音处理
- matlab提取图像HSV特征
- 直接转矩控制 matlab仿真模型
- MATLAB GUI串口程序 实现16进制收发
- FIR低通滤波器+matlab程序
- 三相电压型逆变电路MATLAB仿真报告
- 基于SVPWM的三电平逆变的matlab 仿真模
- 经典GNSS卫星导航程序.rar
- matlab中cplex和yalmip新手指南
- 聚类有效性评价计算 MATLAB编写
- matlab的卡方拟合检验
- 光伏电池板 pv matlab模型
- matlab音频读写,录制与播放
- 数值计算实验报告matlab版
- 基于MATLAB的canny算子
- 基于小波变换的图像去噪的matlab程序
- Dijkstra、Floyd算法MatlabLingo实现
- matlab指纹识别带GUI
评论
共有 条评论