1 简介

随着经济的持续发展和科学技术的进步,人类的各种需求日益增长,人们越来越体会到日常生活中的交通拥堵与出行的不便。尤其当各种灾害事故发生时,如何在最短的时间内找到最优化的路径,并将受影响区域的人员快速疏散到安全区域成为当前的研究热点,其中最关键的是路径规划问题。近些年来,国内外专家学者对于路径规划问题的研究越来越深入,并广泛应用于旅行商问题、机器人路径规划、车辆路径规划问题、灾后应急疏散等领域。在初期进行路径规划时,人们通常求解两点之间的最优路径,然而在现实生活中,道路网络更加复杂,道路情况更加多变,路径规划问题的种类也更多,为了更好的模拟现实,需要考虑从多个起点到多个目标点的路径规划,由此引入了多源多汇路径规划的概念。路径规划问题能否有效解决的关键在于算法的设计,蚁群算法因其自身具有的系统性、鲁棒性、正反馈性等特点,成为解决路径规划问题的有效方法。因此,论文对蚁群算法在路径规划问题中的应用着重进行了研究,重点完成了基于蚁群算法的单源最短路径问题,探索了蚁群算法用来解决多源多汇路径规划问题的可行性,并且通过进行仿真实验验证蚁群算法解决路径规划问题的可行性和收敛性。本文的主要研究内容如下:  (1)蚁群算法的参数优化设置:以中国旅行商问题(CTSP)为例,采用蚁群算法进行求解,提出了采用循环组合的枚举方式设置参数,找到最优参数组合。  (2)蚁群算法求解单源最短路径问题:参数和信息素初始化,构建解空间,引入热区搜索机制和轮盘赌策略进行节点选择,经过多次迭代产生最短路径。

【路径规划】基于蚁群算法求解固定节最短路径matlab代码_路径规划

【路径规划】基于蚁群算法求解固定节最短路径matlab代码_单源最短路径_02

2 部分代码

% Ant main program
clear all;
close all;
clc;
tic;
Ant=25;%蚂蚁数量
Ger=120;%迭代次数
first_address = [
100,10
150,10
180,30
200,10
200,200
200,220
180,240
180,270
150,270
100,240
80,240
50,270
200,300
10,300
10,270
10,240
10,200
10,10
50,30
100,10
];%first_address表示测试数据中的节点坐标
SumOfCity = size(first_address,1);%节点个数
length_address =10000.*ones(SumOfCity,SumOfCity);%length_address表示两两节点间的距离,初始设定10000,可以设定无穷大,表示不相连
length_address(1,2)=377;%表示节点1和节点2的距离
length_address(2,4)=190;
length_address(2,3)=100;
length_address(3,4)=101;
length_address(4,5)=240;
length_address(5,17)=1932;
length_address(5,6)=70;
length_address(6,13)=200;
length_address(6,7)=63.1;
length_address(7,10)=377;
length_address(7,8)=87.5;
length_address(8,9)=100;
length_address(10,11)=8;
length_address(9,10)=170.8;
length_address(9,12)=332.9;
length_address(11,12)=168.8;
length_address(11,16)=375.2;
length_address(12,15)=135.1;
length_address(13,14)=458;
length_address(14,15)=100;
length_address(15,16)=86.7;
length_address(16,17)=187.5;
length_address(17,18)=639.8;
length_address(18,20)=510.5;
length_address(18,19)=200.1;
length_address(19,20)=246.8;
for   n=1:size(first_address)
for m=1:size(first_address)
if length_address(n,m)~=10000
length_address(m,n)=length_address(n,m);   %对称矩阵
end
end
end
power=length_address;%距离
[PM PN]=size(power);%距离矩阵大小,行列个数
% %% 画出节点分布图形
% figure(1);
% grid on;
% hold on;
% scatter(first_address(:,1),first_address(:,2));
% for i=1:PN
%     for j=1:PN
%         if(length_address(i,j)~=10000)
%             line([first_address(i,1),first_address(j,1)],[first_address(i,2),first_address(j,2)],'Color','g');%划线
%             text((first_address(i,1)+first_address(j,1))/2,(first_address(i,2)+first_address(j,2))/2,num2str(length_address(i,j)));%标注线段距离
%         end
%     end
% end
函数值变化趋势');
% xlabel('Generations');
% ylabel('f(x)');
% hold on;
% plot(vmfit,'r');
% hold off;
runtime=toc

3 仿真结果

【路径规划】基于蚁群算法求解固定节最短路径matlab代码_单源最短路径_03

4 参考文献

[1]张叶茂, and 杨晓武. "基于改进蚁群算法的动态路径规划算法研究." 西部交通科技 3(2017):5.

【路径规划】基于蚁群算法求解固定节最短路径matlab代码_迭代_04