【路径规划】基于改进差分实现三维多无人机协同航迹规划matlab源码
【路径规划】基于改进差分实现三维多无人机协同航迹规划matlab源码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1基于改进差分实现三维多无人机协同航迹规划
针对已知三维环境下的多无人机动态路径规划问题,在多无人机协同方面基于参考路径长度以及威胁距离进行任务点规划,并根据实际环境设定了约束函数和适应度函数.在航迹规划算法方面则采用改进差分进化算法,将种群基于种群个体的适应度均分为两个子种群,选择不同的变异策略.仿真验证结果显示,改进差分进化算法得到的规划路径在路径长度,适应度值优于传统差分进化算法,可以生成路径更短且适应度值更优的航迹.
1.1 差分进化算法的介绍
差分进化算法(Differential Evolution, DE)是一种基于群体差异的启发式随机搜索算法,该算法是由R.Storn和K.Price为求解Chebyshev多项式而提出的。DE算法也属于智能优化算法,与前面的启发式算法,如ABC,PSO等类似,都属于启发式的优化算法。DE算法是我在一篇求解盒子覆盖问题论文中使用的一种优化算法。
1.2 差分进化算法的流程
初始化种群
变异
交叉
选择
(DE流程)
2 部分代码
%清空环境 clear ; %定义地形对象 cTerrain = CTerrain3D ; %定义威胁区对象 cTread = CTread ; %调整为统一的图形环境 figure ( ’Renderer’ , ’opengl’ ); %绘制地形和威胁区 cTerrain . draw (); cTread . draw (); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%数据形式说明 %xs 初始点位置集合,三维点集 %yt 目标点位置集合,三维点集 %MxsEna 能力矩阵,集合中的二元组表示最大最小飞行速度 %MxsDIs 最大航程矩阵,集合中的值表示UAV最大可飞的距离 %MytTOrd 任务点间的时序坐标,要求尽量在前面的先执行 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %调用目标分配算法 %AssignType表示不同的模型,1, N=M; 2, N>M; 3, N<M %Key表示算法执行次数, 0,执行一次,1,执行多次 AssignType = 1 ; Key = 0 ; %时间测试 Time = cputime ; %% 第一种情况的实验 if AssignType == 1 %%%%%%%%%%%%%%%%%%%%%%%数据区%%%%%%%%%%%% xs = [ %11 2 3;2 17 5; 34 26 7;5 2 2;6 33 3;27 34 6;21 45 5;25 12 3;22 17 11;13 31 12; %45 21 11; 36 22 11;13 21 16;41 25 10;25 25 11;53 12 14;22 12 12;18 32 11; 67 34 12;26 16 15; 78 20 15 ; 93 31 12 ; 31 20 13 ; 112 32 15 ; 134 26 17 ; 45 52 12 ; 36 63 13 ; 67 34 16 ; 21 85 15 ; 32 62 13 ;]; yt = [ %40 210 12;170 90 13 ; 80 197 21 ;172 120 13;160 56 13;160 143 21;170 200 21;113 200 12;97 134 16;100 145 11; %81 101 21; 72 152 12; 133 60 11;84 164 21; 150 90 21;146 121 12; 167 54 12; 108 165 12;99 120 21;110 143 11; 70 181 12 ; 15 133 13 ; 19 151 12 ; 160 192 13 ; 101 120 23 ; 160 113 12 ; 82 101 11 ; 173 140 12 ; 182 65 14 ; 128 156 12 ;]; MxsEna =[ %0.2 0.3; 0.2 0.4;0.4 0.75;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6;0.2 0.3; 0.2 0.4; % 0.4 0.75;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6; 0.2 0.3 ; 0.2 0.4 ; 0.4 0.75 ; 0.3 0.6 ; 0.2 0.3 ; 0.35 0.45 ; 0.3 0.5 ; 0.3 0.6 ; 0.3 0.5 ; 0.3 0.6 ;]; MxsDis =[ %400 700 650 500 700 900 450 610 400 700 %650 500 700 900 450 610 700 900 450 610 500 700 300 350 700 900 450 610 450 610 ]; ytW = [ %1 3 4 2 1 1 3 2 1 2 %3 2 1 3 2 1 2 3 2 1 1 1 1 1 1 1 1 1 1 1 ]; MytTOrd =[ 3 4 ; 5 2 ; 6 8 ; 7 4 ;]; %引入新的协同矩阵,最大起始时间矩阵 Twait = []; Twindow =[]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if Key == 0 %%%%%%%%%%%%%%%%%%%%%%算法执行区%%%%%%%%%%%%%%%%%% %调用目标分配算法,并取得解和相关数据,计算算法耗费时间 %定义目标分配算法对象 DDE1 = DMDEAssignTarget ( cTerrain , xs , yt , MxsEna , MxsDis , ytW , MytTOrd , Twait , Twindow , 1 ); % MC = Cal1.GetMcost(); %Cal1 = CallocationTargetOld1(cTerrain); %标签显示文字 xlabel ( ’X/km’ ) ylabel ( ’Y/km’ ) zlabel ( ’Z/km’ ) %DDEAssign1=DDEAssignTarget1(cTerrain,xs,yt,MxsEna,MxsDis,ytW,MytTOrd); %执行run并返回结果集 t1 = cputime ; [ solU solT solC solF ] = DDE1 . run (); Time = cputime - t1 ; % %结果 solU solT solC solF Time else if Key == 1 for i = 1 : 10 DDE1 = DMDEAssignTarget ( cTerrain , xs , yt , MxsEna , MxsDis , ytW , MytTOrd , Twait , Twindow , i ); % MC = Cal1.GetMcost(); %Cal1 = CallocationTargetOld1(cTerrain); %标签显示文字 xlabel ( ’X/km’ ) ylabel ( ’Y/km’ ) zlabel ( ’Z/km’ ) %DDEAssign1=DDEAssignTarget1(cTerrain,xs,yt,MxsEna,MxsDis,ytW,MytTOrd); %执行run并返回结果集 t1 = cputime ; [ solU solT solC solF ] = DDE1 . run (); solu ( i ,:) = solU ; solt ( i ,:) = solT ; solc ( i ,:) = solC ; solf ( i ,:) = solF ; Time ( i ,:) = cputime - t1 ; end %i % %结果 solu solt solc solf Time end % key=1 end % key=0 else if AssignType == 2 %% 第二种实验的情况 %%%%%%%%%%%%%%%%%%%%%%%数据区%%%%%%%%%%%% xs = [ %11 2 3;2 17 5; 34 26 7;5 2 2;6 33 3;27 34 6;21 45 5;25 12 3;22 17 11;13 31 12; %45 21 11; 36 22 11;13 21 16;41 25 10;25 25 11;53 12 14;22 12 12;18 32 11; 67 34 12;26 16 15; 78 20 15 ; 93 31 12 ; 31 20 13 ; 112 32 15 ; 134 26 17 ; 45 52 12 ; 36 63 13 ; 67 34 16 ; 21 85 15 ; 32 62 13 ;]; yt = [ %40 210 12;170 90 13 ; 80 197 21 ;172 120 13;160 56 13;160 143 21;170 200 21;113 200 12;97 134 16;100 145 11; %81 101 21; 72 152 12; 133 60 11;84 164 21; 150 90 21;146 121 12; 167 54 12; 108 165 12;99 120 21;110 143 11; 70 181 12 ; 15 133 13 ; 19 151 12 ; 160 192 13 ]; MxsEna =[ %0.2 0.3; 0.2 0.4;0.4 0.75;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6;0.2 0.3; 0.2 0.4; % 0.4 0.75;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6; 0.2 0.3 ; 0.2 0.4 ; 0.4 0.75 ; 0.3 0.6 ; 0.2 0.3 ; 0.35 0.45 ; 0.3 0.5 ; 0.3 0.6 ; 0.3 0.5 ; 0.3 0.6 ;]; MxsDis =[ %400 700 650 500 700 900 450 610 400 700 %650 500 700 900 450 610 700 900 450 610 500 700 300 350 700 900 450 610 450 610 ]; ytW = [ %1 3 4 2 1 1 3 2 1 2 %3 2 1 3 2 1 2 3 2 1 1 1 1 1 ]; %这个数据里都代表的是目标点,是目标点与目标点的关系 MytTOrd =[ 3 2 ]; %引入新的协同矩阵,最大起始时间矩阵 Twait = [ 30 40 20 15 50 70 30 80 90 65 ]; Twindow =[]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if Key == 0 else if Key == 1 for i = 1 : 20 DDE1 = DMDEAssignTarget ( cTerrain , xs , yt , MxsEna , MxsDis , ytW , MytTOrd , Twait , Twindow , i ); % MC = Cal1.GetMcost(); %Cal1 = CallocationTargetOld1(cTerrain); %标签显示文字 xlabel ( ’X/km’ ) ylabel ( ’Y/km’ ) zlabel ( ’Z/km’ ) %DDEAssign1=DDEAssignTarget1(cTerrain,xs,yt,MxsEna,MxsDis,ytW,MytTOrd); %执行run并返回结果集 t1 = cputime ; [ solU solT solC solF ] = DDE1 . run (); solu ( i ,:) = solU ; solt ( i ,:) = solT ; solc ( i ,:) = solC ; solf ( i ,:) = solF ; Time ( i ,:) = cputime - t1 ; end %i % %结果 solu solt solc solf Time end % key=1 end % key=0 else if AssignType == 3 %% 第三种实验的情况 %%%%%%%%%%%%%%%%%%%%%%%数据区%%%%%%%%%%%% xs = [ %11 2 3;2 17 5; 34 26 7;5 2 2;6 33 3;27 34 6;21 45 5;25 12 3;22 17 11;13 31 12; %45 21 11; 36 22 11;13 21 16;41 25 10;25 25 11;53 12 14;22 12 12;18 32 11; 67 34 12;26 16 15; 78 20 15 ; 93 31 12 ; 31 20 13 ; 112 32 15 ]; yt = [ %40 210 12;170 90 13 ; 80 197 21 ;172 120 13;160 56 13;160 143 21;170 200 21;113 200 12;97 134 16;100 145 11; %81 101 21; 72 152 12; 133 60 11;84 164 21; 150 90 21;146 121 12; 167 54 12; 108 165 12;99 120 21;110 143 11; 70 131 12 ; 15 133 13 ; 19 151 12 ; 160 192 13 ; 101 120 23 ; 160 113 12 ; 82 101 11 ; 173 140 12 ; 182 65 14 ; 45 176 12 ;]; MxsEna =[ %0.2 0.3; 0.2 0.4;0.4 0.75;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6;0.2 0.3; 0.2 0.4; % 0.4 0.75;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6;0.2 0.3;0.35 0.45;0.3 0.5;0.3 0.6; 0.2 0.5 ; 0.3 0.4 ; 0.4 0.75 ; 0.3 0.45 ]; MxsDis =[ %400 700 650 500 700 900 450 610 400 700 %650 500 700 900 450 610 700 900 450 610 700 700 900 650 ]; ytW = [ %1 3 4 2 1 1 3 2 1 2 %3 2 1 3 2 1 2 3 2 1 1 1 1 1 1 1 1 1 1 1 ]; MytTOrd =[ 3 4 ; 5 2 ]; %引入新的协同矩阵,最大起始时间矩阵 Twait = [ 30 40 20 15 ]; Twindow =[ 1300 , 6000 ]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if Key == 0 %%%%%%%%%%%%%%%%%%%%%%算法执行区%%%%%%%%%%%%%%%%%% %调用目标分配算法,并取得解和相关数据,计算算法耗费时间 %定义目标分配算法对象 DDE1 = DMDEAssignTarget ( cTerrain , xs , yt , MxsEna , MxsDis , ytW , MytTOrd , Twait , Twindow , 1 ); % MC = Cal1.GetMcost(); %Cal1 = CallocationTargetOld1(cTerrain); %标签显示文字 xlabel ( ’X/km’ ) ylabel ( ’Y/km’ ) zlabel ( ’Z/km’ ) %DDEAssign1=DDEAssignTarget1(cTerrain,xs,yt,MxsEna,MxsDis,ytW,MytTOrd); %执行run并返回结果集 t1 = cputime ; [ solU solT solC solF ] = DDE1 . run (); Time = cputime - t1 ; % %结果 solU solT solC solF Time else if Key == 1 for i = 1 : 20 DDE1 = DMDEAssignTarget ( cTerrain , xs , yt , MxsEna , MxsDis , ytW , MytTOrd , Twait , Twindow , i ); % MC = Cal1.GetMcost(); %Cal1 = CallocationTargetOld1(cTerrain); %标签显示文字 xlabel ( ’X/km’ ) ylabel ( ’Y/km’ ) zlabel ( ’Z/km’ ) t1 = cputime ; [ solU solT solC solF ] = DDE1 . run (); solu ( i ,:) = solU ; solt ( i ,:) = solT ; solc ( i ,:) = solC ; solf ( i ,:) = solF ; Time ( i ,:) = cputime - t1 ; end %i % %结果 solu solt solc solf Time end % key=1 end % key=0 end % type =3 end % type =2 end % type=1
3 仿真结果
4 参考文献
[1]徐瑞莲, 周新志, 宁芊. 基于改进差分进化算法的多无人机航迹规划[J]. 火力与指挥控制, 2020, v.45;No.298(01):171-175+181.
5 代码下载
微信扫一扫赞赏作者
赞赏
发送给作者
人赞赏
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
