【三维路径规划】matlab 蚁群算法UAV巡检路径【Matlab 195期】

一、简介

1 蚁群算法的提出
蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。遗传算法在模式识别、神经网络、机器学习、工业优化控制、自适应控制、生物科学、社会科学等方面都得到应用。
2 算法的基本原理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、源代码

clear all;
warning('off');   % 消除警告
false = 0;
true = 1;

%% (1)Setup the movie stuff 设置视频信息
make_movie = true;
% make_pot = false;    % 这个地方暂时可以理解为可以省略,与下程序相互对应;
% make video showing potential field | Takes a long time to make, so usually set to false
% 设置视频的字段需要很长时间,所以通常设置为false
writerObj = [];
% Define the plane of points to evaluate potential function, if you are making video of potential function
% 如果你制作势能函数的视频,定义点的平面来评估势能函数
x = linspace(0, 50, 100);    % 0-50中平均分100个数,组成1*100double矩阵
y = linspace(0, 50, 100);    % 0-50中平均分100个数,组成1*100double矩阵 
z = 5;                       % 这个地方的5代表的是什么?
[X,Y] = meshgrid(x,y);       % X为100*100double,Y为100*100double
% meshgrid用于从数组x和y产生网格.生成的网格矩阵X和Y大小是相同的.它也可以是更高维的.
[rx, cx] = size(X);          % rx = 100;cx = 100
Z = zeros(rx, cx);           % Z为100*100double

% Setup the movie file and frame rate 设置视频文件和帧速率
if( make_movie )
    writerObj = VideoWriter('3D_test3.avi');  % 定义一个视频文件用来存动画
    writerObj.FrameRate = 60;                 % 将帧写入视频FrameRate:帧速率(每秒钟60张图)
    open(writerObj);                          % 打开该视频文件
end
% initial perspective in video  视频的初始化角度
az = -60;
el = 20;
% final perspective in video  视频的最后角度
azf = -60;
elf = 20;


%%  (2)Parameter specifications for drones    设置无人机的参数
Nd =2;                            % number of drones in swarm                (无人机种群数量)
ind_c = -1;                       % index for center/lead drone              (中心/领头无人机的指数) 这条语句的作用是什么?
radius =1.5;                      % radius for drones and possibly obstacles (无人机和可能障碍物的半径)
dims = [0, 50; 0, 50; 0, 50];     % first row is lower and upper x bounds    (设置三维坐标的界限)
                                  % second row is lower and upper y bounds
                                  % third row is lower and upper z bounds
xc = [40,40,40]';               % initial location for central/lead drone  (中央/领头无人机的初始位置)
end_loc = [5, 5, 5]';             % Desired end location                     (预期结束位置)

%% (3)Setup the waypoint object 设置路径对象
dist_thresh = 2;                  % 这个函数的设置似乎没有什么影响              
% The distance threshold(距离阈值) the swarm must be within of the waypoint(距离阈值群必须在航路点内)
                                  % to make the waypoint change to the new one
% 群体的距离阈值必须在航点内,以使航点变为新的航点
% 如何连接航路点?
wypt = Waypoints( dist_thresh );
wypt.addPoint( [ 15; 50; 20 ] );  % first waypoint   (第一个航点,就是蓝色的点)
wypt.addPoint( [ 0; 50; 0 ] );    % second waypoint  (第二个航点)
wypt.addPoint( end_loc );         % last waypoint    (最后一个航点)

% 蓝色的点
wypt2 = Waypoints( dist_thresh ); % wypt和wypt2的区别在哪里?为什么优先考虑wypt2的改变值     
wypt2.addPoint( [ 15; 50; 20 ] ); % first waypoint
wypt2.addPoint( [ 0; 50; 0 ] );   % second waypoint
wypt2.addPoint( end_loc );        % last waypoint
classdef Queue < handle
    
    properties
        items;
        count;
    end
    
    
    methods
        
        function obj = Queue()
            obj.items = [];
            obj.count = 0;
        end
        
        function push( obj, v )
            if( ~isempty(v) )
                obj.count = obj.count + 1;
                obj.items(obj.count).d =v;
            end
        end
        
        function v = pop( obj )
            if( obj.count > 0 )
                v = obj.items(1).d;
                obj.items = obj.items(2:end);
                obj.count = obj.count - 1;
            else
                v = [ ];
            end
        end
        
    end    
end

三、运行结果

在这里插入图片描述

四、备注

