【无人机任务分配】基于matlab头脑风暴算法无人机群威胁环境下多目标路径优化搜索探测【含Matlab源码 3282期】

💥💥💥💥💞💞💞💞💞💞欢迎来到麒麟科研社博客之家💞💞💞💞💞💞💥💥💥💥
在这里插入图片描述
✅博主简介:985研究生,热爱科研的Matlab仿真开发者,完整代码 论文复现 程序定制 期刊写作 科研合作 扫描文章底部QQ二维码。
🍎个人主页:麒麟科研社
🏆代码获取方式:扫描文章底部QQ二维码

⛳️座右铭:行百里者,半于九十。
更多Matlab路径规划仿真内容点击👇
Matlab路径规划(麒麟科研社版)

⛳️关注微信公众号Matlab王者助手或Matlab海神之光,更多资源等你来!!

⛄一、头脑风暴算法无人机群威胁环境下多目标路径优化搜索探测

1 头脑风暴算法
头脑风暴算法是一种优化算法,它是根据人们进行“头脑风暴”讨论困难问题的解决方案的过程而提出的。在该算法中,每个人的位置表示解空间中的一个可行解,群体将会被分为几组来进行它们的头脑风暴,每组中位置最好的人被称为该组的leader,也叫聚类中心。每个个体有两种方式来到达新的位置:独自思考,融合思考,而每个组的leader还有一种新的方式:随机思考。每个人将根据一定的规则选取其移动方式,并选择是否更新为这个新的idea。该算法主要有随机思考,独自思考,融合思考三个搜索步骤,分别提供了跳出局部最优能力,局部搜索能力和全局搜索能力。

2 头脑风暴算法步骤
头脑风暴算法是一种基于模拟人类创造性解决问题的过程的群体行为智能算法。其步骤如下:
(1)确定问题:明确需要解决的问题或目标。
(2)集思广益:邀请一群有不同背景和专业知识的人参与头脑风暴,鼓励他们自由发挥,提出各种可能的解决方案。
(3)收集想法:记录所有提出的想法,不论其是否可行或实用。
(4)分类整理:将所有想法按照相似性进行分类整理,找出其中的共性和差异性。
(5)评估筛选:对所有想法进行评估和筛选,找出最具可行性和实用性的解决方案。
(6)实施方案:将最终确定的解决方案付诸实施,并进行跟踪和评估。

3 头脑风暴算法无人机群威胁环境下多目标路径优化搜索探测
头脑风暴算法是一种模拟人类头脑风暴过程的算法,可以应用于无人机群体任务分配和路径规划中。在无人机群威胁环境下多目标路径优化搜索探测方面,头脑风暴算法可以通过将无人机的位置、目标的位置以及环境的威胁信息作为问题的输入,并使用头脑风暴算法来找到最优的路径方案。在军事领域,无人机群体的任务分配和路径规划是一个重要的问题。在威胁环境下,无人机群体需要快速而有效地搜索和探测多个目标,以确保任务的成功完成。因此,如何实现无人机群体的多目标路径优化搜索探测成为一个具有挑战性的问题。除了头脑风暴算法,还有其他算法和方法也可以用于解决这个问题,但头脑风暴算法是一种被广泛应用的方法。

⛄二、部分源代码

clc
clear all
close all
%% 搜索任务设置
global Nv
Nv = 1; %无人机数量(可设)
global huav
huav=1; %无人机高度
global Nt
Nt=3; %目标个数(可设)
global dp
dp=[1 1 1]; %目标初始情况:初始位置未知,静止目标为1;初始位置已知,静止目标为2;初始位置、速度及运动方向均已知为3
global Vt;
Vt=0; %目标最大速度为0km/s(可设)
global PD1 PF1 PD2 PF2
PF1=0; %无人机虚警概率(可设)
PD1=1; %无人机探测概率(可设)
PF2=0; %无人机虚警概率(可设)
PD2=1; %无人机探测概率(可设)
global Reg_sen
Reg_sen=4; %传感器探测范围为1km(可设)
global Search_Time;
Search_Time = 480; %最大搜索时间(可设)
global Total_targ;

global Result;

global Sim_Time;

