首页 / 资讯中心 / 文章详情

【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】

【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】 ★ FEATURED ARTICLE
欢迎来到海神之光博客之家✅博主简介热爱科研的Matlab仿真开发者修心和技术同步精进个人主页海神之光代码获取方式海神之光Matlab王者学习之路—代码获取方式⛳️座右铭行百里者半于九十。更多Matlab路径规划仿真内容点击①Matlab路径规划进阶版②付费专栏Matlab路径规划初级版⛳️关注CSDN海神之光更多资源等你来⛄一、无人机简介0 引言随着现代技术的发展飞行器种类不断变多应用也日趋专一化、完善化如专门用作植保的大疆PS-X625无人机用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机以及用作水下救援的白鲨MIX水下无人机等决定飞行器性能主要是内部的飞控系统和外部的路径规划问题。就路径问题而言在具体实施任务时仅靠操作员手中的遥控器控制无人飞行器执行相应的工作可能会对操作员心理以及技术提出极高的要求为了避免个人操作失误进而造成飞行器损坏的危险一种解决问题的方法就是对飞行器进行航迹规划。飞行器的测量精度航迹路径的合理规划飞行器工作时的稳定性、安全性等这些变化对飞行器的综合控制系统要求越来越高。无人机航路规划是为了保证无人机完成特定的飞行任务并且能够在完成任务的过程中躲避各种障碍、威胁区域而设计出最优航迹路线的问题。1 常见的航迹规划算法图1 常见路径规划算法文中主要对无人机巡航阶段的航迹规划进行研究假设无人机在飞行中维持高度与速度不变那么航迹规划成为一个二维平面的规划问题。在航迹规划算法中,A算法计算简单容易实现。在改进A算法基础上提出一种新的、易于理解的改进A算法的无人机航迹规划方法。传统A算法将规划区域栅格化节点扩展只限于栅格线的交叉点在栅格线的交叉点与交叉点之间往往存在一定角度的两个运动方向。将存在角度的两段路径无限放大、细化然后分别用两段上的相应路径规划点作为切点找到相对应的组成内切圆的圆心然后作弧并求出相对应的两切点之间的弧所对应的圆心角根据下式计算出弧线的长度式中R———内切圆的半径α———切点之间弧线对应的圆心角。⛄二、人工蜂群算法简介1 蜜蜂采蜜自然界中的蜜蜂总能在任何环境下以极高的效率找到优质蜜源且能适应环境的改变。蜜蜂群的采蜜系统由蜜源、雇佣蜂、非雇佣蜂三部分组成其中一个蜜源的优劣有很多要素如蜜源花蜜量的大小、离蜂巢距离的远近、提取的难易程度等雇佣蜂和特定的蜜源联系并将蜜源信息以一定概率形式告诉同伴非雇佣蜂的职责是寻找待开采的蜜源分为跟随蜂和侦查蜂两类跟随峰是在蜂巢等待而侦查蜂是探测蜂巢周围的新蜜源。蜜蜂采蜜时蜂巢中的一部分蜜蜂作为侦查蜂不断并随机地在蜂巢附近寻找蜜源如果发现了花蜜量超过某个阈值的蜜源则此侦査蜂变为雇佣蜂开始釆蜜采蜜完成后飞回蜂巢跳摇摆舞告知跟随峰。摇摆舞是蜜蜂之间交流信息的一种基本形式它传达了有关蜂巢周围蜜源的重要信息如蜜源方向及离巢距离等跟随峰利用这些信息准确评价蜂巢周围的蜜源质量。当雇佣蜂跳完摇摆舞之后就与蜂巢中的一些跟随蜂一起返回原蜜源采蜜跟随蜂数量取决于蜜源质量。以这种方式蜂群能快速且有效地找到花蜜量最高的蜜源。蜜蜂采蜜的群体智能就是通过不同角色之间的交流转换及协作来实现的。具体采蜜过程如图所示。在最初阶段蜜蜂是以侦查蜂的形式出现且对蜂巢周闱的蜜源没有任何了解由于蜜蜂内在动机和外在的条件不同侦查蜂有两种选择①成为雇佣蜂开始在蜂巢周围随机搜索蜜源如图中路线②成为跟随峰在观察完摇摆舞后开始搜索蜜源如图中路线。假设发现两个蜜源和在发现蜜源后该侦查蜂变成一只雇佣蜂雇佣蜂利用其自身属性记住蜜源的位置并立刻投入到采蜜中。采蜜完成后蜜蜂带着满载花蜜返回蜂巢将花蜜卸载到卸蜜房卸载完成后雇佣蜂有三种可能的行为①放弃自己发现的花蜜量不高的蜜源变成一个不受约束的非雇佣蜂如图中的路线②在招募区跳摇摆舞招募一些待在蜂巢中跟随峰带领其再次返回所发现的蜜源如图中的路线③不招募其他蜜蜂继续回到原来的蜜源采蜜如图中的路线。在现实生活中并不是所有的蜜蜂一开始就立刻采蜜另外大多数蜜蜂在一次采蜜完成后都会选择回到招募区跳摇摆舞来招募更多的蜜蜂去采蜜。2 算法模型人工蜂群算法就是模拟蜜蜂的采蜜过程而提出的一种新型智能优化算法它也是由食物源、雇佣蜂和非雇佣蜂三部分组成。食物源食物源即为蜜源。在任何一个优化问题中问题的可行解都是以一定形式给出的。在人工蜂群算法中食物源就是待求优化问题的可行解是人工蜂群算法中所要处理的基本对象。食物源的优劣即可行解的好坏是用蜜源花蜜量的大小即适应度来评价的。雇佣蜂雇佣蜂即为引领蜂与食物源的位置相对应一个食物源对应一个引领蜂。在人工蜂群算法中食物源的个数与引领蜂的个数相等引领蜂的任务是发现食物源信息并以一定的概率与跟随蜂分享概率的计算即为人工蜂群算法中的选择策略一般是根据适应度值以轮盘赌的方法计算。非雇佣蜂非雇佣蜂包括跟随蜂和侦査蜂跟随蜂在蜂巢的招募区内根据引领蜂提供的蜜源信息来选择食物源而侦查蜂是在蜂巢附近寻找新的食物源。在人工蜂群算法中跟随蜂依据引领蜂传递的信息在食物源附近搜索新食物源并进行贪婪选择。若一个食物源在经过次后仍未被更新则此引领蜂变成侦査蜂侦查蜂寻找新的食物源代替原来的食物源。3 算法搜索过程4 分类人工蜂群算法中将人工蜂群分为引领蜂、跟随蜂和侦查蜂三类每一次搜索过程中引领蜂和跟随蜂是先后开采食物源即寻找最优解而侦查蜂是观察是否陷入局部最优若陷入局部最优则随机地搜索其它可能的食物源。每个食物源代表问题一个可能解食物源的花蜜量对应相应解的质量适应度值fiti。1人工蜂群算法搜索过程中首先需要初始化其中包括确定种群数、最大迭代次数MCN、、控制参数limit和确定搜索空间即解的范围在搜索空间中随机生成初始解xi(i1,2,3,……,SN)SN为食物源个数每个解xi是一个D维的向量D是问题的维数。初始化之后整个种群将进行引领蜂、跟随蜂和侦查蜂搜寻过程的重复循环直到达到最大迭代次数MCN或误差允许值 ε。2在搜索过程开始阶段每个引领蜂由式(2-3)产生一个新解即新食物源vijxijΦij(xij-xkj) (2-3)式中k∈﹛1,2,…,SN﹜,j∈{1,2,…,D},且k ≠i;Φij为[-1,1]之间的随机数。计算新解的fiti并评价它若新解的fiti优于旧解则引领蜂记住新解忘记旧解。反之它将保留旧解。3在所有引领蜂完成搜寻过程之后引领蜂会在招募区跳摇摆舞把解的信息及信息与跟随蜂分享。跟随蜂根据式计算每个解的选择概率pifiti/∑k1SNfitk。 (2-4)然后在区间[-1,1]内随机产生一个数如果解的概率值大于该随机数则跟随蜂由式(2-3)产生一个新解并检验新解的fiti若新解的fiti比之前好则跟随蜂将记住新解忘掉旧解反之它将保留旧解。四、在所有跟随蜂完成搜寻过程之后如果一个解经过limit次循环仍然没有被进一步更新那么就认为此解陷入局部最优该食物源就会被舍弃。设食物源xi被舍弃则此食物源对应的引领蜂转成一个侦查蜂。侦察蜂由(2-5)式产生一个新的食物源代替它。xijxminjrand(0,1)(xmaxj-xminj) (2-5)其中j∈{1,2…,D}。然后返回引领蜂搜索过程开始重复循环。五、人工蜂群算法的食物源质量一般是越大越好即适应度值越大越好而对应于要优化的问题需要分两种情况考虑即最小值问题、最大值问题。设fi是优化问题的目标函数所以若优化最小值问题时适应度函数为fi的变形一般用式(2-6)表示若优化最大值问题适应度函数即目标函数。fiti{1abs(fi) fi01/1fi fi0 (2-6)人工蜂群算法在评价食物源时一般进行贪婪选择按式(2-7)进行。vi{xi fit(xi)fit(vi)vi fit(vi)fit(xi) (2-7)人工蜂群算法就是通过循环搜索最终找到最优食物源或最优解。5 算法步骤人工蜂群算法具体实现步骤步骤1初始化种群初始化各个参数蜂群总数SN、食物源被采集次数即最大迭代次数MCN及控制参数limit确定问题搜索范围并且在搜索范围内随机产生初始解xi(i1,2,…SN) 。步骤2计算并评估每个初始解的适应度。步骤3设定循环条件并开始循环步骤4引领蜂对解xi按照式2-3进行邻域搜索产生新解食物源vi并计算其适应度值步骤5按照式(2-7)进行贪婪选择如果vi的适应度值优于xi则利用vi替换xi将vi作为当前最好的解否则保留xi不变步骤6根据式(2-4)计算食物源的概率pi步骤7跟随蜂依照概率pi选择解或食物源按照式(2-3)搜索产生新解食物源vi并计算其适应度。步骤8按式(2-7)进行贪婪选择如果vi的适应度优于xi则用vi代替xi将vi作为当前最好解否则保留xi不变步骤9判断是否有要放弃的解。若有则侦查蜂按式(2-5)随机产生新解将其替换步骤10记录到目前为止的最优解步骤11判断是否满足循环终止条件若满足循环结束输出最优解否则返回步骤4继续搜索。⛄三、部分源代码clcclose allclear all%参数设置%global boundary setstart setfinal node delta_H danger_xi danger_yi danger_zi danger_ri weight;%node12;%离终点最近的起始点到终点的节点个数(偶数)L_FEN26;%设置节点间的间隔距离delta_H[20 40];%起飞(落地)高度、飞行过程最低高度danger_xi[207.1 393.9];%设置威胁区域坐标danger_yi[333.3 414.1];danger_zi[389.9 349.2];danger_ri[0 0];%设置威胁半径weight[1 0.01 0.3];%路径长度、离地面高度、夹角所占权重boundary[500 0];%设置环境上下限setfinal[291.8 219.8 492.4];%设置终点setstart_ALL[176.8 237.4 254.5;%设置起点依次为无人机1、2、3…161.6 363.6 429;454.5 146.5 228.2;393.9 308.1 234.3];Vmin3;%设置无人机飞行速度范围m/sVmax30;Ways2;%Ways1时实现同时起飞同时到达目标Ways2时实现指定顺序依次到达目标Order[1 4 2 3];%无人机到达顺序interval9;%无人机到达间隔时间s%%lineXsize(setstart_ALL,1);%地形绘图%SETenvironment;surf(X,Y,Z);box on;rotate3d on;xilinspace(0,500,100);yilinspace(0,500,100);[XI,YI]meshgrid(xi,yi);ZIinterp2(X,Y,Z,XI,YI,‘cubic’);surf(XI,YI,ZI) %光滑曲面等高线hold on;%威胁区域绘图%[x,y,z]sphere(40);for k1:size(danger_xi,2)surf(danger_ri(k)*xdanger_xi(k),danger_ri(k)*ydanger_yi(k),danger_ri(k)*zdanger_zi(k));hold on;end%将每条路径的节点距离大致均匀化%lineXsize(setstart_ALL,1);%UAV数量Azeros(lineX,1);for r1:lineXA®sqrt(((setstart_ALL(r,:)-setfinal).^2)*ones(3,1));endnodefloor(min(A)/L_FEN);if mod(node,2)1nodenode1;endindfind(Amin(A));objvalA(ind(end))/node;orig_nodenode;%记录给定的初值node%主体函数%routes_distancezeros(lineX,1);%初始每条路径长度为0for r1:lineXB0;if(rind)%计算离终点直线距离最近的无人机路径%nodeorig_node;setstartsetstart_ALL(r,:);CrunUAVABC4®;%得到路径节点坐标for i1:(size(C,1)-1)BBsqrt(((C(i1,:)-C(i,:)).^2)*ones(3,1));endroutes_distance®B;%%%计算其余无人机路径%elsenodefix(A®/objval);if rem(node,2)~0nodenode1;%确保node为偶数endsetstartsetstart_ALL(r,:);CrunUAVABC4®;for i1:(size(C,1)-1)BBsqrt(((C(i1,:)-C(i,:)).^2)*ones(3,1));endroutes_distance®B;end%%end%%distance_minA;time_planzeros(lineX,1);distance_min%各起始点的直线距离routes_distance%规划的航迹长度if Ways1%同时起飞同时到达indmax(routes_distance)*Vmin-min(routes_distance)*Vmax;%临界条件if(ind0)time_planmax(routes_distance)/Vmax;V_planroutes_distance./time_plan;time_plan%团队预计到达的时间V_plan%规划的各无人机速度elsefprintf(‘超出协同规划范围,任意两条长短路径的比值应小于无人机Vmax/Vmin’);endelse%同时起飞按指定次序先后到达time_maxroutes_distance/Vmin; time_minroutes_distance/Vmax; for k1:lineX if k1 time_plan(Order(k))routes_distance(Order(k))/Vmax; else time_plan(Order(k))time_plan(Order(k-1))interval; end endindfind(time_plantime_min);while isempty(ind)0indind(1);time_plan(ind)routes_distance(ind)/Vmax;for a1:lineX-1time_plan(a)time_plan(ind)-(ind-a)*interval;endindfind(time_plantime_min);endV_planroutes_distance./time_plan;indfind(V_planVmin);if isempty(ind)~0time_plan%团队预计到达的时间V_plan%规划的各无人机速度elsefprintf(‘超出协同规划范围’);endend⛄四、运行结果⛄五、matlab版本及参考文献1 matlab版本2014a2 参考文献[1]张小孟,胡永江,李文广,庞强伟,袁国刚.基于改进人工蜂群算法的多无人机灭火任务规划[J].中国惯性技术学报. 2020,28(04)3 备注简介此部分摘自互联网仅供参考若侵权联系删除 仿真咨询1 各类智能优化算法改进及应用生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化2 机器学习和深度学习方面卷积神经网络CNN、LSTM、支持向量机SVM、最小二乘支持向量机LSSVM、极限学习机ELM、核极限学习机KELM、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断3 图像处理方面图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知4 路径规划方面旅行商问题TSP、车辆路径问题VRP、MVRP、CVRP、VRPTW等、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化5 无人机应用方面无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配6 无线传感器定位及布局方面传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化7 信号处理方面信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化8 电力系统方面微电网优化、无功优化、配电网重构、储能配置9 元胞自动机方面交通流 人群疏散 病毒扩散 晶体生长10 雷达方面卡尔曼滤波跟踪、航迹关联、航迹融合
阅读完成 · 觉得有帮助?
咨询建站