【无人机分配】一种无人机实时最优任务分配模型附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电子书和数学建模资料


相关文章
|
19天前
|
传感器 算法 安全
【无人机】四旋翼飞行器控制、路径规划和轨迹优化(Matlab实现)
【无人机】四旋翼飞行器控制、路径规划和轨迹优化(Matlab实现)
118 2
|
19天前
|
机器学习/深度学习 存储 并行计算
【无人机】基于MPC的无人机路径规划研究(Matlab代码实现)
【无人机】基于MPC的无人机路径规划研究(Matlab代码实现)
124 6
|
19天前
|
机器学习/深度学习 边缘计算 人工智能
【无人机】采用NOMA的节能多无人机多接入边缘计算(Matlab代码实现)
【无人机】采用NOMA的节能多无人机多接入边缘计算(Matlab代码实现)
|
19天前
|
机器学习/深度学习 传感器 运维
【电机轴承监测】基于matlab声神经网络电机轴承监测研究(Matlab代码实现)
【电机轴承监测】基于matlab声神经网络电机轴承监测研究(Matlab代码实现)
|
19天前
|
数据采集 算法 调度
【电力系统】基于matlab虚拟电厂内部负荷调度优化模型(matlab+yalmip+cplex)(Matlab代码实现)
【电力系统】基于matlab虚拟电厂内部负荷调度优化模型(matlab+yalmip+cplex)(Matlab代码实现)
|
19天前
|
传感器 并行计算 算法
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
|
19天前
|
存储 并行计算 算法
【图像压缩】在 MATLAB 中使用奇异值分解 (SVD) 进行图像压缩(Matlab代码实现)
【图像压缩】在 MATLAB 中使用奇异值分解 (SVD) 进行图像压缩(Matlab代码实现)
151 3
|
19天前
|
机器学习/深度学习 算法 新能源
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
|
20天前
|
算法 Java 计算机视觉
【图像去模糊】非盲去模糊实景图像处理,使用点扩散函数(PSF)快速去除实景图像中的模糊(Matlab代码实现)
【图像去模糊】非盲去模糊实景图像处理,使用点扩散函数(PSF)快速去除实景图像中的模糊(Matlab代码实现)
121 2
|
20天前
|
机器学习/深度学习 资源调度 算法
【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)
【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)

热门文章

最新文章