%% 环境设置(威胁,目标),搜索图的初始化
global Map_margin
Map_margin=5; %搜索图相对搜索区域预留出的裕度,四个方向均为5km
global Search_area
Search_area=[50,50]; %搜索范围:50km50km(可设)
global Ini_Pos;
Ini_Pos=[0,0]; %无人机初始位置(可设)
global Int_Pos;
Int_Pos=[17,15;27,31;37,40]; %目标初始位置(可设)
global wwidth llength
wwidth=Search_area(1,1)+Map_margin;
llength =Search_area(1,2)+Map_margin;
global Width Length
Width=wwidth+Map_margin;
Length=llength+Map_margin; %搜索图的规模Width
Length=60(km)60(km)
global Lx Ly
Lx=60; Ly=60; %搜索图分成i_max
j_max=LxLy=60(行)60(列)的网格区域
global max_m
max_m =Lx
Ly;
global L_unit W_unit
W_unit=Width/Lx;L_unit=Length/Ly; %每一个小单元格的规模均为W_unit
L_unit
global X
X=zeros(Lx,Ly,3); %网格的坐标及编号信息
global pm
pm=zeros(max_m,Nt,Nv); %网格点的目标存在概率,取中心点的概率值
global Pm Xm Hm
Pm=zeros(max_m,Nv); %网格点上多目标的联合存在概率,取中心点的概率值
Xm=zeros(max_m,Nv); %无人机对网格点的确定度
Hm=zeros(max_m,Nv); %荷尔蒙信息
global Pm_combine Xm_combine Hm_combine
Pm_combine=zeros(max_m,1);
Xm_combine=zeros(max_m,1);
Hm_combine=zeros(max_m,1);
global DETAH_A DETAH_I
DETAH_A = zeros(max_m,Nv);
DETAH_I = zeros(max_m,Nv); %荷尔蒙的累积扩散值
%将目标及无人机的初始位置映射到搜索图上
Ini_Pos_onmap=zeros(Nv,2);
for j=1:Nv
Ini_Pos_onmap(j,:)=Ini_Pos(j,:)+Map_margin*[1,1];
end
Int_Pos_onmap=zeros(Nt,2);
for j=1:Nt
Int_Pos_onmap(j,:)=Int_Pos(j,:)+Map_margin*[1,1];
end
display(‘正在进行搜索图初始化。。。。。。。’)
global Coord_Target;
[Coord_Target]=Search_map_initial(Ini_Pos_onmap,Int_Pos_onmap); %搜索图初始化
global Target_pos
Target_pos(:,1,:)=Coord_Target;

draw_threaten();
%框出搜索区域
hold on
plot([Map_margin,Map_margin],[Map_margin,wwidth]);
hold on
plot([Map_margin,wwidth],[llength ,wwidth]);
hold on
plot([llength ,wwidth],[llength ,Map_margin]);
hold on
plot([llength ,Map_margin],[Map_margin,Map_margin]);
grid
axis([0,Length,0,Width,0,3+0.5]);
xlabel(‘X(km)’)
ylabel(‘Y(km)’)

