一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【路径规划】基于matlab蚁群算法无人机巡检路径规划【含Matlab源码 138期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、背景

以2017年华为杯研究生数学建模比赛A题(无人机在抢险救灾中的优化运用)为例,讲解蚁群算法在求解最优路径问题中的应用,我们将问题进行了简化,描述如下:
无人机从某一个基地出发,途径所有救援点,然后回到基地(每个点只经过一次),求解最佳行驶路径。
基地和所有救援点的散点图如图1所示。

蚁群算法是寻求优化路径的一种算法,这种算法的思想起源于蚂蚁在寻求事物过程中的路径,这种算法在本质上属于一种启发式全局优化算法,具有信息正反馈、分布计算和启发式搜索的特点。蚁群算法采用的规则主要为环境信息、避障规则、移动规则、散发信息素规则等。蚁群算法主要应用在组合优化问题上,同时其在网络路由中应用也越来越广泛。
最终使用蚁群算法得到的救援路线如图2所示:

三、部分源代码

我们提供了可运行的代码,并添加了注释,大家可自行去了解该算法的精髓。代码包含三个部分,主函数mainfun.m调用Antcolonyalgorithm.m和flightRoute.m. Antcolonyalgorithm.m用于实现蚁群算法,flightRoute.m用于画飞行路线。

function mainfun()% 位点坐标
position=[   91.2000   94.300083.4000   90.400076.7000   88.800057.8000   91.400075.6000   91.400057.8000   88.000051.1000   88.900030.0000   90.600030.0000   99.400042.2000   78.100058.9000   92.700062.3000   93.200050.0000   78.900044.5000   86.700055.6000   71.200052.3000   67.300072.3000   64.700082.3000   66.000085.6000   71.200082.3000   67.300085.6000   58.200085.6000   60.800083.4000   59.500050.0000   71.700052.3000   78.400044.5000   75.800066.0000   93.600062.2000   82.900078.9000   93.200067.8000  116.500052.2000  120.400055.6000   80.200091.2000  124.300053.3000   65.9000110.0000   55.0000];% 所有点的散点图
figure
scatter(position(:,1),position(:,2),'ro');
hold on
axis([10,120,20,140])
plot(110,55,'ro','MarkerFaceColor','r')
text(100,60,'基地J','Color','r')
set(gca,'FontSize',16)% 蚁群算法
[~,L_best,L_ave,Shortest_Route,Shortest_Length]=Antcolonyalgorfigure
plot(L_best,'b','LineWidth',2)
hold on
plot(L_ave,'b','LineWidth',2)
xlabel('迭代次数')
ylabel('平均距离和最短距离')
set(gca,'FontSize',16)end

蚁群算法函数——

function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=Antcolonyalgorithm(C,NC_max,m,Alpha,Beta,Rho,Q)% 输入输出说明
% C城市的坐标
% NC_max 最大迭代次数
% m 蚂蚁个数
% Rho 信息素蒸发系数
% Q 信息素增加强度系数
% R_best 最佳路线
% L_best 最佳路线的长度
% Alpha 信息素重要程度
% Beta 启发式因子重要程度%变量初始化
n=size(C,1);
D=zeros(n,n);
for i=1:nfor j=1:nif i~=jD(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;elseD(i,j)=eps;endD(j,i)=D(i,j);end
end
Eta=1./D;
Tau=ones(n,n);
Tabu=zeros(m,n);
NC=1;
R_best=zeros(NC_max,n);
L_best=inf.*ones(NC_max,1);
L_ave=zeros(NC_max,1);while NC<=NC_max Randpos=[];for i=1:(ceil(m/n))Randpos=[Randpos,randperm(n)];endTabu(:,1)=(Randpos(1,1:m))';for j=2:nfor i=1:mvisited=Tabu(i,1:(j-1)); J=zeros(1,(n-j+1));P=J;Jc=1;for k=1:nif isempty(find(visited==k, 1))J(Jc)=k;Jc=Jc+1;endendif NC>=2Tabu(1,:)=R_best(NC-1,:);endL=zeros(m,1);for i=1:mR=Tabu(i,:);for j=1:(n-1)L(i)=L(i)+D(R(j),R(j+1)); endL(i)=L(i)+D(R(1),R(n)); endL_best(NC)=min(L);pos=find(L==L_best(NC));R_best(NC,:)=Tabu(pos(1),:); L_ave(NC)=mean(L);NC=NC+1;%更新信息素Delta_Tau=zeros(n,n);for i=1:mfor j=1:(n-1)Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);endDelta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);endTau=(1-Rho).*Tau+Delta_Tau;%禁忌表清零Tabu=zeros(m,n);
end
%输出结果
Pos=find(L_best==min(L_best));
Shortest_Route=R_best(Pos(1),:);
Shortest_Length=L_best(Pos(1));end

画路线图的函数,输入为位点坐标和路径——


function flightRoute(C,Rou)Num=length(Rou);
scatter(C(:,1),C(:,2));
hold on
plot([C(Rou(1),1),C(Rou(Num),1)],[C(Rou(1),2),C(Rou(Num),2)],'r','LineWidth',3)
hold on
for ii=2:Numplot([C(Rou(ii-1),1),C(Rou(ii),1)],[C(Rou(ii-1),2),C(Rou(ii),2)],'r','LineWidth',3)hold on
endend

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]巫茜,罗金彪,顾晓群,曾青.基于改进PSO的无人机三维航迹规划优化算法[J].兵器装备工程学报. 2021,42(08)
[4]邓叶,姜香菊.基于改进人工势场法的四旋翼无人机航迹规划算法[J].传感器与微系统. 2021,40(07)
[5]马云红,张恒,齐乐融,贺建良.基于改进A*算法的三维无人机路径规划[J].电光与控制. 2019,26(10)
[6]焦阳.基于改进蚁群算法的无人机三维路径规划研究[J].舰船电子工程. 2019,39(03)

