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

1 简介

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

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 仿真结果

4 参考文献

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值