D2D用户的功率优化算法研究

news2024/11/6 9:40:12

  D2D通信技术是指两个对等的用户节点之间直接进行通信的一种通信方式。在由D2D通信用户组成的分布式网络中,每个用户节点都能发送和接收信号,并具有自动路由(转发消息)的功能。网络的参与者共享它们所拥有的一部分硬件资源,包括信息处理、存储以及网络连接能力等。这些共享资源向网络提供服务和资源,能被其它用户直接访问而不需要经过中间实体。在D2D通信网络中,用户节点同时扮演服务器和客户端的角色,用户能够意识到彼此的存在,自组织地构成一个虚拟或者实际的群体。

国内外针对这类类似系统的资源分配和功率算法有很多,下面给出一些国内外的研究现状

  1. 2017年,Shuhang Zhang[1] 设计了一种适用于无人机中继系统的功率和无人机轨迹联合优化算法,该算法将一个非凸优化问题拆解为2个凸优化问题进行优化,仿真结果显示该算法与穷举算法性能比较接近,说明了该方式的有效性。
  2. 2017年, Hongliang Zhang[2]针对5G中的D2D资源分配问题,提出了一种基于感知的D2D用户信道分配算法,仿真结果显示该资源分配算法有效降低了D2D用户间的干扰
  3. 2018年,刘晓玲针对D2D[3]用户的之间的干扰问题,基于博弈论提出了一种带代价因子的优化函数,可以使得整体的D2D用户吞吐量更大化。

D2D通信优点

  • 提高频谱效率
  • 提升用户体验
  • 扩展通信应用

D2D通信问题

  • 用户信道分配
  • 同频用户间干扰
  • D2D与BS切换

优化策略

  • 1、合理分配D2D用户对信道减少相邻用户干扰
  • 2、合理设置D2D用户功率降低通信到用户干扰
     
  • 假设一共KD2D用户共用N个子信道,且各个子信道间不会相互干扰,但是同一个子信道的用户间会相互干扰,则此时整体容量可以表示为

  • 此时的优化目标函数可以表示为

子信道分配算法

功率优化算法

——算法流程如下

  1. 先进行D2D用户的信道分配一共N信道
  2. 逐信道进行能量效率优化,下面描述以信道1为例
  3. 信道1进行优化能量效率1,首先假设所有用户以相同功率发射,找到使得优化能量效率最大化的发射功率,采用高斯迭代法找到最优的发射功率。
  4. 固定其他用户功率,逐用户调整信号发射功率使得整体的能量效率最大化,这里采用高斯迭代法进行优化
  5. 重复步骤4直至所有用户优化数次
  6. 将发射功率并入路径损耗中重复步骤2-5数次
  7. 重复2-6直至所有信道优化完成

根据前面的模型,系统容量和效率公式如下

上述的EE为所有信道的能量效率,对其进行优化使其最大化可以约等于等效为每个子信道进行能量效率EEk最大化

对前面的能量效率Eek进行求导可以表示为

接下来可以用高斯迭代求解上述方程。

逐用户功率优化算法

前面确定了所有用户统一功率作为功率优化的起点,接下来固定其他用户功率,逐用户调整信号发射功率使得整体的能量效率最大化

用户J的能量效率如下

用户J的能量效率公式进行求导

用户J的能量效率公式进行求导

同样的接下来可以用高斯迭代求解上述方程
 

仿真结果1—不同算法性能对比

对比可以看出改,穷举法和改进算法比较接近,原算法优于没有考虑用户之间的影响,因此性能较差,说明我们改进后的算法的流程比较接近我们的最优算法的性能,且算法复杂度不太高。
 

仿真结果2—改变D2D用户数对系统性能的影响

从上图可以看出随着用户数的增长,改进算法的能量效率性能始终远远优于原算法,同时随着用户数的增长整体的容量得到的上升,但是能量效率也略微的下降了。


仿真结果3—改变D2D用户平均距离对系统性能的影响

从上图可以看出随着用户距离的增长,改进算法的能量效率性能始终远远优于原算法,同时随着用户距离的增长的容量基本不变,同时整体的能量效率快速下降
 

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

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

相关文章

【深度学习】第5章——卷积神经网络(CNN)

一、卷积神经网络 1.定义 卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理具有网格状拓扑结构数据的深度学习模型,特别适用于图像和视频处理。CNN 通过局部连接和权重共享机制,有效地减少了参数数量&#x…

Prometheus 二进制文件与操作系统或架构不兼容

目录 检查架构 下载正确的二进制文件 验证文件类型 权限问题 文件损坏 “可执行文件格式错误”表明你试图执行的二进制文件与操作系统或架构不兼容。 检查架构 确保你下载的二进制文件与系统的架构相匹配(例如,x86_64, arm64 等)。 可…

LabVIEW光谱测试系统

在现代光通信系统中,光谱分析是不可或缺的工具。开发了一种基于LabVIEW的高分辨率光谱测试系统,通过对可调谐激光器、可编程光滤波器和数据采集系统的控制,实现了高效、高精度的光谱测量。 项目背景 随着光通信技术的迅速发展,对…

20240710 每日AI必读资讯

