考虑一个由 M 个基站组成的多小区蜂窝网络,每个小区采用全频率复用策略,即所有小区使用相同的频谱资源。每个小区 b服务 K个用户。在下行NOMA场景中,基站 b 会将多个用户的信号在功率域上进行叠加后,通过同一时频资源块进行广播。接收端则利用串行干扰消除技术,按照预定义的解码顺序,依次解码并消除其他用户的信号,最终恢复出自己的信息。
为了控制SIC的复杂度和时延,通常假设每个资源块上最多配对两个用户。
设在小区 b 的某个资源块上,配对的两个用户为k和j,其中k为强用户,j为弱用户,用户
k在小区 b 中接收到的信号
yb,k=hb,kpb,k(k)xk⏟期望信号+hb,kpb,j(k)xj⏟同组干扰+∑m≠b∑u∈Kmhm,kpm,uxu⏟小区间干扰+nky_{b,k} = \underbrace{h_{b,k} \sqrt{p_{b,k}^{(k)}} x_k}{\text{期望信号}} + \underbrace{h{b,k} \sqrt{p_{b,j}^{(k)}} x_j}{\text{同组干扰}} + \underbrace{\sum{m \neq b} \sum_{u \in \mathcal{K}m} h{m,k} \sqrt{p_{m,u}} x_u}_{\text{小区间干扰}} + n_kyb,k=期望信号 hb,kpb,k(k) xk+同组干扰 hb,kpb,j(k) xj+小区间干扰 m=b∑u∈Km∑hm,kpm,u xu+nk
hb,kh_{b,k}hb,k是从基站 b到用户 k 的信道增益,包含路径损耗和小尺度衰落。
pb,k(k)p_{b,k}^{(k)}pb,k(k) 和pb,j(k)p_{b,j}^{(k)}pb,j(k)分别是基站 b 为用户 k 和 j 分配的功率,上标 (k)表示用户 k 的接收视角.
xkx_kxk和xjx_jxj是用户 k和 j的发送符号,满足均值为0,方差为1
Km\mathcal{K}mKm是小区 m 中所有用户的集合。
hm,kh{m,k}hm,k从邻近小区 m 的基站到用户 k的信道增益,是小区间干扰的主要来源
nkn_knk是加性高斯白噪声。
在NOMA中,SIC的解码顺序至关重要。弱用户j被分配更高的功率,以便其信号能被正确解码;而强用户 k被分配较低的功率,其信号在解码强用户时被视为干扰。因此,强用户 k 需要先解码并消除弱用户 j 的信号。
用户 k成功解码用户 j信号的SINR为
γb,k→j=∣hb,k∣2pb,j∣hb,k∣2pb,k+∑m≠b∑u∈Km∣hm,k∣2pm,u+σ2 \gamma^{b, k \rightarrow j}=\frac{|h_{b,k}|^{2}p_{b,j}}{\left|h^{b, k}\right|^{2} p^{b, k}+\sum_{m \neq b} \sum_{u \in \mathcal{K}^{m}}\left|h^{m, k}\right|^{2} p^{m, u}+\sigma^{2}} γb,k→j=∣hb,k∣2pb,k+∑m=b∑u∈Km∣hm,k∣2pm,u+σ2∣hb,k∣2pb,j
在成功消除 xjx_jxj后,用户 k 解码自身信号的SINR为:
γb,k=∣hb,k∣2pb,k∑m≠b∑u∈Km∣hm,k∣2pm,u+σ2\gamma^{b, k}=\frac{|h_{b,k}|^{2}p_{b,k}}{\sum_{m \neq b} \sum u \in \mathcal{K}^{m}\left|h^{m, k}\right|^{2} p^{m, u}+\sigma^{2}} γb,k=∑m=b∑u∈Km∣hm,k∣2pm,u+σ2∣hb,k∣2pb,k
而弱用户 j直接将其同组强用户 k 的信号视为噪声,其SINR为:
γb,j=∣hb,j∣2pb,j∣hb,j∣2pb,k+∑m≠b∑u∈Km∣hm,j∣2pm,u+σ2\gamma^{b, j}=\frac{|h_{b,j}|^{2}p_{b,j}}{\left|h^{b, j}\right|^{2} p^{b, k}+\sum m \neq b \sum u \in \mathcal{K}^{m}\left|h^{m, j}\right|^{2} p^{m, u}+\sigma^{2}}γb,j=∣hb,j∣2pb,k+∑m=b∑u∈Km∣hm,j∣2pm,u+σ2∣hb,j∣2pb,j
和速率为
Rsum =∑b=1M∑k∈KbRb,kR^{\text {sum }}=\sum_{b=1}^{M} \sum_{k \in \mathcal{K}^{b}} R^{b, k}Rsum =b=1∑Mk∈Kb∑Rb,k
maxPRsum(P)s.t.γb,k→j≥γth\begin{array}{l} \mathop {\max }\limits_{\cal P} {R^{sum}}({\cal P})\\ s.t.{\rm{ }}{\gamma ^{b,k \to j}} \ge {\gamma ^{th}} \end{array}PmaxRsum(P)s.t.γb,k→j≥γth
其中,P\mathcal{P}P 表示用户配对方案,
γth \gamma^{\text {th }}γth 是SIC解码所需的最小SINR门限
该优化问题是非凸且组合复杂的,穷举搜索所有可能的配对方案在用户数较多时计算复杂度极高,不适用于实际系统.
方法一:贪心算法:
1、初始化,生成M个六边形小区,每个小区随机分配K个用户
2、在第m个小区内,对用户信道增益排序
3、对于小区m内每一对可能的组合(k,j),计算其和速率。
4、检查该组合是否满足约束条件,(SCI译码约束以及QoS约束)
5、对满足约束的的配对按照和速率大小排序,得到可用列表。
6、执行贪心算法,从可用列表中取和速率最高的一组排列k∗k^*k∗和j∗j^*j∗,再从候选名单中将其删除。
7、循环上述操作,直到所有用户完成配对。
方法二:基于优化理论的配对策略
将用户配对问题建模为一个整数规划问题,设二元变量xk,jx^{k,j}xk,j表示用户 k 和 j 是否被配对,xk,j=1x^{k,j}=1xk,j=1表示配对,否则为0)。则优化问题可以写为
maxxk,j∑k∑j≠kxk,j⋅Rk,js.t.∑j>mxm,j +∑k<mxk,m ≤1xk,j∈{0,1}\begin{array}{l} \mathop {\max }\limits_{{{x^{k,j}}}} \sum\limits_k {\sum\limits{j \ne k} {{x^{k,j}}} } \cdot {R^{k,j}}{\rm{ }}\\ s.t.{\rm{ }}\sum\limits_{j > m} {{x^{m,j}}} \, + \sum\limits_{k < m} {{x^{k,m}}} \, \le 1\\ {\rm{ }}{x^{k,j}} \in \{ 0,1\} \end{array}xk,jmaxk∑j=k∑xk,j⋅Rk,js.t.j>m∑xm,j+k<m∑xk,m≤1xk,j∈{0,1}
第一个约束保证每个用户最多只能被配对一次,第二个约束保证配对的对称性。由于该问题是NP-hard的,可以采用松弛方法,将二元变量xk,jx^{k,j}xk,j 放松为[0,1]连续变量 ,然后使用拉格朗日对偶等方法求解,最后通过某种方式(如阈值判决)将连续解映射回二元解.
将二元约束松弛为连续区间 [0,1],得到线性规划
为每个用户的度约束引入非负乘子λm\lambda _mλm
L(x,λ)=∑k<jRk,jxk,j+∑mλm(1−∑j>mxm,j−∑k<mxk,m)=∑mλm+∑k<j(Rk,j−λk−λj)xk,j.L(x,\lambda ) = \sum\limits_{k < j} {} {R^{k,j}}{x^{k,j}} + \sum\limits_m {{\lambda m}} \left( {1 - \sum\limits{j > m} {{x^{m,j}}} - \sum\limits_{k < m} {{x^{k,m}}} } \right) = \sum\limits_m {{\lambda m}} + \sum\limits{k < j} {\left( {{R^{k,j}} - {\lambda _k} - {\lambda _j}} \right)} {x^{k,j}}.L(x,λ)=k<j∑Rk,jxk,j+m∑λm(1−j>m∑xm,j−k<m∑xk,m)=m∑λm+k<j∑(Rk,j−λk−λj)xk,j.
对偶函数定义为最大化拉格朗日函数
Θ(λ)=max0≤xk,j≤1L(x,λ).\Theta(\lambda) = \max_{0\le x^{k,j} \le 1} L(x, \lambda).Θ(λ)=0≤xk,j≤1maxL(x,λ).
最优解为
xk,j(λ)={1,若 ck,j(λ)>0,0,若 ck,j(λ)<0,∈[0,1] 任意,若 ck,j(λ)=0.x^{k,j}(\lambda) = \begin{cases} 1, & \text{若 } c_{k,j}(\lambda) > 0, \\ 0, & \text{若 } c_{k,j}(\lambda) < 0, \\ \in [0, 1] \text{ 任意}, & \text{若 } c_{k,j}(\lambda) = 0. \end{cases}xk,j(λ)=⎩ ⎨ ⎧1,0,∈[0,1] 任意,若 ck,j(λ)>0,若 ck,j(λ)<0,若 ck,j(λ)=0.
算法:
1、初始化λm\lambda _mλm,迭代次数设置为0
2、对所有的k<j,Rk,j−λk−λj{{R^{k,j}} - {\lambda _k} - {\lambda _j}}Rk,j−λk−λj
3、获得xk,j(λ)x^{k,j}(\lambda)xk,j(λ)
4、gm(t)=1−∑j>mx(t)m,j−∑k<mx(t)k,m.g_m^{(t)} = 1 - \sum_{j>m} x_{(t)}^{m,j} - \sum_{k<m} x_{(t)}^{k,m}.gm(t)=1−∑j>mx(t)m,j−∑k<mx(t)k,m.
5、更新λm(t+1)=max(0,λm(t)−αtgm(t))\lambda_m^{(t+1)} = \max(0, \lambda_m^{(t)} - \alpha_t g_m^{(t)})λm(t+1)=max(0,λm(t)−αtgm(t)) 循环执行。
6、求解出x^{k,j}<0.5 取0 > 0.5 取1输出最终配对方案。