基于能效优化的D2D通信分布式功率控制仿真系统
项目简介
本项目是一个基于MATLAB平台的通信仿真系统,旨在研究和验证Device-to-Device (D2D) 通信复用蜂窝网络上行链路资源时的功率控制策略。项目核心聚焦于一种分布式能效优化算法,该算法在保证蜂窝用户(CUE)服务质量(QoS)的前提下,最大化D2D用户的能效(Energy Efficiency, EE)。仿真环境模拟了包含基站、蜂窝用户和D2D对的单小区网络,并实现了完整的信道建模、算法迭代与性能评估流程。
功能特性
- 异构网络建模:构建包含基站、CUE和D2D用户的单蜂窝小区拓扑,支持参数化配置用户数量和小区半径。
- 真实信道仿真:模拟无线通信环境,包含基于距离的大尺度路径损耗(Path Loss)和服从指数分布的小尺度瑞利衰落(Rayleigh Fading)。
- 分布式功率控制:实现基于能效最大化的分布式迭代算法,无需中心节点集中调度,用户根据本地信息自主调节功率。
- QoS保护机制:通过计算干扰温度上限,严格限制D2D用户对基站造成的干扰,确保CUE的最小信号与干扰加噪声比(SINR)满足要求。
- 多算法对比:集成三种功率分配策略(分布式能效优化、最大功率传输、随机功率分配)进行性能基准对比。
- 可视化分析:提供功率收敛轨迹、总能效变化、系统总吞吐量以及SINR分布的图表展示。
系统要求
- MATLAB R2016a 或更高版本
- Optimization Toolbox(用于求解一维搜索问题)
使用方法
直接运行 main.m 脚本即可启动仿真。程序将按序执行以下步骤:
- 初始化系统参数。
- 生成网络拓扑与信道增益。
- 依次运行分布式能效优化算法及对比算法。
- 计算统计指标并生成性能分析图表。
核心算法与代码逻辑分析
本项目主要依靠 main.m 中的逻辑实现仿真,以下是关键功能模块的详细实现解析:
1. 系统参数初始化
代码首先定义了完整的物理层参数,包括系统带宽(1MHz)、噪声功率谱密度(-114dBm/Hz)、最大/最小发射功率(23dBm / -10dBm)以及电路固定功耗(10dBm)。同时,设定了收敛条件(最大迭代50次,容忍度1e-4)和QoS门限(CUE最小SINR 10dB)。所有功率参数在计算前均被转换为瓦特(Watt)线性单位。
2. 网络拓扑与信道建模 (init_network)
该模块负责构建仿真场景:
- 节点与位置:基站位于原点 (0,0);CUE和D2D发射机(Tx)在小区半径(50-500m)内均匀随机分布;D2D接收机(Rx)分布在以Tx为中心、距离15-50m的圆环区域内。
- 信道增益计算:
*
路径损耗模型:采用经典的
128.1 + 37.6 * log10(d) 模型,其中
d 为公里数。
*
小尺度衰落:使用
exprnd 函数生成服从指数分布的随机数,模拟功率域的瑞利衰落。
*
干扰链路:计算四类信道增益矩阵——CUE到基站、D2D到基站(干扰)、D2D对内(信号)、CUE到D2D接收机(干扰)。
3. 分布式能效优化算法 (run_algorithm_dee)
这是本系统的核心算法实现,采用迭代更新机制:
- 干扰感知:在每一轮迭代中,首先计算基站接收到的总干扰以及每个D2D接收机受到的总干扰(来自CUE和其他D2D对)。
- CUE保护约束(干扰温度):
* 算法并不盲目追求D2D性能,而是优先计算D2D对基站的允许干扰上限。
* 根据公式
I_limit = (P_cue * h_cb) / SINR_min - Noise 计算基站能承受的最大总干扰。
* 反推当前D2D用户允许的最大发射功率
p_max_protect,确保CUE的SINR不低于预设门限。
*
目标函数:定义能效函数
EE = log2(1 + p * h_eff) / (p + P_cir)。
*
优化过程:使用 MATLAB 内置函数
fminbnd 在
[P_min, min(P_max, p_max_protect)] 区间内进行一维搜索,寻找使能效最大化的最佳发射功率。这体现了分式规划的思想。
- 平滑更新:采用权重因子
alpha = 0.7 对功率更新进行平滑处理,即 p_new = 0.7 * p_old + 0.3 * p_opt,以防止震荡并加速收敛。 - 收敛判定:通过检测功率向量的范数变化
norm(p_d2d - p_prev) 是否小于 Tol 来判定算法是否收敛。
4. 基准对比算法
为了验证算法性能,代码中包含两个对比方案:
- 最大功率传输 (
run_algorithm_max):D2D用户始终以最大允许功率发射。 - 随机功率分配 (
run_algorithm_rand):在功率约束范围内随机选择发射功率。
5. 性能指标计算
仿真过程中实时记录以下关键数据:
- 功率轨迹:记录所有D2D用户在每次迭代的功率值,用于验证收敛性。
- 能效轨迹:计算系统的平均能效或总能效。
- 和速率:统计系统的总数据传输速率。
- SINR追踪:监控CUE的SINR实际值,验证保护机制的有效性。
修改与扩展建议
- 当前代码假设只要 CUE SINR 不满足要求就施加极高的价格惩罚,但在实际优化循环中,主要通过硬性的功率上界 (
p_upper) 来实施保护。 - 信道模型目前是静态快照,如果需要模拟移动性,需在主循环外层添加时间演进逻辑。
- 当前模型简化假设所有D2D复用同一个CUE的资源块(RB),如需模拟多RB场景,需增加RB分配的逻辑矩阵。