💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文内容如下:🎁🎁🎁
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
具有连通性约束的多无人机(UAV)清扫覆盖路径规划研究
本项目包含两种混合整数线性规划模型,用于规划多无人机系统的路径,以实现至少1度周期性覆盖,同时确保在整个飞行过程中与基站的连通性。第一种算法使无人机能够在给定的时间步数内最大化覆盖面积,第二种算法则使无人机能够在最小化所需移动次数的同时达到期望的覆盖水平。本研究重点在于通过无人机间的通信链路,确保无人机与基站之间持续的多跳连通性。
一、研究背景与意义
1.1 研究背景
随着无人机技术的快速发展,多无人机系统(Multi-UAV System)在环境监测、灾害救援、农业植保、地理测绘等领域展现出巨大的应用潜力。其中,清扫覆盖任务(如区域搜索、污染监测、地形扫描)要求无人机群能够高效、全面地覆盖指定区域。然而,多无人机系统的路径规划面临两大核心挑战:一是如何实现高效的区域覆盖,二是如何确保无人机在执行任务过程中与基站(或控制中心)保持持续的通信连通性,尤其是在复杂或障碍物密集的环境中。
1.2 研究意义
本研究旨在通过构建混合整数线性规划(MILP)模型,解决多无人机清扫覆盖任务中的路径规划问题,同时考虑连通性约束。这一研究不仅有助于提升多无人机系统的任务执行效率和可靠性,还为未来智能无人系统在复杂环境下的自主作业提供了理论支持和技术方案。
二、问题描述与模型构建
2.1 问题描述
给定一个二维或三维的待覆盖区域,以及一组具备通信能力的无人机,任务要求为:
- 覆盖要求:实现至少1度周期性覆盖(即每个点至少被一架无人机访问一次)。
- 连通性约束:在整个飞行过程中,每架无人机必须通过多跳通信链路与基站保持连通。
- 优化目标:
- 算法1:在给定时间步数内最大化覆盖面积。
- 算法2:在最小化移动次数的同时达到期望的覆盖水平。
2.2 混合整数线性规划模型构建
2.2.1 基础变量定义
- 无人机集合:U={u1,u2,...,un}
- 区域网格点集合:P={p1,p2,...,pm},将待覆盖区域划分为离散网格点。
- 时间步集合:T={1,2,...,Tmax}
- 通信链路集合:L,表示无人机间或无人机与基站间的可能通信连接。
2.2.2 决策变量
- xu,p,t∈{0,1}:若无人机u在时间步t访问点p,则为1,否则为0。
- yu,v,t∈{0,1}:若无人机u与无人机v(或基站b)在时间步t存在直接通信链路,则为1,否则为0。
- zu,t∈{0,1}:辅助变量,用于表示无人机u在时间步t是否处于活跃状态(参与覆盖任务)。
2.2.3 目标函数
- 算法1目标函数:

即在给定时间步数Tmax内,最大化所有无人机访问的网格点总数。
- 算法2目标函数:

同时满足覆盖要求,即最小化所有无人机的总移动次数(通过zu,t间接控制,需结合覆盖约束)。
2.2.4 约束条件
- 覆盖约束:

每个网格点至少被一架无人机在某个时间步访问。
- 连通性约束:
- 每架无人机在每个时间步必须通过多跳链路与基站连通。这可通过定义连通性图并要求从每架无人机到基站存在路径来实现,具体可转化为线性约束(如使用流网络或路径存在性约束)。
- 示例简化约束(实际需更复杂建模):

- 无人机能力约束:
- 每架无人机在每个时间步最多访问一个点:

其中 |
- 时间连续性约束(可选,用于限制无人机移动速度):
- 无人机在相邻时间步的移动距离不超过最大飞行距离:

