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

news2024/11/16 19:36:12

✅作者简介:热爱科研的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+1

end

⛄ 部分代码

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电子书和数学建模资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Android嵌套H5,自定义控制页面能否实现下拉刷新功能

目录使用场景问题描述思路分析解决方案结语使用场景 关于Android嵌套H5页面使用下拉刷新功能的问题&#xff1a;当我们在Android中使用第三方框架SmartRefreshLayout实现App的下拉刷新功能时&#xff0c;如果H5页面有部分功能设计到上下滑动的话&#xff0c;就会引起“误触”下…

Jenkins Kubernetes 应用部署与容器构建

Jenkins & Kubernetes 应用部署与容器构建 文章目录Jenkins & Kubernetes 应用部署与容器构建1. 前言2. Jenkins 配置 kubernetes credentials3. Jenkins 插件3.1 安装 Kubernets Plugin3.2 安装 Docker Plugin3.3 安装 Git Plugin4. Jenkins 连接 minikube 集群5. 配置…

MQ高级(一)消息可靠性

消息从生产者发送到exchange&#xff0c;再到queue&#xff0c;再到消费者&#xff0c;有哪些导致消息丢失的可能性&#xff1f; &#xff08;1&#xff09;发送时丢失&#xff1a; 1️⃣生产者发送的消息未送达exchange 2️⃣消息到达exchange后未到达queue &#xff08;2&…

【物理应用】基于傅里叶伽辽金谱法二维纳维-斯托克斯附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

[附源码]计算机毕业设计教育企业网站Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

当我们说大数据Hadoop,究竟在说什么?

前言 提到大数据&#xff0c;大抵逃不过两个问题&#xff0c;一个是海量的数据该如何存储&#xff0c;另外一个就是那么多数据该如何进行查询计算呢。好在这些问题前人都有了解决方案&#xff0c;而Hadoop就是其中的佼佼者&#xff0c;是目前市面上最流行的一个大数据软件&…

【精品】【含数据+代码+论文链接】交通流预测代码集合

前言 交通流预测代码集合 一、T-GCN 一种用于流量预测的时间图卷积网络 准确、实时的交通预测在智能交通系统中起着重要作用&#xff0c;对城市交通规划、交通管理和交通控制具有重要意义。然而&#xff0c;交通预测一直被认为是一个开放的科学问题&#xff0c;受限于城市…

Python完成期末大作业:简易计算器【案例分享】

嗨害大家好鸭&#xff01;我是小熊猫~ 好像好久都没给大家更新啦&#xff01; 这次来给大家做一个我弟刚刚做完的期末考试大作业 做一个简易计算器 要求&#xff1a; 1.要有加减乘除四个方法的编写2.提交的代码悟编译错误3.代码需要有基础的健壮性判断 源码、资料电子书点击…

汉明码(海明码)解析

文章目录前言启发汉明码介绍怎么实现汉明码?怎么实现更高模块的汉明码?为什么校验位一定是2的n次方?用更简洁的方式理解汉明码前言 相信使用过光盘的读者都会有这样一种经历,如果不小心刮花了盘面,大部分情况下,把它放进DVD机器却仍然可以播放视频,这是为什么呢? 因为光盘…

Tomcat打破双亲委派机制实现各应用程序的类库相互隔离原理与实现demo

1、实现原理 以Tomcat类加载为例&#xff0c;Tomcat 如果使用默认的双亲委派类加载机制行不行&#xff1f; 我们思考一下&#xff1a;Tomcat是个web容器&#xff0c; 那么它要解决什么问题&#xff1a; 1. 一个web容器可能需要部署两个应用程序&#xff0c;不同的应用程序可能会…

C++对const引用的特殊处理、为什么函数形参的引用建议加上const?只是为了防止值被修改吗?

前言&#xff1a;我们知道普通变量、指针、函数形参&#xff0c;加上const修饰表示不可改变&#xff0c;但是引用前面加上const就有特别之处了 目录 const日常使用 const引用的特别处理 const引用创建临时变量规则 引用形参声明为const的三个理由 const日常使用 我们知道如…

resnet(2)------看看卷积

文章目录1 . 人脑是怎么认识到物体的2. 卷积3. 卷积核1 . 人脑是怎么认识到物体的 在谈卷积之前&#xff0c;我们先来了解一下人是怎么认识物体的。 人脑是个非常复杂的结构&#xff0c;是由无数个神经元连接起来&#xff0c;每个神经元都有自己负责记忆的东西。当人眼看到物体…

关于自增约束auto_increment需要注意的地方,mysql8版本的报错

目录一&#xff0c;自增约束auto_increment需要注意的地方附&#xff1a;就算插入数据失败&#xff0c;也进行自增&#xff1a;二&#xff0c;自增约束auto_increment在MySQL8版本的报错&#xff1a;一&#xff0c;自增约束auto_increment需要注意的地方 1 创建数据库表class&…

Logistic回归

通常&#xff0c;Logistic回归用于二分类问题&#xff0c;例如预测明天是否会下雨。当然它也可以用于多分类问题. Logistic回归是分类方法&#xff0c;它利用的是Sigmoid函数阈值在[0,1]这个特性。Logistic回归进行分类的主要思想是&#xff1a;根据现有数据对分类边界线建立回…

啊?我这手速也太差了吧?——C++Easyx“挑战六秒”小游戏

&#x1f411;本文作者&#xff1a;C橙羊&#x1f411; &#x1f3ae;&#x1f50a;本文代码适合编译环境&#xff1a;DEV-C&#x1f4bb; ✨&#x1f9e8;温馨提示&#xff1a;此文转载于codebus&#x1f389;&#x1f3a0; 最近橙羊在Easyx官网的codebus里随便逛逛的时候&am…

SpringMVC从入门到精通(一)

文章目录1. SpringMVC基本概念1.1 三层架构1.2 MVC架构1.3 什么是SpringMVC1.4 SpringMVC的优势2. SpringMVC 的入门2.1 入门程序2.2 SpringMVC执行原理刨析2.3 SpringMVC的核心执行流程2.4 SpringMVC的组件3. RequestMapping注解4.请求参数绑定4.1 参数绑定4.2 请求参数乱码问…

磨金石摄影技能干货分享|优秀纪实摄影作品欣赏—北京记事

1、蜂窝煤 三名青年男子踏着三轮车拉着满满一车蜂窝煤。脸上流露出清澈的笑容。这是九十年代的北京&#xff0c;背后的天安门格外的显眼。那时候处于改革开放的初期&#xff0c;虽然还不是很富裕&#xff0c;但大家脸上洋溢着幸福与希望的笑容。 蜂窝煤是冬天必备&#xff0c;九…

【强化学习论文合集】十一.2018国际表征学习大会论文(ICLR2018)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

历届青少年蓝桥杯python编程选拔赛 STEMA评测比赛真题解析【持续更新 已更新至34题】

蓝桥杯python选拔赛真题 历届青少年蓝桥杯python编程选拔赛真题解析 选拔赛 真题34-回文数升级 【蓝桥杯选拔赛真题34】python回文数升级 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析_小兔子编程的博客-CSDN博客python回文数升级2020年青少年组python蓝桥杯选拔赛真题一、…

剑指Offer39——数组中出现次数超过一半的数字

摘要 剑指Offer39 数组中出现次数超过一半的数字 本题常见的三种解法&#xff1a; 哈希表统计法&#xff1a; 遍历数组 nums &#xff0c;用 HashMap 统计各数字的数量&#xff0c;即可找出 众数 。此方法时间和空间复杂度均为 O(N) 。数组排序法&#xff1a; 将数组 nums 排…