🤖微软:不会像 OpenAI 一样阻止中国访问 AI 模型 - OpenAI 将于周二(7 月 9 日)开始阻止中国用户访问其 API。 - 微软发言人表示:Azure OpenAI API服务在中国的提供方式没有变化。 - 公司仍然通过部署在中国以外地区…

Mysql练习题目【7月10日更新】

七、Mysql练习题目 https://zhuanlan.zhihu.com/p/38354000 1. 创建表 创建学生表 mysql> create table if not exists student(-> student_id varchar(255) not null,-> student_name varchar(255) not null,-> birthday date not null,-> gender varchar(…

思考:Java内存模型和硬件内存模型

前言 前一阵在看volatile的原理,看到内存屏障和缓存一致性,发现再往底层挖就挖到了硬件和Java内存模型。这一块是自己似懂非懂的知识区,我一般称之为知识混沌区。因此整理这一篇文章。 什么是内存模型(Memory Model)…

46、lvs集群- 博客

1、lvs集群: lvs:linux virtual server----章文嵩发起的开源项目,阿里。linux的内核层面实现负载均衡的软件。 主要作用:将多个后端服务器组成一个高可用,高性能的服务器集群,通过负载均衡的算法将客户端的…

前端javascript中的排序算法之插入排序

插入排序(Selection Sort)基本思想: 插入排序每次排一个数组项,以此方式构建最后的排序数组。假定第一项已经排序了,接着, 它和第二项进行比较,第二项是应该待在原位还是插到第一项之前呢&#…

查看oracle ojdbc所支持的JDBC驱动版本

oracle jcbc驱动的下载地址参考:JDBC and UCP Downloads page 其实上文中对ojdbc所支持的JDBC驱动版本已经有说明了,不过,因为oracle的驱动包很多时间,都是在公司内部私服里上传维护的,上传的时候,可能又没…

第4章 课程发布:模块需求分析,课程预览(模板引擎 静态页面),课程审核,课程发布(分布式事务,页面静态化:熔断降级),课程搜索(es索引)

1 模块需求分析 1.1 模块介绍 课程信息编辑完毕即可发布课程,发布课程相当于一个确认操作,课程发布后学习者在网站可以搜索到课程,然后查看课程的详细信息,进一步选课、支付、在线学习。 下边是课程编辑与发布的整体流程&#…

Java中的 this 关键字是什么意思? this() 又是什么?

目录 问题问题一:什么是this关键字?问题二:什么是this()? 问题 问题一:什么是this关键字? 定义:this 代表当前对象。这个定义比较抽象,举例来回答。 思考一个问题:如果没有 this 会怎样&…

uniapp+vue3嵌入Markdown格式

使用的库是towxml 第一步:下载源文件,那么可以git clone,也可以直接下载压缩包 git clone https://github.com/sbfkcel/towxml.git 第二步:设置文件夹内的config.js,可以选择自己需要的格式 第三步:安装…

【国潮】软件本土化探索

文章目录 一、国产-操作系统银河麒麟(Kylin)操作系统华为鸿蒙系统(HarmonyOS)统信UOS深度Deepin 二、国产-服务器华为鲲鹏:飞腾:海光:兆芯:龙芯:申威: 三、国…

2024-07抖音/快手/小红书/视频号/美团无人直播技术:最新不封号无人直播的操作方法详细介绍

2024年最新研究出来的无人直播技术,目前不封号,用途大大的,可带货,可引流,可获客。 手机自动直播源码通常涉及到实时流媒体技术和应用开发,它涉及以下几个关键部分: 摄像头接入:使用…

neo4j 图数据库:Cypher 查询语言、医学知识图谱

neo4j 图数据库:Cypher 查询语言、医学知识图谱 Cypher 查询语言创建数据查询数据查询并返回所有节点查询并返回所有带有特定标签的节点查询特定属性的节点及其所有关系和关系的另一端节点查询从名为“小明”的节点到名为“小红”的节点的路径 更新数据更新一个节点…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(四)支持json和xml的显示

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、相应的界面前端代码 <template><div class"formDesign"><FlowDesign :process"process" :fields"fields" :readOnly"readOnly&quo…

微信小程序毕业设计-教育培训系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【机器学习】使用决策树分类器预测汽车安全性的研究与分析

文章目录 一、决策树算法简介决策树的结构分类和回归树 (CART)决策树算法术语决策树算法直觉 二、属性选择度量信息增益熵 基尼指数计算分割基尼指数的步骤 三、决策树算法中的过度拟合避免过度拟合的方法 四、导入库和数据可视化探索性数据分析重命名列名查看数据集的总结信息…

double和float的区别与使用

double和float类型的区别与使用 在Java中&#xff0c;double和float都是基本数据类型&#xff0c;用于表示浮点数&#xff08;即带有小数点的数&#xff09;。 它们在精度和范围上有所不同&#xff1a; double类型提供了更高的精度和更大的范围&#xff0c;而float类型则精度更…

类似评论、省市区这种具有层次结构的数据表怎么设计?

业务功能模块 评论、回复模块省市区表 设置一个给每个数据设置一个parent_id 例如&#xff1a; 某个视频下a写了条评论&#xff0c;那a的parent_id就是0;b回复了a&#xff0c;那b的parent_id就是a的id;c回复了b&#xff0c;那c的parent_id就是b的id; 这样&#xff0c;所有评论…