【路径规划】基于matlab蚁群算法无人机巡检路径规划【含Matlab源码 138期】相关推荐

  1. 【飞行器】基于matlab蚁群算法飞行器巡检路径【含Matlab源码 268期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[飞行器]基于matlab蚁群算法飞行器巡检路径[含Matlab源码 268期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  2. 【ACO三维路径规划】基于matlab蚁群算法无人机三维路径规划【含Matlab源码 1278期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  3. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  4. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  5. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  6. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  7. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  8. 【Matlab水果识别】自助水果超市【含GUI源码 594期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]自助水果超市[含GUI源码 594期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]倪云峰,叶健,樊娇娇 ...

  9. 【ACO三维路径规划】基于matlab GUI蚁群算法无人机三维路径规划【含Matlab源码 254期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  10. 【PSO三维路径规划】基于matlab粒子群算法无人机三维路径规划【含Matlab源码 015期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

最新文章

  1. SAP PI 集成引擎
  2. 如何用计算机猜数字,杭电2010计算机复试笔试题 2道acm简单题(2010):1.猜数字游戏;2.字符串提取数字并求和;...
  3. invoke与call
  4. Win2008R2配置WebDeploy发布网站
  5. PAT甲级1045 Favorite Color Stripe (30 分):[C++题解]最佳彩色带、DP、公共子序列变形
  6. java求任意个数集合的笛卡尔积,Java中任意集的笛卡尔积
  7. 生产者消费者_【线程通信】生产者消费者模型
  8. 从迁移到Java 7的小技巧
  9. 保驾护航金三银四,使用指南
  10. linux系统之间无密传输,scp采用无密码在两台linux服务器之间传输数据(示例代码)...
  11. 在Silverlight中进行图片下载
  12. 详述近期遭利用的 Atlassian Confluence OGNL 注入漏洞 (CVE-2021-26084)
  13. 修改IDEA格式化单行注释 后增加空格
  14. 本科生毕业论文(设计)撰写规范
  15. Springboot集成Mybatis怎么在控制台打印sql语句
  16. 漫话:如何给女朋友解释灭霸的指响并不是真随机消灭半数宇宙人口的?
  17. “瘦瘦”让健康管理流行起来
  18. 启动SparkSql,报javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
  19. linux命令删除raid,甲秀之音-Linux环境下删除硬盘中残留的raid信息
  20. 2021年起重机械指挥考试技巧及起重机械指挥考试试题

热门文章

  1. Java笔记第五篇 文本编辑器初见面
  2. 转: 从0到1的电商架构应该怎么做?
  3. Linux 下SVN安全及权限配置
  4. 列表显示数据 但是数据的字体颜色要js添加
  5. 谷歌升级云数据库:更多的储存及更快的读取
  6. const VS readonly
  7. 20191210每日一句
  8. pdf文档有时打开乱码的解决方案
  9. 麦子学院6.1 神经网络算法(Nerual Networks)(上) 学习笔记
  10. opencv访问图片的每一像素