好的,我们讲一个新的题目。
基于线性规划的无线网络中最大化能量效率的功率分配问题
1. 问题描述
考虑一个多用户无线网络,有一个基站服务 \(n\) 个用户。
假设基站到每个用户有一个独立的信道,信道增益为 \(h_i > 0\) (已知)。
基站给用户 \(i\) 分配功率 \(p_i\),并受到总功率约束 \(\sum_{i=1}^n p_i \le P_{\text{max}}\) 。
根据香农公式,用户 \(i\) 的可达速率(吞吐量)为:
\[r_i = \log_2\left(1 + \frac{h_i p_i}{\sigma^2}\right) \quad \text{(bits/sec/Hz)} \]
其中 \(\sigma^2\) 是噪声功率(假设相同)。
我们的目标不是单纯最大化总吞吐量 \(\sum r_i\),而是最大化能量效率,即总吞吐量与总功率的比值:
\[\text{能量效率} = \frac{\sum_{i=1}^n r_i}{\sum_{i=1}^n p_i} \]
另外,为了维持用户的最低服务质量,要求每个用户的速率不低于一个最小值 \(R_{\min} > 0\),即 \(r_i \ge R_{\min}\)。
这是一个非线性规划问题(分式目标 + 非线性约束),但可以转化为线性规划的子问题,再用 Dinkelbach 方法 迭代求解。
2. 分析与转化
2.1 原问题形式化
记 \(f(p) = \sum_{i=1}^n r_i\),\(g(p) = \sum_{i=1}^n p_i\),则:
\[\max_{p \ge 0} \ \frac{f(p)}{g(p)} \]
约束:
- \(\sum_{i=1}^n p_i \le P_{\max}\)
- \(r_i = \log_2\left(1 + \frac{h_i p_i}{\sigma^2}\right) \ge R_{\min}\),即
\[1 + \frac{h_i p_i}{\sigma^2} \ge 2^{R_{\min}} \]
\[ p_i \ge \frac{\sigma^2}{h_i} \left(2^{R_{\min}} - 1\right) \]
记 \(p_i^{\min} = \frac{\sigma^2}{h_i}(2^{R_{\min}} - 1)\),于是有 \(p_i \ge p_i^{\min}\)。
2.2 Dinkelbach 方法
分式规划
\[\max \frac{f(p)}{g(p)} \]
等价于寻找 \(\lambda^*\) 使得
\[\max_p \ [f(p) - \lambda^* g(p)] = 0 \]
Dinkelbach 迭代:
- 初始化 \(\lambda_0\)(例如 0)。
- 第 \(k\) 步,求解子问题:
\[\max_{p \ge 0} \ f(p) - \lambda_k g(p) \]
\[ \text{s.t.} \quad \sum_{i=1}^n p_i \le P_{\max}, \quad p_i \ge p_i^{\min}, \ i=1,\dots,n \]
- 得到解 \(p^{(k)}\),令
\[\lambda_{k+1} = \frac{f(p^{(k)})}{g(p^{(k)})} \]
- 重复直到 \(|f(p^{(k)}) - \lambda_k g(p^{(k)})| < \epsilon\)。
3. 核心子问题的线性规划化
子问题:
\[\max_{p \ge 0} \ \sum_{i=1}^n \log_2\left(1 + \frac{h_i p_i}{\sigma^2}\right) - \lambda \sum_{i=1}^n p_i \]
约束同上。
注意,目标函数现在关于 \(p\) 是凹函数(对 \(\lambda \ge 0\)),因为 \(\log\) 是凹的,线性项是凹的,和仍是凹的,但这不是线性规划。
为了直接用线性规划,我们可以做变量代换。
令
\[x_i = \ln\left(1 + \frac{h_i p_i}{\sigma^2}\right) \]
则:
\[p_i = \frac{\sigma^2}{h_i} (e^{x_i} - 1) \]
约束 \(p_i \ge p_i^{\min}\) 变成:
\[e^{x_i} - 1 \ge \frac{h_i p_i^{\min}}{\sigma^2} = 2^{R_{\min}} - 1 \]
即 \(x_i \ge \ln(2^{R_{\min}}) = R_{\min} \ln 2\)(注意这里是自然对数)。
总功率约束:
\[\sum_{i=1}^n \frac{\sigma^2}{h_i}(e^{x_i} - 1) \le P_{\max} \]
目标函数变为:
原吞吐量 \(r_i = \frac{x_i}{\ln 2}\) (以 2 为底的对数转换:\(\log_2(\cdot) = \frac{\ln(\cdot)}{\ln 2}\))
所以 \(f(p) = \frac{1}{\ln 2} \sum_{i=1}^n x_i\)
\(g(p) = \sum_{i=1}^n \frac{\sigma^2}{h_i}(e^{x_i} - 1)\)
于是子问题目标:
\[\frac{1}{\ln 2} \sum_{i=1}^n x_i - \lambda \sum_{i=1}^n \frac{\sigma^2}{h_i}(e^{x_i} - 1) \]
固定 λ,最大化它。
但 \(e^{x_i}\) 对 \(x_i\) 是凸的,所以目标关于 \(x\) 是凹函数吗?
检查:第一项是线性的,第二项是 \(-\lambda \times\) 凸函数(如果 λ ≥ 0),所以整体凹。还是非线性。
4. 实用近似线性化方法
若考虑高 SNR 近似(不适合这里,因为功率可能很小),不成立。
更实用的方式是在每一步对 \(f(p) - \lambda g(p)\) 用 一阶泰勒展开线性化(类似 Frank-Wolfe/条件梯度法),但这样我们每步解一个线性规划,然后线搜索。这里可以这样近似:
我们可以在当前点 \(p^{(k)}\) 线性化 \(r_i(p_i)\)。
设当前点为 \(\bar{p}_i\),令
\[r_i(p_i) \approx r_i(\bar{p}_i) + \frac{h_i/\sigma^2}{(1 + h_i \bar{p}_i / \sigma^2)\ln 2} (p_i - \bar{p}_i) \]
记
\[\alpha_i = \frac{h_i/\sigma^2}{(1 + h_i \bar{p}_i / \sigma^2)\ln 2} \]
则目标为:
\[\sum_{i=1}^n \left[ r_i(\bar{p}_i) + \alpha_i (p_i - \bar{p}_i) \right] - \lambda \sum_{i=1}^n p_i \]
常数项不影响优化,去掉后,得到:
\[\max_{p} \ \sum_{i=1}^n (\alpha_i - \lambda) p_i \]
约束:
\[\sum p_i \le P_{\max}, \quad p_i \ge p_i^{\min} \]
这是一个线性规划,且容易求解:
比较 \(\alpha_i - \lambda\) 的大小,将功率尽可能多地分配给最大的那个用户,但必须满足每个 \(p_i \ge p_i^{\min}\),剩余功率再按大小顺序分配。
5. 算法步骤
- 初始化 \(\lambda = 0\),初始可行解 \(p_i = p_i^{\min}\)(如果 \(\sum p_i^{\min} > P_{\max}\) 则问题无解)。
- 重复:
a. 用当前 \(p\) 计算 \(\alpha_i = \frac{h_i/\sigma^2}{(1 + h_i p_i / \sigma^2)\ln 2}\)。
b. 解线性规划
\[ \max_{p} \ \sum_{i=1}^n (\alpha_i - \lambda) p_i \]
约束:
$ \sum p_i \le P_{\max} $,$ p_i \ge p_i^{\min} $。
解此 LP 得到新解 $p^*$(注意:因是线性,最优解一定在极点:先满足所有下限,剩余功率全部分给 $(\alpha_i - \lambda)$ 最大的用户)。
c. 计算新能量效率 \( \eta = \frac{\sum r_i(p^*)}{\sum p_i^*}\)。
d. 如果 \(|\sum r_i(p^*) - \lambda \sum p_i^*| < \epsilon\),停止。
e. 更新 \(\lambda = \eta\),\(p = p^*\)。
6. 举例说明
假设 \(n=2\),\(\sigma^2=1\),\(h_1=1\),\(h_2=0.5\),\(R_{\min}=0.5\)(比特/秒/Hz),\(P_{\max}=2\)。
计算 \(p_i^{\min}\):
\(p_1^{\min} = (2^{0.5} - 1)/1 \approx 0.414\)
\(p_2^{\min} = (2^{0.5} - 1)/0.5 \approx 0.828\)
总和 \(1.242 < 2\),可行。
初始化 \(p = [0.414, 0.828]\),\(\lambda=0\)。
迭代 1:
计算 \(\alpha_1 = \frac{1}{(1+0.414)\ln 2} \approx 1.020\)
\(\alpha_2 = \frac{0.5}{(1+0.5\times 0.828)\ln 2} \approx 0.509\)
解 LP:
目标 \(\max (1.020 - 0)p_1 + (0.509 - 0)p_2\)
因为 α1 > α2,所以剩余功率 \(2 - 1.242 = 0.758\) 全给用户 1。
新解:\(p = [1.172, 0.828]\)
计算 \(r_1 = \log_2(1+1.172) \approx 1.118\),\(r_2 = \log_2(1+0.5\times 0.828) \approx 0.500\)
总和 \(r = 1.618\),总功率 \(= 2\),\(\eta = 0.809\)。
更新 \(\lambda = 0.809\)。
继续迭代直到收敛。
7. 总结
我们把无线网络能量效率最大化这个分式、非线性约束问题,通过 Dinkelbach 方法转化为一系列子问题,再通过一阶线性近似把每个子问题变成一个线性规划。这样,每步只需要求解一个简单的 LP,最终收敛到原问题的一个局部最优解(通常是全局最优解,因原问题满足分式规划的准凸性)。