跳转至

基于注水法的无线传输能量优化

背景

当信道质量可以预测时,具有硬截止时间的发射机不应在每个时刻使用相同功率。信道条件较好时,每焦耳能量可以传输更多数据;但无论如何,完整数据量必须在截止时间前送达,而且发射功率受到限制。

本例描述接收机经过接入点的过程:信道质量先改善、达到峰值,然后衰减。最优控制结果会与经典注水功率分配比较;后者由独立的一维求根计算得到。

问题定义

\(q(t)\) 为剩余数据量,\(P(t)\) 为发射功率。每瓦接收信噪比给定为

\[ g(t)=0.65+3.2\exp\!\left[-\left(\frac{t-6}{1.8}\right)^2\right] \quad [\mathrm{W}^{-1}]. \]

采用带宽 \(B=1\) MHz 的 Shannon 速率模型:

\[ R(t)=B\log_2\!\left(1+g(t)P(t)\right) \quad [\mathrm{Mbit\,s^{-1}}]. \]

剩余数据动力学为

\[ \dot q(t)=-R(t). \]

对于数据量 \(D=18\) Mbit 和截止时间 \(T=10\) s,端点条件为

\[ q(0)=D, \qquad q(T)=0. \]

目标与路径约束为

\[ \min_{q,P}\;E=\int_0^T P(t)\,\mathrm dt, \]
\[ 0\le q(t)\le D, \qquad 0\le P(t)\le P_{\max}=5\ \mathrm W. \]

变量、参数与单位

符号 含义 数值或单位
\(t\) 时间 s
\(q\) 截止时间前尚未发送的数据 Mbit
\(P\) 发射功率 W
\(g\) 每瓦接收信噪比 W⁻¹
\(R\) 信息速率 Mbit/s
\(B\) 信道带宽 \(1\) MHz
\(D\) 要求传输的数据量 \(18\) Mbit
\(T\) 传输截止时间 \(10\) s
\(P_{\max}\) 功率上限 \(5\) W
\(E\) 发射能量 J

截断注水参考解

终端条件等价于积分数据量约束

\[ \int_0^T B\log_2(1+gP)\,\mathrm dt=D. \]

对能量最小化问题应用 KKT 驻值条件,可得到未触及边界时的正功率关系

\[ P(t)=\nu-\frac{1}{g(t)}, \]

其中 \(\nu\) 是常数注水水位。计入上下功率边界后,参考功率为

\[ P_{\mathrm{wf}}(t)= \operatorname{clip}\!\left( \nu-\frac{1}{g(t)},\,0,\,P_{\max} \right). \]

参考计算用 Brent 方法选择 \(\nu\),使密集网格上的数据量积分等于 18 Mbit。该过程不使用 Pockit 轨迹,因此两者的一致性是独立最优性检查,而不是对配点约束的重复陈述。

建模选择

把剩余数据作为状态量,可以把传输截止时间写成明确的终端条件。队列边界还排除了先超量发送、再通过数学上的补偿返回终值的情况。脚本采用 \(100\times2\) Lobatto 网格和分段线性插值,因此节点之间也能保持队列和功率非负。

整个时域上的确定性信道轨迹都是预先已知的。这是离线调度假设,比许多通信系统中只能因果获得的信道状态信息更强。

独立验证

脚本在 4,001 个时刻重构 \(q\)\(P\),计算速率,并通过数值积分得到累计传输量。它在整个时域检查队列恒等式

\[ q(t)=D-\int_0^t R(\tau)\,\mathrm d\tau, \]

而不仅检查终端值。随后,脚本构造截断注水参考解,比较完整功率历程和能量,并检查全部密集路径边界。

验证结果

指标 验证值
发射能量 \(16.97876379\) J
密集积分传输数据量 \(18.00004347\) Mbit
解析注水水位 \(\nu\) \(2.60489943\) W
最大注水功率误差 \(5.779\times10^{-4}\) W
最大累计队列平衡误差 \(1.978\times10^{-3}\) Mbit
最大密集路径越界量 \(0\)

计划在信道质量峰值附近提高功率,在链路较差时降低功率。独立截断注水结果与优化功率在密集网格上的最大差异小于 \(0.6\) mW。

剩余数据量、最小能量发射功率与时变信道质量

适用边界

模型假设信道轨迹确定且完全已知,采用 Shannon 容量速率,功率连续可调,并忽略编码时延。它未包含电路与待机功耗、干扰、分组、重传、单个数据包的时延、离散调制编码、信道估计误差和衰落不确定性。这些因素都可能显著改变可实际部署的无线电策略。

运行示例

python -m examples.wireless_data_transmission

无界面运行并保存图片:

python -m examples.wireless_data_transmission --save wireless-data-transmission.png --no-show
system, phase = build_problem()
guess = initial_guess(phase)
solution = solve_problem(system, guess)
plot_solution(solution)

源代码

完整可运行示例见: examples/wireless_data_transmission.py