【无人机分配】一种无人机实时最优任务分配模型附matlab代码

简介: 【无人机分配】一种无人机实时最优任务分配模型附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

边界处理:超出边界为离开用户,未超出边界为该时候最新用户采用泊松分布在指定区域产生新用户伪代码:1. t=0,输入生成初始用户L(mainxx.m 中1-43)(mainxx.m中43-51 步骤2,3)2. 根据1中用户L计算无人机候选位置(one_step.m中2-44)(Onestep。M中的46-53(步骤3))3. 蒙特卡洛模拟:生成决策变量,计算适应度函数,计算最优无人机位置4. While t考虑用户行走,更新用户位置(mainxxx.m中56-77)Mainxx.m中81-87根据更新的用户,计算候选无人机位置,蒙特卡洛模拟:生成决策变量,计算适应度函数,计算最优无人机位置t=t+1end

⛄ 部分代码

clc

close all

clear all

disp('无人机优化模型')

%参数准备

%区域用户位置

d1=100; %区域A长度

d2=80; %区域A长度

N=30;%用户个数

C=6;%天线个数

bc=1;%电池损耗/每个内容---假设容量相等 电池消耗相同

Bm=[10 10 10];%无人机容量

%索引位置tuple={content k,UAV m,location q}

height=10;

h_max=20;

delta_d=0.5;%location interval

n1=3;%无人机个数

%discrete the location

%用户位置

%discrete the location

d1a=0:delta_d:d1;

d2a=0:delta_d:d2;

%离散位置

index=[];

for i=1:1:length(d1a)

   for j=1:1:length(d2a)

       index=[index;[d1a(i),d2a(j)]];

   end

end

num_index=size(index,1);%number of location

%新增人群位置计算

%新增人群不可能出现位置

d1a1=[5,d1-5];

d2a1=[5,d2-5];

[len,~]=find((index(:,1)>=d1a1(1) & index(:,1)<=d1a1(2)) & (index(:,2)>=d2a1(1) & index(:,2)<=d2a1(2)));

id_new=setdiff(1:1:size(index,1),len');  %新增用户编号

new_candi=index(id_new',:);%新增人群位置

%随机生成用户

user_index=randperm(num_index,N);

user_location=[];

for i=1:1:length(user_index)

   user_location=[user_location;index(user_index(i),:)];%%N*2

end

%仿真时间T

T=5;%仿真时间T

v=1;%用户行走速度

delta_p=2;%单位时间变化人数

theta_max=2*pi;%用户随机行走方向

best_uav=cell(1,T);

best_task=zeros(1,T);

[x_ind,task]=one_step(user_location,height,h_max,C,N,n1,bc,Bm);  %主程序

best_uav{1,1}=x_ind;

best_task(1,1)=task;

old_ind=x_ind;%设置就得无人机位置

for t=2:1:T

   %更新用户

   new_user_location=[];

   %考虑原始用户行走

   for i=1:1:size(user_location,1)

     user_location(i,1)=user_location(i,1)+v*cos(random('unif',0,theta_max));

     user_location(i,2)=user_location(i,2)+v*sin(random('unif',0,theta_max));

     %边界更新,如果超出边界 则认为用户离开

     if (user_location(i,1)>d1) | (user_location(i,1)<0) | (user_location(i,2)<0)|(user_location(i,2)>d2)

         continue;%用户离开不管

     else

         new_user_location=[new_user_location;user_location(i,:)]; %用户没离开保留

     end

   end

   %当前时刻新来客户

   num_new=random('poiss',delta_p);

   if num_new==0

       new_user_location=new_user_location;

   else

       new_id=randperm(length(id_new),num_new);

       new_coming=new_candi(new_id',:);

       new_user_location=[new_user_location; new_coming];

   end

   %用户个数更新

   N=size(new_user_location,1);

   %计算当前无人机位置

   [x_ind,task]=one_step(new_user_location,height,h_max,C,N,n1,bc,Bm);  %主程序

   %无人机位置分配--中心服务器向无人机分配无人机更新位置

   x_ind=allot_uav(x_ind,old_ind);

   best_uav{1,t}=x_ind;

   best_task(1,t)=task;

   %我下一时刻用户位置更新

   user_location=new_user_location;%上一时刻用户位置

   old_ind=x_ind;

   if mod(t,20)==0

   figure,

   plot(user_location(:,1),user_location(:,2),'r*')

   xlabel('x')

   ylabel('y')

   title(num2str(t))

   end

end

figure,plot(1:1:T,best_task,'->')

xlabel('T/(min)')

ylabel('Task/(n)')

grid on

ylim([0 40])

Q1=[];Q2=[];Q3=[];

for i=1:1:T

Q1=[Q1,(best_uav{1,i}(1,:))'];

Q2=[Q2,(best_uav{1,i}(2,:))'];

Q3=[Q3,(best_uav{1,i}(3,:))'];

end

figure,

plot3(Q1(1,:),Q1(2,:),Q1(3,:),'r->')

hold on

plot3(Q2(1,:),Q2(2,:),Q2(3,:),'b->')

hold on

plot3(Q3(1,:),Q3(2,:),Q3(3,:),'c->')

xlabel('x')

ylabel('y')

zlabel('height')

grid on

legend('UAV-1','UAV-2','UAV-3')

title('the location of UAV')


⛄ 运行结果

⛄ 参考文献


⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
4月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
240 8
|
4月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
256 8
|
4月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
466 0
|
4月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
322 0
|
4月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
170 0
|
4月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
173 0
|
4月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
179 8
|
4月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
281 8
|
4月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
299 12
|
4月前
|
人工智能 数据可视化 网络性能优化
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
182 9

热门文章

最新文章