%% 算法过程参数设置
global St
St=1; %发现目标累积次数
global FindTarget
FindTarget=[0,0]; %第几个无人机发现第几个目标
%% 滚动优化参数设置
global P_rhc M_rhc
P_rhc = 3; % 滚动优化的预测窗口
M_rhc = 3; % 滚动优化的控制窗口
Ts =20; % 决策间隔时间,两个航迹点间所用时间
X_uav = Ini_Pos_onmap(:,1);
Y_uav = Ini_Pos_onmap(:,2);
Z_uav = ones(Nv,1);
LPOS_uav=zeros(Nv,2); %无人机当前位置坐标(x,y)
NPOS_uav=zeros(Nv,2); %无人机当前位置坐标(x,y)
%% 相关仿真参数初始化设置
k = 0;
Sim_Time = 0; % 仿真时间
end_flag = 0; % 结束标志
Xp0 = Ini_Pos_onmap;
Phi0 = pi/4;
display(‘BSO算法开始。。。。。。’)
%% 开始执行搜索任务
while ( end_flag == 0 )
k = k+1;
% 利用BSO算法优化得到各无人机的控制作用[ v, ψ ]
[U_uav ,best_fitness(k)]=bso_opt( Xp0, Phi0, P_rhc, Ts);
for j = 1 : M_rhc
%计算每个控制时域内各架无人机的状态
for i = 1 : Nv
% 各个无人机在每个时域内的控制量
V_uav(i, M_rhc*(k-1)+j) = U_uav(i,2j-1);
Phi_uav(i, M_rhc
(k-1)+j) = U_uav(i,2j);
% 各架无人机的位置
X_uav(i, M_rhc
(k-1)+j+1) = X_uav(i,M_rhc*(k-1)+j) + V_uav(i, M_rhc*(k-1)+j) * cos(Phi_uav(i, M_rhc*(k-1)+j)) * Ts;
Y_uav(i, M_rhc*(k-1)+j+1) = Y_uav(i,M_rhc*(k-1)+j) + V_uav(i, M_rhc*(k-1)+j) * sin(Phi_uav(i, M_rhc*(k-1)+j)) * Ts;
Z_uav(i, M_rhc*(k-1)+j+1) = huav;
LPOS_uav(i,:)=[X_uav(i, M_rhc*(k-1)+j),Y_uav(i, M_rhc*(k-1)+j)]; %无人机上一个位置坐标(x,y)
NPOS_uav(i,:)=[X_uav(i, M_rhc*(k-1)+j+1),Y_uav(i, M_rhc*(k-1)+j+1)];
end

    % 传感器信息,是否探测到目标
    [b,NUM1,grid_num]=Judge_t(Coord_Target,LPOS_uav,NPOS_uav);

    % 搜索图的更新
    [Coord_Target]=Search_map_update(Coord_Target,LPOS_uav,NPOS_uav,Ts,b);
    Target_pos(:,M_rhc*(k-1)+j+1,:)=Coord_Target;

    Result=unique(FindTarget,'rows');
    Total_targ=length(unique(Result(:,2)));

    % 记录仿真运行时间
    Sim_Time = Sim_Time + Ts;
    if Sim_Time >= Search_Time || Total_targ == Nt
        end_flag = 1; % 达到任务要求时间,仿真结束
        break
    end
end

display('运行时间:');
Sim_Time
%     Sure(k)=sum(Xm_combine);
%     save Sure
% 为下一次迭代进行初始化设置
if end_flag ~= 1
    Xp0  = [ X_uav(:,k*M_rhc+1), Y_uav(:,k*M_rhc+1) ];
    Phi0 = Phi_uav(:,k*M_rhc);
end

end

global Xuavpath;
global Yuavpath;
Xuavpath = X_uav;
Yuavpath = Y_uav;

global XX1;
global YY1;
global ZZ1;
for i=1:Lx
for j=1:Ly
m=i+(j-1)*Lx;
X1(1,m)=X(i,j,1);
Y1(1,m)=X(i,j,2);
Z1(1,m)=Pm_combine(m,1); %概率分布

end

end

[XX1,YY1,ZZ1]=griddata(X1,Y1,Z1,linspace(0,Length)',linspace(0,Width),‘v4’);%插值
%% 输出搜索结果

Result=unique(FindTarget,‘rows’);
sprintf(‘发现目标情况为:’);
if Result==0
sprintf(‘未发现目标’)
Total_targ=0;
else
for i=1:length(Result(:,1))
sprintf(‘第%d个无人机发现了第%d个目标’,Result(i,1),Result(i,2))
end
Total_targ=length(unique(Result(:,2)));
end

%% 绘制结果图
axis([0,Length,0,Width]);
hold on
grid

plot(X_uav(1,:),Y_uav(1,:),‘color’,[0.8 0.8 0.8],‘linewidth’,2);
scatter(X_uav(1,:),Y_uav(1,:),‘.b’,‘linewidth’,4.5);
hold on

%五个目标点的运动轨迹
hold on
for j=1:Nt
scatter(Target_pos(j,:,1),Target_pos(j,:,2),‘.g’,‘linewidth’,1.5);
plot(Target_pos(j,:,1),Target_pos(j,:,2),‘g’,‘linewidth’,1);
plot(Coord_Target(j,1),Coord_Target(j,2),‘rp’,‘linewidth’,2);
text(Coord_Target(j,1)+1,Coord_Target(j,2)-1,0,[‘\bfT_’ num2str(j)],‘color’,‘b’);
hold on
end

msgbox({‘找到的目标总数’,num2str(Total_targ)});
% figure
%
% xlabel(‘Iteration’)
% ylabel(‘Value’)
axis equal

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]牛龙辉,陈海洋,季野彪.结合粒子群算法与任务分配协调策略的仓储多机器人任务分配[J].西安工程大学学报. 2020,34(06)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值