完整代码或者代写添加QQ912100926。
往期回顾>>>>>>
【路径规划】粒子群优化算法之三维无人机路径规划【Matlab 012期】
【路径规划】遗传算法之多物流中心的开放式车辆路径规划【Matlab 013期】
【路径规划】粒子群算法之机器人栅格路径规划【Matlab 014期】
【路径规划】蚁群算法之求解最短路径【Matlab 015期】
【路径规划】免疫算法之物流中心选址【Matlab 016期】
【路径规划】人工蜂群之无人机三维路径规划【Matlab 017期】
【路径规划】遗传算法之基于栅格地图机器人路径规划【Matlab 018期】
【路径规划】蚁群算法之多无人机攻击调度【Matlab 019期】
【路径规划】遗传算法之基于栅格地图的机器人最优路径规划【Matlab 020期】
【路径规划】遗传算法之考虑分配次序的多无人机协同目标分配建模【Matlab 021期】
【路径规划】蚁群算法之多中心vrp问题【Matlab 022期】
【路径规划】蚁群算法之求解带时间窗的多中心VRP【Matlab 023期】
【路径规划】遗传算法之多中心VRP求解【Matlab 024期】
【路径规划】模拟退火之求解VRP问题【Matlab 025期】
【路径规划】A星之栅格路径规划【Matlab 026期】
【路径规划】基于一种带交叉因子的双向寻优粒子群栅格地图路径规划【Matlab 027期】
【路径规划】【TSP】蚁群算法之求解TSP问题含GUI【Matlab 028期】
【路径规划】蚁群算法之栅格地图路径规划【Matlab 029期】
【路径规划】遗传算法之旅行商 TSP 【Matlab 030期】
【路径规划】模拟退火算法之旅行商 TSP 问题【Matlab 031期】
【路径规划】蚁群算法之智能车路径规划【Matlab 032期】
【路径规划】华为杯:基于matlab 无人机优化运用于抢险救灾【Matlab 033期】
【路径规划】matlab之最小费用最大流算问题【Matlab 034期】
【路径规划】A*算法之解决三维路径规划问题【Matlab 035期】
【路径规划】人工蜂群算法之路径规划【Matlab036期】
【路径规划】人工蜂群算法之路径规划【Matlab 037期】
【路径规划】蚁群算法之求解多旅行商MTSP问题【Matlab 038期】
【路径规划】蚁群算法之无人机路径规划【Matlab 039期】

【路径规划】遗传算法之求解多VRP问题【Matlab 040期】
【VRP】遗传算法之带时间窗的车辆路径问题【Matlab 041期】
【路径规划】蚁群算法之三维路径规划【Matlab 042期】
【路径规划】粒子群优化蚁群之求解最短路径【Matlab 043期】
【TSP问题】差分进化之求解TSP问题【Matlab 044期】
【路径规划】RRT之三维路径规划【Matlab 144期】
【路径规划】人工势场算法之无人机编队路径规划【 Matlab 145期】
【VRP问题】节约算法之求解TWVRP问题【Matlab 146期】
【VRP问题】节约算法之求解CVRP问题【Matalb 147期】
【VRP问题】禁忌搜索算法之求解VRP问题【Matalb 148期】
【VRP问题】模拟退火算法之求解CVRP问题【Matlab 149期】
【VRP问题】模拟退火求解带时间窗之TWVRP问题【Matlab 150期】
【VRP问题】人工鱼群算法之求解带时间窗VRP问题【Matlab 151期】
【VRP问题】遗传算法之求解带容量VRP问题【Matlab 152期】
【路径规划】狼群算法算法之三维路径规划【Matlab 153期】
【路径规划】人工势场算法之无人机三维路径规划【Matlab 154期】
【路径规划】改进差分算法之三维多无人机协同航迹规划【Matlab 155期】
【路径规划】人工蜂群算法之多无人机三维路径规划【Matlab 156期】
【路径规划】麻雀搜索算法之无人机三维路径规划【Matlab 157期】
【路径规划】蚁群算法之三维路径规划【Matlab 158期】
【路径规划】免疫算法之最短路径规划【Matlab 159期】
【旅行商问题】免疫算法之求解旅行商问题【Matlab 160期】
【路径规划】遗传算法的公交排班系统分析【Matlab 161期】
【TSP】粒子群算法Hopfield之TSP求解【Matlab 162期】
【路径规划】A和改进A的路径规划【Matlab 163期】
【TSP】改进的禁忌搜索算法之求解旅行商问题【Matlab 170期】
【TSP】改进的蚁群算法之求解旅行商问题【Matlab 171期】
【路径规划】模拟退火算法之求解火灾巡逻最短路径【Matlab 193期】
【三维路径规划】蚁群算法寻优潜水器的三维路径【Matlab 194期】

猜你喜欢

转载自blog.csdn.net/m0_54742769/article/details/113781659