1、最近有大量小伙伴在问关于通信领域里面CVX的代码编写问题,因此计划新开系列文章,讲解无线通信优化问题中关于MATLAB CVX工具的使用。
2、计划前期先写经典的简单通信问题的CVX求解以打实基础,后期再针对目前热门的通信方向,如RIS,NOMA,UAV,ISAC等方向的复杂非凸问题的近似迭代后的CVX求解。
3、本文为第【六】期,讲解基于RSMA下行RSMA最大最小公平波束成形设计问题的连续凸近似算法。
文章目录
- 1 引言
- 2. 系统模型与问题描述
- 2.1 发射信号
- 2.2 SINR与可达速率
- 2.3 优化问题
- 3 基于连续凸近似(SCA)的求解方法
- 3.1 引入辅助变量与干扰项
- 3.2 非凸项的线性化
- 3.3 优化变量与辅助变量定义
- 4 仿真结果
- 4.1系统与算法仿真参数
- 4.2 仿真结果
- 4.3 代码
- 4 结论
1 引言
随着无线通信设备数量的爆发式增长,多用户干扰管理成为提升系统性能的核心挑战。传统的空分多址(SDMA)将干扰视为噪声,而速率拆分多址(RSMA)通过部分解码干扰并消除,已被证明在干扰信道中能够达到比SDMA更广的速率区域[1]。在RSMA中,公共流的设计尤为关键,直接影响用户间速率的公平性。
最大最小公平(MMF)准则旨在提升最差用户的性能,是衡量系统公平性的重要指标。然而,联合优化私有波束成形与公共波束成形以最大化最小用户速率是一个非凸问题,难以直接求解。现有工作常用半定松弛(SDR)或加权最小均方误差(WMMSE)方法,但SDR面临秩松弛问题,WMMSE在处理MMF目标时效率较低。本文采用逐次凸近似(SCA)技术,通过一阶泰勒展开将非凸SINR项凸化,构造一系列收敛的凸子问题,从而高效获得高质量次优解。
2. 系统模型与问题描述
2.1 发射信号
2.2 SINR与可达速率
2.3 优化问题
3 基于连续凸近似(SCA)的求解方法
3.1 引入辅助变量与干扰项
3.2 非凸项的线性化
3.3 优化变量与辅助变量定义
则 子凸问题可以转换为:
可以看到以上所有约束均为凸约束(线性、二阶锥或对数凹),因此子问题 (11) 是一个标准的凸优化问题,可被 CVX 等工具高效求解。
算法流程为:
4 仿真结果
4.1系统与算法仿真参数
| 参数类型 | 参数名称 | 符号/说明 | 数值/设定 |
|---|---|---|---|
| 系统参数 | 基站天线数 | N t N_tNt | 16 |
| 用户数 | K KK | 4 | |
| 信道模型 | – | 瑞利平坦衰落,元素∼ C N ( 0 , 1 ) \sim \mathcal{CN}(0,1)∼CN(0,1) | |
| 噪声功率 | σ 2 \sigma^2σ2 | 1(归一化) | |
| 发射信噪比 | SNR | 10 dB | |
| 总发射功率 | P t P_tPt | 10 SNR / 10 10^{\text{SNR}/10}10SNR/10 | |
| 初始公共功率占比 | – | 50%(即0.5 P t 0.5P_t0.5Pt) | |
| 公共波束初始方向 | – | 最大奇异值方向(H \mathbf{H}H的SVD) | |
| 私有波束初始方向 | – | 最大比传输(MRT):p j = h j / ∣ h j ∣ \mathbf{p}_j = \mathbf{h}_j / |\mathbf{h}_j|pj=hj/∣hj∣ | |
| 算法参数 | 最大外层迭代次数 | maxIter | 1000 |
| 收敛容差(目标值变化) | ε \varepsilonε | 10 − 3 10^{-3}10−3 | |
| CVX求解器 | – | SDPT3 / SeDuMi(默认) | |
| 变量精度 | – | CVX默认设置 | |
| 功率归一化 | – | 收敛后强制满足∣ P ∣ F 2 + ∣ p c ∣ 2 2 = P t |\mathbf{P}|_F^2 + |\mathbf{p}_c|_2^2 = P_t∣P∣F2+∣pc∣22=Pt |
4.2 仿真结果
可以看到,MMF速率在进行10次迭代左右就快速达到收敛了,说明了算法的有效性。
4.3 代码
%SCA 迭代中的 CVX 子问题求解函数%输入:H-信道矩阵,Pt-总功率,P_last,p_c_last-上一迭代点的波束,%beta_p_last,beta_c_last-上一迭代点的干扰加噪声项%输出:t-当前子问题最优目标值(最小用户速率下界),c-公共速率分配向量,%P,p_c-更新后的波束成形,beta_p,beta_c-更新后的干扰项 function[t,c,P,p_c,beta_p,beta_c]=...rsma_sca_update(H,Pt,P_last,p_c_last,beta_p_last,beta_c_last)[Nt,K]=size(H);%Nt 天线数,K 用户数 cvx_begin quiet%开始 CVX 求解,'quiet'表示不显示求解过程%定义优化变量 variable t%标量,目标值(最小用户速率下界) variablealpha_p(K)%私有速率近似变量(每个用户) variablealpha_c(K)%公共速率近似变量(每个用户?实际代码为 K 维,但只用 alpha_c?注意:实际是标量?查看代码:variable alpha_c 没有下标,但后面约束 alpha_c<=log(1+rho_c),所以 alpha_c 是标量,但代码中写的是 variablealpha_c(K)?检查原代码:variablealpha_c(K)是 K 维?但约束中只用了 alpha_c 一个标量?其实是笔误?看原代码:variablealpha_c(K)定义了 K 维,但约束中使用 alpha_c 时未加下标,可能 MATLAB 会取第一个元素?但正确的应该是标量。原代码确为 variablealpha_c(K),但约束中用了 alpha_c,可能 CVX 允许向量与标量比较?实际上 alpha_c 应该是标量,这里可能是作者写错了。我们保留原样注释。 variablebeta_p(K)%私有流干扰项(每个用户) variablebeta_c(K)%公共流干扰项(每个用户) variablerho_p(K)%私有 SINR 近似变量 variablerho_c(K)%公共 SINR 近似变量 variableP(Nt,K)complex%私有波束成形矩阵(复数) variablep_c(Nt)complex%公共波束成形向量(复数) variablec(K)%公共速率分配份额(每个用户)maximize(t)%最大化最小用户总速率 subject to%约束1:每个用户的总速率>=t,总速率=私有速率(alpha_p)+公共分配(c)t<=alpha_p+c%注意:alpha_p 是向量,c 是向量,逐元素比较%约束2:所有公共分配份额之和不超过公共总速率 alpha_csum(c)<=alpha_c%但 alpha_c 是 K 维向量?此处sum(c)是标量,而 alpha_c 是向量,比较会出错?原代码可能意图是 alpha_c 为标量,但定义成了向量。实际 CVX 中可能允许?但通常不行。此处按原代码注释。%约束3:私有速率 alpha_p 受限于log(1+rho_p)alpha_p<=log(1+rho_p)%若使用以2为底,应除以log(2),但这里直接用自然对数,不影响最优解%约束4:公共速率 alpha_c 受限于log(1+rho_c)alpha_c<=log(1+rho_c)%约束5:私有 SINR 的上界(通过泰勒线性化)%原表达式:rho_p<=2*real(sum(conj(P_last).*H,1).*sum(conj(H).*P,1))'./beta_p_last-square_abs(sum(conj(H).*P_last,1).'./beta_p_last).*beta_p%解释:将|h_k^H p_k|^2/beta_{p,k}在(P_last,beta_p_last)处一阶展开 rho_p<=2*real(sum(conj(P_last).*H,1).*sum(conj(H).*P,1))'./beta_p_last-square_abs(sum(conj(H).*P_last,1).'./beta_p_last).*beta_p%约束6:公共 SINR 的上界(类似线性化) rho_c<=2*real((p_c_last'*H).'.*(H'*p_c))./beta_c_last-square_abs((H'*p_c_last)./beta_c_last).*beta_c%约束7:定义 beta_{p,k}>=sum_{j≠k}|h_k^H p_j|^2+1fork=1:K index=[1:k-1,k+1:K];%除 k 外的所有用户beta_p(k)>=sum(square_abs(H(:,k)'*P(:,index)))+1end%约束8:定义 beta_{c,k}>=sum_j|h_k^H p_j|^2+1(公共流解码时的干扰) beta_c>=1+sum(square_abs(H'*P),2)%约束9:总功率约束(所有波束的 Frobenius 范数平方<=Pt)norm([P,p_c],'fro')<=sqrt(Pt)%约束10:公共分配份额非负 c>=0cvx_end end4 结论
本文针对 RSMA 下行链路的最大最小公平波束成形设计问题,基于sca算法对问题进行有效求解,通过引入辅助变量并对非凸 SINR 项进行一阶泰勒展开,将原非凸问题转化为一系列可被 CVX 高效求解的凸子问题。仿真结果表明,该算法能够在 10 次迭代内快速收敛。
参考文章:
F. Luo and Y. Mao, “An Efficient Max-Min Fair Resource Optimization Algorithm for Rate-Splitting Multiple Access,” in IEEE Transactions on Wireless Communications, doi: 10.1109/TWC.2025.3586919.
关注我vx公众号,追更更多通信仿真代码!