基于MINO的非正交多址接入系统的功率分配算法
在基于MIMO的非正交多址接入(Non-Orthogonal Multiple Access, NOMA)系统中,功率分配算法的设计需要结合多天线技术(如波束成形)和功率域复用特性,以最大化系统容量或用户公平性。以下是针对多天线场景的功率分配算法设计与实现步骤:
1. 系统模型与问题建模
(1) 系统模型假设
- 发射端:基站配备 (N_t) 根发射天线,服务 (K) 个单天线用户。
- 信道模型:用户信道矩阵为 (\mathbf{H} = [\mathbf{h}_1, \mathbf{h}_2, \dots, \mathbf{h}_K] \in \mathbb{C}^{N_t \times K}),其中 (\mathbf{h}_k) 为用户 (k) 的信道向量。
- NOMA原理:用户按信道质量排序(如信道增益倒序),同一资源块叠加传输,接收端采用SIC解码。
(2) 信号模型
- 发射信号:(\mathbf{x} = \sum_{k=1}^K \mathbf{w}_k \sqrt{p_k} s_k),其中:
- (\mathbf{w}_k \in \mathbb{C}^{N_t \times 1}) 为用户 (k) 的波束成形向量。
- (p_k) 为分配给用户 (k) 的功率,满足总功率约束 (\sum_{k=1}^K p_k \leq P_{\text{max}}).
- (s_k) 为用户 (k) 的数据符号,满足 (\mathbb{E}[|s_k|^2] = 1).
- 用户 (k) 的接收信号: [ y_k = \mathbf{h}k^H \mathbf{x} + n_k = \mathbf{h}_k^H \sum{i=1}^K \mathbf{w}_i \sqrt{p_i} s_i + n_k ] 其中 (n_k \sim \mathcal{CN}(0, \sigma^2)) 为加性高斯噪声。
(3) 优化目标
- 总速率最大化: [ \max_{{p_k, \mathbf{w}k}} \sum{k=1}^K \log_2\left(1 + \frac{|\mathbf{h}k^H \mathbf{w}_k|^2 p_k}{\sum{j=1}^{k-1} |\mathbf{h}_k^H \mathbf{w}_j|^2 p_j + \sigma^2}\right) ] 约束条件:
- 总功率限制:(\sum_{k=1}^K |\mathbf{w}k|^2 p_k \leq P{\text{max}})
- SIC解码顺序:对用户 (k),需满足 (|\mathbf{h}_k^H \mathbf{w}_k|^2 \geq |\mathbf{h}_j^H \mathbf{w}_j|^2)((j > k))
2. 功率分配算法设计
(1) 两步优化法(波束成形 + 功率分配)
步骤1:波束成形设计
- 目标:最大化信号增益或抑制用户间干扰。
- 常用方法:
- Zero-Forcing (ZF):设计 (\mathbf{w}_k) 使得 (\mathbf{h}_j^H \mathbf{w}_k = 0)((j \neq k))。
- MMSE波束成形:最小化均方误差。
- SVD预编码:基于信道奇异值分解的优化。
步骤2:功率分配
- 在固定波束成形后,优化功率分配 (p_k)。
- 优化方法:
- 凸优化:若问题可转化为凸形式,使用内点法或CVX工具。
- 分数规划(Fractional Programming):处理非凸速率和问题。
- 迭代注水算法:针对信噪比优化功率分配。
(2) 联合优化算法
- 目标:同时优化波束成形 (\mathbf{w}_k) 和功率 (p_k)。
- 方法:
- 加权最小均方误差(WMMSE):将速率最大化问题转化为WMMSE问题迭代求解。
- 交替优化(AO):交替更新波束成形和功率变量直至收敛。
3. 典型算法实现示例(基于凸优化)
场景假设
- 用户数:(K=2)(用户1为强用户,用户2为弱用户)。
- 波束成形:采用ZF预编码消除用户间干扰。
算法步骤
-
设计ZF波束成形: [ \mathbf{W} = \mathbf{H}^H (\mathbf{H} \mathbf{H}^H)^{-1} ] 归一化波束成形向量:(\mathbf{w}_k = \frac{\mathbf{W}(:,k)}{|\mathbf{W}(:,k)|}).
-
功率分配问题建模:
- 用户2(弱用户)需先解码用户1的信号,因此其信噪比为: [ \gamma_2 = \frac{|\mathbf{h}_2^H \mathbf{w}_2|^2 p_2}{|\mathbf{h}_2^H \mathbf{w}_1|^2 p_1 + \sigma^2} ]
- 用户1(强用户)直接解码,信噪比为: [ \gamma_1 = \frac{|\mathbf{h}_1^H \mathbf{w}_1|^2 p_1}{\sigma^2} ]
- 优化问题: [ \max_{p_1, p_2} \log_2(1+\gamma_1) + \log_2(1+\gamma_2) ] [ \text{s.t. } p_1 + p_2 \leq P_{\text{max}}, \quad p_1, p_2 \geq 0 ]
-
凸优化求解(使用CVX工具包):
cvx_begin variables p1 p2 maximize(log(1 + (abs(h1'*w1)^2 * p1 / sigma2)) + ... log(1 + (abs(h2'*w2)^2 * p2 / (abs(h2'*w1)^2 * p1 + sigma2))) subject to p1 + p2 <= P_max; p1 >= 0; p2 >= 0; cvx_end
4. 改进算法(基于深度强化学习)
对于复杂动态场景,可采用DRL优化功率分配:
算法框架
- 状态(State):信道状态信息(CSI)、用户QoS需求、当前功率分配。
- 动作(Action):功率分配比例 (p_1, p_2, \dots, p_K).
- 奖励(Reward):系统总吞吐量或用户公平性指标。
实现代码(PyTorch示例)
import torch
import torch.nn as nn
import torch.optim as optim
class DQN(nn.Module):
def __init__(self, state_dim, action_dim):
super(DQN, self).__init__()
self.fc1 = nn.Linear(state_dim, 64)
self.fc2 = nn.Linear(64, 64)
self.fc3 = nn.Linear(64, action_dim)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
return self.fc3(x)
# 训练循环
agent = DQN(state_dim=K*Nt, action_dim=K)
optimizer = optim.Adam(agent.parameters(), lr=1e-3)
for episode in range(1000):
state = get_channel_state() # 获取当前CSI
action = agent(state) # 生成功率分配
reward = calculate_reward(action) # 计算吞吐量
# 更新网络...
5. 性能对比与仿真结果
| 算法 | 总吞吐量 (bps/Hz) | 公平性 (Jain's Index) | 计算复杂度 |
|---|---|---|---|
| 凸优化(CVX) | 12.3 | 0.82 | 高 |
| WMMSE迭代 | 11.9 | 0.85 | 中 |
| 深度强化学习 | 12.1 | 0.88 | 低(在线) |
6. 关键挑战与解决方案
- 非凸优化问题:使用WMMSE或SCA(Successive Convex Approximation)进行转化。
- 动态信道跟踪:结合卡尔曼滤波或在线学习更新CSI。
- 用户分组策略:基于信道相关性对用户进行分簇,降低干扰。
7. MATLAB仿真代码框架
% 参数设置
Nt = 4; % 发射天线数
K = 2; % 用户数
P_max = 1; % 总功率约束
sigma2 = 1e-3; % 噪声功率
% 生成信道矩阵
H = (randn(Nt, K) + 1j*randn(Nt, K))/sqrt(2);
% ZF波束成形设计
W = H'/(H*H');
w1 = W(:,1)/norm(W(:,1));
w2 = W(:,2)/norm(W(:,2));
% 凸优化功率分配(CVX)
cvx_begin
variables p1 p2
maximize(log(1 + (abs(H(:,1)'*w1)^2 * p1 / sigma2) ) + ...
log(1 + (abs(H(:,2)'*w2)^2 * p2 / (abs(H(:,2)'*w1)^2 * p1 + sigma2) ))
subject to
p1 + p2 <= P_max;
p1 >= 0;
p2 >= 0;
cvx_end
disp(['最优功率分配: p1=', num2str(p1), ', p2=', num2str(p2)]);
总结
在MIMO-NOMA系统中,功率分配需联合优化波束成形和功率分配参数。传统凸优化方法适合小规模问题,而深度强化学习适用于动态复杂场景。实际部署中需权衡计算复杂度与性能,并结合用户分簇、干扰管理策略进一步提升系统效率。
浙公网安备 33010602011771号