欢迎来到本博客❤️❤️
博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
本文目录如下:
目录
1 概述
2 运行结果
3 参考文献
4 Matlab代码实现
随着各种新兴技术的发展,无人机在灾后救援、物资运输、环境监测、军事作战等多个领域起着广泛的应用[1]。航迹规划是无人机执行任务中最重要的部分之一,是指在一定的约束条件下,找到一条能从起点抵达终点且安全、快速、消耗代价小的路线[2]。因此,航迹规划问题经常被当作优化问题来处理,但传统的优化方法无法得到较为精确的解。近年来,受到自然界现象的启发,国内外学者提出了许多生物智能算法如人工蜂群算法、蚁 群 算 法 、天牛须搜索算法 等。它们具有原理简 单、易收敛到最优解、参数设置简单等优点,因此在优化问题中有着广泛的应用。
灰 狼 优 化 算 法是一种群体智能搜索算法,借鉴了灰狼群体中的社会等级制度和捕食行为模式,具有较强的收敛性能和探索能力[4]。但是随着维度和复杂性的增加,GWO 算法 会出
现收敛速度慢、易陷入局部最优、寻优效果较差等问题,于是一些改进的算法被相继提出,一定程度上解决了上述问题。
在无人机航迹规划问题中,建立无人机的规划空间环境和航迹评价指标是进行航迹规划的前提准备。
不同的环境信息能够直接影响航迹规划的结果,也会影响执行任务的效果,因此对规划空间环境进行精准建模是十分重要的。考虑到数据存储和计算量的问题,本文采用栅格法来建立规划空间环境模型。
部分代码:
% Calculating theta base on start and target points
theta = atand((target(2) - start(2))/(target(1) - start(1)));
% Parameter to control size of bounds
delta_d = 0;
% Number of wolfs
N = 50;
% Number of point generation for each wolf
d = 10;
% Constant for Cost_Function
mhio = 0.4;
% Optimization itteration
t_max = 100;
%% Initialization
% Transofrm point and threats to the new coordination
start_transform = Coordinate_Transfromation(start, start, theta);
target_transform = Coordinate_Transfromation(target, start, theta);
threats_tranform = threats;
for i = 1:size(threats, 1)
threats_tranform(i, 1:3) = Coordinate_Transfromation(threats(i, 1:3), start, theta);
end
% Calculating bounds for initialization and producing N random intial points
[P_min, P_max] = UL_Bounds(threats_tranform, delta_d);
wolfs_positions = Initialization(N, d, target_transform, start_transform, P_min, P_max);
% calculating fittness of each wolf
fitness = Inf;
for i=1:N
% wolfs_positions(:, :, i) is a set of d points' coordinates for the ith wolf
fitness_wolf = Cost_Function(wolfs_positions(:, :, i), threats_tranform, mhio, d);
if fitness_wolf < fitness
fitness = fitness_wolf;
X_alpha = wolfs_positions(:, :, i);
X_alpha_index = i;
end
end
% Generating matrix for Xi(t).
X_t = zeros(d, 3, N, t_max);
for i = 1:N
for t = 1:t_max
if t==1
% We have Xi(1) for different all i. So we fill the X_t(:,:,i,1)
% with the known positions.
X_t(:,:,i,1) = wolfs_positions(:, :, i);
else
% Also since all the time for all wolfs, the x coordinate
% should be the same, we fill it so !
X_t(:,1,i,t) = wolfs_positions(:, 1, i);
% Also the last row (d) for all X_t should be the target
X_t(d,:,i,t) = target_transform;
end
end
end
部分理论来源于网络,如有侵权请联系删除。
[1]许乐,赵文龙.基于新型灰狼优化算法的无人机航迹规划[J].电子测量技术,2022,45(05):55-61.DOI:10.19651/j.cnki.emt.2108509.
[2]芦方旭,米志超,李艾静,王海,田雨露.基于灰狼算法的无人机基站三维空间优化部署[J].兵器装备工程学报,2021,42(07):185-189.