第【76】期-- 通信问题的cvx教程之进阶篇【八】-- 基于RSMA的ISAC波束成形优化--SDR求解+连续凸近似SCA --MATLAB完整代码
关注我,追更更多通信仿真代码!
1、最近有大量小伙伴在问关于通信领域里面CVX的代码编写问题,因此计划新开系列文章,讲解无线通信优化问题中关于MATLAB CVX工具的使用。
2、计划前期先写经典的简单通信问题的CVX求解以打实基础,后期再针对目前热门的通信方向,如RIS,NOMA,UAV,ISAC等方向的复杂非凸问题的近似迭代后的CVX求解。
3、本文为第【八】期,讲解基于RSMA辅助的ISAC波束成形优化–SDR+连续凸近似SCA。
文章目录
- 摘要
- 第一章 引言
- 1.1 研究背景
- 1.2 本文工作
- 2 系统模型
- 2.1 通信模型
- 2.2 感知模型
- 3 优化问题与求解算法
- 3.1 Max-Min 优化
- 3.2 基于SCA的求解算法
- 3.3 初始点选择
- 3 代码解析与仿真结果
- 3.1 收敛分析
- 3.2 基于sca迭代的关键cvx代码
- 3.3 rel_entr函数的用法
- 4 总结
摘要
通信感知一体化(Integrated Sensing and Communication, ISAC)被视为第六代移动通信(6G)及未来星地融合网络的关键使能技术,其核心挑战在于如何在共享频谱与硬件资源的前提下,协调通信速率与感知精度之间的性能折衷。多址接入方式直接影响ISAC系统的干扰管理与资源利用效率。与传统的空分多址(SDMA)和非正交多址(NOMA)相比,速率分拆多址(Rate-Splitting Multiple Access, RSMA)通过将用户消息拆分为公共流与私有流,利用公共流的全局解码特性将部分干扰转化为有用信息,在干扰受限场景下展现出显著的性能优势。然而,RSMA在MU-MISO ISAC系统中的波束成形设计涉及非凸优化问题,难以直接求解。本文研究基于RSMA的联合波束成形优化问题。在满足总发射功率约束与雷达角度估计克拉美-罗界(CRB)精度约束的前提下,以最大化用户最小速率(Max-Min fairness)为目标,建立优化问题。针对该问题的非凸性,采用SCA方法,通过对速率函数中凸部分进行一阶泰勒展开,构造凹下界,将原问题转化为一系列可高效求解的半定规划(SDP)凸子问题。
第一章 引言
1.1 研究背景
- 随着第五代移动通信(5G)的大规模商用,学术界与产业界已开始将目光投向第六代移动通信(6G)网络。6G被期望在传输速率、连接密度、时延和可靠性等传统通信指标上实现量级跃升的同时,还将原生地支持感知、计算、智能等新维度能力。在这一愿景下,通信感知一体化(Integrated Sensing and Communication, ISAC) 应运而生,成为6G候选关键技术之一 。
- 近年来,速率分拆多址(Rate-Splitting Multiple Access, RSMA) 作为一种广义的多址接入框架受到广泛关注。RSMA的核心思想是将每个用户的消息拆分为公共部分和私有部分,所有用户的公共部分合并为一个公共流由所有用户共同解码,私有部分则各自独立解码。这一机制的巧妙之处在于:公共流被所有用户解码后可从接收信号中剔除,从而将传统意义上“有害的干扰”转化为“有用的信息”。大量研究表明,RSMA在干扰受限场景下能够显著优于SDMA和NOMA,且在信道状态信息(CSIT)不理想时具有更强的鲁棒性。
1.2 本文工作
将RSMA应用于ISAC系统,建立MU-MISO ISAC下行系统的RSMA信号模型,以最大化用户最小速率(Max-Min fairness)为目标,构建含总功率约束与CRB约束的波束成形优化问题,并通过CVX工具包实现所提算法。
2 系统模型
2.1 通信模型
则用户 k 的接收信号为:
2.2 感知模型
利用Schur补引理,可以将其等价转化为如下线性矩阵不等式(LMI):
该LMI约束是凸的,可以直接嵌入后续的半定规划(SDP)中。
可以看到,ISAC系统设计核心:需要在通信和感知两种功能之间进行最优的功率分配与波束方向协调。
3 优化问题与求解算法
3.1 Max-Min 优化
考虑公平性,最大化最小用户的速率,该准则保证了用户间的公平性,避免了强用户占用过多资源导致弱用户服务质量严重下降。数学形式如下:
包括半正定约束,CRB约束,RSMA约束以及功率约束。可以看到变量高度耦合,需要设计求解算法。
3.2 基于SCA的求解算法
主要处理速率表达式相关约束,是一个典型的CCCP问题形式:
该方案我往期文章有讲过。这里不再赘述。基于此,对私有速率与公共速率进行SCA近似,有:
可以得到,第n次迭代的凸子问题
分析如下:
因此,转换后的问题可以直接用cvx进行求解。在给定初始点后,算法可以不断迭代至局部最优。
3.3 初始点选择
该策略保证所有协方差矩阵在初始时刻满足功率约束,且各向同性发射不偏向任何空间方向。
3 代码解析与仿真结果
3.1 收敛分析
可以看到,sca大约6次以内就能收敛到一个稳定点,说明了算法的可行性。
3.2 基于sca迭代的关键cvx代码
function[final_rate,Rq_out,conv_history]=sca_cvx(Nt,K,H,Hk_cov,A_mat,A_dot_mat,A_cross,Pt,noise_var,CRB_th)%==========================================================================%SCA-CVX 求解器:MU-MISO ISAC 系统 RSMA 波束成形优化%%输入参数:%Nt-发射天线数%K-单天线用户数%H-瞬时信道矩阵(Nt x K)%Hk_cov-用户信道协方差矩阵Hk_cov(:,:,k)=h_k*h_k^H%A_mat-导向矢量外积 a*a^H%A_dot_mat-导向矢量导数外积 a_dot*a_dot^H%A_cross-导向矢量与导数外积 a_dot*a^H%Pt-总发射功率预算%noise_var-噪声功率(sigma^2)%CRB_th-CRB 阈值(gamma_th)%MAX_ITER=25;%最大 SCA 迭代次数 tolerance=1e-5;%收敛容忍度 rate_record=-inf;%上一轮目标值记录 Rq_out=zeros(Nt,Nt);conv_history=nan(MAX_ITER,1);%预分配收敛历史%----------初始化----------%总功率在(K+2)个流之间等分:1个公共流+K个私有流+1个雷达流%每个流的功率再均匀分配到 Nt 根天线上 Pc_prev=(Pt/(K+2))*eye(Nt)/Nt;%公共流协方差初值 Pr_prev=(Pt/(K+2))*eye(Nt)/Nt;%雷达协方差初值 Pk_prev=zeros(Nt,Nt,K);fork=1:KPk_prev(:,:,k)=(Pt/(K+2))*eye(Nt)/Nt;%各私有流协方差初值 end%----------SCA 主迭代循环----------foriter=1:MAX_ITER%---步骤1:计算展开点(上一轮迭代的各用户干扰项)---%私有流解码时的干扰展开点Ik_prev(k)%公共流解码时的干扰展开点Ick_prev(k)Ik_prev=zeros(K,1);Ick_prev=zeros(K,1);fork=1:K%用户 k 的私有流干扰:雷达+其他用户的私有流Ik_prev(k)=real(trace(Hk_cov(:,:,k)*Pr_prev))+noise_var;forj=1:Kifj~=kIk_prev(k)=Ik_prev(k)+real(trace(Hk_cov(:,:,k)*Pk_prev(:,:,j)));end end%用户 k 的公共流干扰:雷达+所有私有流(包括自身)Ick_prev(k)=real(trace(Hk_cov(:,:,k)*Pr_prev))+noise_var;forj=1:KIck_prev(k)=Ick_prev(k)+real(trace(Hk_cov(:,:,k)*Pk_prev(:,:,j)));end end%---步骤2:CVX 求解凸子问题---cvx_begin sdp quiet%2.1变量声明 variablePc(Nt,Nt)hermitian semidefinite%公共流协方差 R_c variablePr(Nt,Nt)hermitian semidefinite%雷达协方差 R_r variablePk(Nt,Nt,K)hermitian semidefinite%私有流协方差 R_k variablec_rate(K)nonnegative%公共速率分配 C_k variable t%最大最小速率阈值 maximize t subject to%2.2总功率约束:Tr(R_r)+Tr(R_c)+sum_kTr(R_k)<=P_t total_power=trace(Pc)+trace(Pr);fork=1:K total_power=total_power+trace(Pk(:,:,k));end total_power<=Pt;%2.3用户速率与公共速率约束fork=1:K%----私有速率 SCA 凹下界----%当前私有流干扰项 I_{p,k}Ik_cvx=real(trace(Hk_cov(:,:,k)*Pr))+noise_var;forj=1:Kifj~=k Ik_cvx=Ik_cvx+real(trace(Hk_cov(:,:,k)*Pk(:,:,j)));end end%term1=log2(I_prev+Tr(H_k*R_k))%使用-rel_entr(1,y)构造凹的log2(y)term1_k=-rel_entr(1,Ik_cvx+real(trace(Hk_cov(:,:,k)*Pk(:,:,k))))/log(2);%term2=log2(I_prev)+(I-I_prev)/(I_prev*ln2)%即log2(I)在 I_prev 处的一阶泰勒展开(仿射函数) term2_k=log2(Ik_prev(k))+(Ik_cvx-Ik_prev(k))/(Ik_prev(k)*log(2));%私有速率的 SCA 凹下界 Rk_SCA=term1_k-term2_k;%用户总速率=公共速率份额+私有速率>=tc_rate(k)+Rk_SCA>=t;%----公共速率 SCA 凹下界----%当前公共流干扰项 I_{c,k}Ick_cvx=real(trace(Hk_cov(:,:,k)*Pr))+noise_var;forj=1:K Ick_cvx=Ick_cvx+real(trace(Hk_cov(:,:,k)*Pk(:,:,j)));end%term1_ck=log2(I_prev+Tr(H_k*R_c))term1_ck=-rel_entr(1,Ick_cvx+real(trace(Hk_cov(:,:,k)*Pc)))/log(2);%term2_ck=log2(I_prev)+(I-I_prev)/(I_prev*ln2)term2_ck=log2(Ick_prev(k))+(Ick_cvx-Ick_prev(k))/(Ick_prev(k)*log(2));%公共速率的 SCA 凹下界 Rck_SCA=term1_ck-term2_ck;%公共速率分配总和不超过各用户的公共流解码能力sum(c_rate)<=Rck_SCA;end%2.4雷达感知 CRB 约束(LMI)%Rq=R_r+R_c+sum_k R_k Rq=Pc+Pr;fork=1:K Rq=Rq+Pk(:,:,k);end%构造2x2 半正定矩阵%M(1,1)=Tr(a_dot*a_dot^H*Rq)-1/gamma_th M_11=real(trace(A_dot_mat*Rq))-(1/CRB_th);%M(1,2)=Tr(a_dot*a^H*Rq)M_12=real(trace(A_cross*Rq));%M(2,2)=Tr(a*a^H*Rq)M_22=real(trace(A_mat*Rq));%LMI 约束:M>=0[M_11,M_12;M_12,M_22]>=0;cvx_end%---步骤3:求解结果处理与迭代更新---%3.1判断 CVX 求解状态ifstrcmp(cvx_status,'Solved')||strcmp(cvx_status,'Inaccurate/Solved')%记录本次迭代的目标值conv_history(iter)=t;%计算并对称化总发射协方差矩阵 Rq_current=(Pc+Pr);fork=1:K Rq_current=Rq_current+Pk(:,:,k);end Rq_out=(Rq_current+Rq_current')/2;%3.2收敛判断(目标值相对变化<tolerance)ifiter>1&&t>0&&abs(t-rate_record)/(abs(rate_record)+1e-10)<tolerance conv_history=conv_history(1:iter);final_rate=t;return;end%3.3更新迭代点(Hermitian 对称化处理) rate_record=t;Pc_prev=(Pc+Pc')/2;Pr_prev=(Pr+Pr')/2;fork=1:KPk_prev(:,:,k)=(Pk(:,:,k)+Pk(:,:,k)')/2;endelse%求解失败:返回历史最优值 conv_history=conv_history(1:max(iter-1,1));final_rate=max(rate_record,0);return;end end%---达到最大迭代次数,返回结果---conv_history=conv_history(~isnan(conv_history));final_rate=max(rate_record,0);end3.3 rel_entr函数的用法
其中,值得注意的点是:
CVX 要求所有表达式遵循规范凸编程,直接书写 log2(I + S) 不被 CVX 认可为凹函数,因为 CVX 不会自动推断log与仿射函数复合后的凹凸性。因此,引入了CVX 标准原子库中与 log 2(y) 等价的凹函数构造方式:相对熵。
该函数在其定义域上是凸函数。CVX 的标准原子库提供 rel_entr(x, y) 实现这一函数。令 x=1,则有:
其他的就根据理论公式推导情况进行代码编写得到的。
4 总结
本文研究了基于速率分拆多址(RSMA)的通信感知一体化(ISAC)下行系统波束成形优化问题。以最大化用户最小速率为目标,在总功率和感知精度(CRB)约束下,建立了非凸优化模型。通过连续凸近似(SCA)方法,将原问题转化为一系列可高效求解的半定规划(SDP)凸子问题,并利用CVX工具包实现了算法。仿真结果表明,所提SCA算法能在数次迭代内快速收敛。
完整仿真代码可见往期文章文末VX公众号(包含往期博客所有代码),所见即所得!
