目录
效果一览
基本介绍
基于蚁群算法的三维无人机航迹规划(Matlab)。
蚁群算法(Ant Colony Optimization,ACO)是一种模拟蚂蚁觅食行为的启发式算法。该算法通过模拟蚂蚁在寻找食物时的行为,来解决各种优化问题,尤其是在图论和组合优化方面应用较广。
程序设计
- 完整源码和数据私信博主回复基于蚁群算法的三维无人机航迹规划(Matlab)
clc
clear
close all
tic
%% 三维路径规划模型定义
startPos = [1, 1, 1];
goalPos = [100, 100, 80];
% 定义山峰地图
mapRange = [100,100,100];
[X,Y,Z] = defMap(mapRange);
%% 构造三维空间用于路径规划的切片结构体
% 定义切片结构体,将三维空间进行切片分层处理
sliceNum = 9;
slice = struct;
slice.allowedPos = []; % 每一层切片的允许访问栅格
slice.par = []; % 每一层切片连接下一层切片的参数:信息素等
slice = repmat(slice,sliceNum,1);
% 获得每一个切片允许访问的栅格
for i = 1:sliceNum
if i == 1
slice(i).allowedPos = startPos;
elseif i == sliceNum
slice(i).allowedPos = goalPos;
else
h = (i-1)*10; % 切片高度
for x = X(1,1):10:X(1,end)
for y = Y(1,1):10:Y(end,1)
if h > Z(x,y)
slice(i).allowedPos(end+1,:) = [x,y,h];
end
end
end
end
end
% 初始化信息素和启发值
for i = 1:sliceNum-1
for j = 1:size(slice(i).allowedPos,1)
pathNum = size(slice(i+1).allowedPos,1);
slice(i).par(j).tau = ones(pathNum,1);
deltaX = slice(i+1).allowedPos(:,1) - slice(i).allowedPos(j,1);
deltaY = slice(i+1).allowedPos(:,2) - slice(i).allowedPos(j,2);
deltaZ = slice(i+1).allowedPos(:,3) - slice(i).allowedPos(j,3);
slice(i).par(j).eta = 100./sqrt(deltaX.^2 + deltaY.^2 + deltaZ.^2);
end
end
参考文献
[1] 基于人工势场结合快速搜索树APF+RRT实现机器人避障规划附matlab代码
[2] 基于蚁群算法求解栅格地图路径规划问题matlab源码含GUI