其中 |
三、算法设计与实现
3.1 算法1:最大化覆盖面积
- 输入:区域网格点P,无人机集合U,时间步数Tmax,通信约束。
- 输出:每架无人机在每个时间步的访问点xu,p,t,通信链路状态yu,v,t。
- 步骤:
- 初始化所有xu,p,t和yu,v,t为0。
- 使用MILP求解器(如CPLEX、Gurobi)求解上述模型,目标为最大化覆盖面积。
- 输出最优解,包括访问计划和通信链路安排。
3.2 算法2:最小化移动次数
- 输入:区域网格点P,无人机集合U,期望覆盖水平(如覆盖比例),通信约束。
- 输出:每架无人机在每个时间步的访问点xu,p,t,通信链路状态yu,v,t,总移动次数。
- 步骤:
- 初始化所有xu,p,t和yu,v,t为0。
- 将覆盖要求转化为约束(如至少覆盖k%的网格点)。
- 使用MILP求解器求解模型,目标为最小化总移动次数(通过zu,t间接控制)。
- 输出最优解,包括访问计划、通信链路安排和总移动次数。
四、仿真与实验分析
4.1 仿真环境设置
- 区域大小:设定为L×W的矩形区域,划分为N×N的网格点。
- 无人机数量:n架,每架具备相同的飞行和通信能力。
- 基站位置:固定于区域边缘或中心。
- 通信范围:设定每架无人机的最大通信距离,用于构建通信链路。
4.2 实验设计
- 对比实验:比较有无连通性约束下的覆盖效率和移动次数。
- 参数分析:分析无人机数量、通信范围、时间步数等参数对算法性能的影响。
- 鲁棒性测试:测试算法在部分无人机故障或通信中断情况下的表现。
4.3 结果分析
- 覆盖效率:评估算法在给定时间内覆盖的区域比例。
- 移动次数:统计达到期望覆盖水平所需的最少移动次数。
- 连通性保持:验证在整个飞行过程中无人机与基站的连通性是否得到满足。
- 性能对比:与现有算法(如无连通性约束的覆盖算法)进行对比,突出本研究的优势。
五、结论与展望
5.1 研究结论
本研究通过构建混合整数线性规划模型,成功解决了多无人机清扫覆盖任务中的路径规划问题,同时考虑了连通性约束。实验结果表明,所提算法能够在保证连通性的前提下,有效提升覆盖效率或减少移动次数,为多无人机系统的实际应用提供了有力支持。
5.2 未来展望
- 动态环境适应:研究无人机在动态变化环境(如移动障碍物、突发通信干扰)下的路径规划方法。
- 分布式算法:探索分布式路径规划算法,减少对中央控制器的依赖,提高系统的鲁棒性和可扩展性。
- 三维空间覆盖:将二维覆盖问题扩展至三维空间,适用于更复杂的应用场景(如高层建筑监测、空中交通管理)。
- 机器学习融合:结合机器学习技术,优化路径规划过程中的决策制定,提高算法的适应性和智能性。
📚2 运行结果



部分代码:
clc; clear all; close all;
%tic;
%% user defined input
Rs = sqrt(2); %Sensing Radius
Rc = 2*Rs; %Communication Radius
cr = 1;
%% Network Grid
x = 1:12;
y = 1:12;
b=x; a=y; %making it (row,column) grid instead of (x,y)
[X,Y] = meshgrid(a,b);
Nx=length(x);
Ny=length(y);
TG = [Y(:),X(:)];
sz=[Nx,Ny];
P_sink = 79; % Index position of sink
[row,col] = ind2sub(sz,P_sink);
sink = [row,col]; % 2D location of sink
Obs = [];
%Obs = [2,2;2,3;3,2;3,3];%obstacle
if ~isempty(Obs)
G_index = ~ismember(TG,Obs,'rows');
G = [TG(G_index,1),TG(G_index,2)];
G1 = sub2ind(sz,G(:,1),G(:,2));
Cmax = Nx*Ny-length(Obs)-1;
else
G = TG;
G1 = sub2ind(sz,TG(:,1),TG(:,2));
Cmax = Nx*Ny-1;
end
display(G1); %target set
%% Communicable and Sensing grid points sets
[Irc,Irc_sink] = Communicable_Gpt(P_sink,G,sz,Rc); % communication matrix
[L,Irs,Irs_sink] = Sensing_Gpt(P_sink,G,sz,Rs); % sensing matrix
N=3; %(number of UAVs)
T=10; %(max no. of time steps)
%% Variables
%Ci = zeros(Nx*Ny,1); % overall coverage
%Ct_i,n = zeros(N*T*Nx*Ny,1); % individual UAVs' coverage
%Zt_i,n = zeros(N*T*Nx*Ny,1); % optimizing variable
%S is our variable vector with Nx*Ny number of Ci, T*N*Nx*Ny no. of Ct_i,n and T*N*L*Nx*Ny no. of Zt_i,n variables respectively
% S = [Ci; Ct_i,n (n=1:N,t=1:T); Zt_i,n (n= 1:N,t=1:T)];
% mobile(1:N) = P_sink;
% mob_node = [mobile]';
% display(mob_node);
%% Objective function
ff = zeros((1+ 2*N*T)*Nx*Ny ,1);
%ff(((1+T*N)*Nx*Ny + 1) : end)=1;
for t=1:T
for n=1:N
ff(G1+(1 + T*N)*Nx*Ny + ((t-1)*N*Nx*Ny)+(n-1)*Nx*Ny) = 1 ;
ff((1 + T*N)*Nx*Ny + ((t-1)*N*Nx*Ny)+(n-1)*Nx*Ny + P_sink) = 0 ;
end
end
%% Initial Position Constraint
% R = zeros(N, (1+ 2*N*T)*Nx*Ny);
% for l=1:N
% r1= zeros((Nx*Ny+ 2*N*T*Nx*Ny) ,1);
% r1(((N*T+1)*Nx*Ny)+ (l-1)*Nx*Ny + mob_node(l,1))=1;
% R(l,:)=r1;
% end
%% Position Costraint
%%1(a)%%one-UAV-at-single-pt
F=zeros(N*T,(1+ 2*N*T)*Nx*Ny);
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈4 Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

2783

被折叠的 条评论
为什么被折叠?



