多用户MIMO系统(八):基于用户服务质量(QoS)的设计
MIMO,多用户,用户QoS,半正定规划,半正定松弛,Matlab实现
本文介绍了多用户MIMO系统基于用户QoS的预编码设计,优化目标为在保证每个用户QoS的前提下最小化基站传输功率。通过引入辅助变量,发现这一优化问题可以采用半正定规划以及半正定松弛来解决,并且给出了对应的Matlab实现。
考虑图1所示下行多用户MIMO系统,基站配置多条天线,天线数为 N N N,用户均配置多天线,用户数为 K K K。此处从保证用户服务质量(quality of service, QoS)的角度对发射端预编码以及功率分配策略进行设计。具体来讲,用户 k k k收到的信号为: y k = h k † w k s k + ∑ j ≠ k h k † w j s j + n k , y_k={\textbf h}_k^{\dag}{\textbf w}_ks_k+\sum_{j\neq k}{\textbf h}_k^{\dag}{\textbf w}_js_j+n_k, yk=hk†wksk+j=k∑hk†wjsj+nk,其中 n k ∼ C N ( 0 , σ k 2 ) n_k\sim{\mathcal{CN}}\left(0,\sigma_k^2\right) nk∼CN(0,σk2)表示用户侧加性白高斯噪声, σ k 2 \sigma_k^2 σk2为噪声功率, s k ∈ C {s_k}\in{\mathbb C} sk∈C是基站传给用户 k k k的信号,满足 E { s k s k † } = 1 {\mathbb E}\left\{s_ks_k^{\dag}\right\}=1 E{sksk†}=1, w k ∈ C N × 1 {\textbf w}_k\in{\mathbb C}^{N\times1} wk∈CN×1表示用户 k k k的预编码向量, h k ∈ C N × 1 {\textbf h}_k\in{\mathbb C}^{N\times1} hk∈CN×1表示基站与用户 k k k的之间的信道。对于用户 k k k而言,信干噪比为 γ k = ∣ h k † w k ∣ 2 ∑ j ≠ k ∣ h k † w j ∣ 2 + σ k 2 . \gamma_k=\frac{\left|{\textbf h}_k^{\dag}{\textbf w}_k\right|^2}{\sum_{j\neq k}\left|{\textbf h}_k^{\dag}{\textbf w}_j\right|^2+\sigma_k^2}. γk=∑j=k∣hk†wj∣2+σk2∣hk†wk∣2.
此处预编码设计的策略为保证每个用户的QoS,即使得每个用户的信干噪比大于某个预设值 γ ˉ k \bar\gamma_k γˉk,同时使得总的传输功率 ∑ k = 1 K ∣ w k † w k ∣ \sum_{k=1}^{K}\left|{\textbf w}_k^{\dag}{\textbf w}_k\right| ∑k=1K∣∣∣wk†wk∣∣∣最小。问题建模为:[1] min { w i } ∑ k = 1 K ∣ w k † w k ∣ s.t. γ k = ∣ h k † w k ∣ 2 ∑ j ≠ k ∣ h k † w j ∣ 2 + σ k 2 ≥ γ ˉ k , ∀ k . \begin{aligned} \min_{\left\{{\textbf w}_i\right\}}~&\sum_{k=1}^{K}\left|{\textbf w}_k^{\dag}{\textbf w}_k\right|\\ {\text{s.t.}}~&\gamma_k=\frac{\left|{\textbf h}_k^{\dag}{\textbf w}_k\right|^2}{\sum_{j\neq k}\left|{\textbf h}_k^{\dag}{\textbf w}_j\right|^2+\sigma_k^2}\geq\bar{\gamma}_k,\forall k. \end{aligned} {wi}min s.t. k=1∑K∣∣∣wk†wk∣∣∣γk=∑j=k∣∣∣hk†wj∣∣∣2+σk2∣∣∣hk†wk∣∣∣2≥γˉk,∀k.上述问题可以采用半正定规划(Semidefinite programming,SDP)来解决[2]。定义 W k = w k w k † {\textbf W}_k={\textbf w}_k{\textbf w}_k^{\dag} Wk=wkwk†,可知 W k ⪰ 0 {\textbf W}_k\succeq{\textbf 0} Wk⪰0是个半正定矩阵,且 W k {\textbf W}_k Wk的秩 rank ( W k ) {\text{rank}}\left({\textbf W}_k\right) rank(Wk)为1,即 rank ( W k ) = 1 {\text{rank}}\left({\textbf W}_k\right)=1 rank(Wk)=1。此外,定义 H k = h k h k † {\textbf H}_k={\textbf h}_k{\textbf h}_k^{\dag} Hk=hkhk†,则信干噪比可以写为: γ k = ∣ h k † w k ∣ 2 ∑ j ≠ k ∣ h k † w j ∣ 2 + σ k 2 = w k † h k h k † w k ∑ j ≠ k w j † h k h k † w j + σ k 2 = Tr ( W k H k ) ∑ j ≠ k Tr ( W j H k ) + σ k 2 , \gamma_k=\frac{\left|{\textbf h}_k^{\dag}{\textbf w}_k\right|^2}{\sum_{j\neq k}\left|{\textbf h}_k^{\dag}{\textbf w}_j\right|^2+\sigma_k^2} =\frac{{\textbf w}_k^{\dag}{\textbf h}_k{\textbf h}_k^{\dag}{\textbf w}_k}{\sum_{j\neq k}{\textbf w}_j^{\dag}{\textbf h}_k{\textbf h}_k^{\dag}{\textbf w}_j+\sigma_k^2} =\frac{\text{Tr}\left({\textbf W}_k{\textbf H}_k\right)}{\sum_{j\neq k}\text{Tr}\left({\textbf W}_j{\textbf H}_k\right)+\sigma_k^2}, γk=∑j=k∣∣∣hk†wj∣∣∣2+σk2∣∣∣hk†wk∣∣∣2=∑j=kwj†hkhk†wj+σk2wk†hkhk†wk=∑j=kTr(WjHk)+σk2Tr(WkHk),上述问题可以等价地写为: min { w i } ∑ k = 1 K Tr ( W k ) s.t. γ ˉ k ∑ j ≠ k Tr ( W j H k ) + γ ˉ k σ k 2 − Tr ( W k H k ) ≤ 0 , ∀ k , W k ⪰ 0 , ∀ k , rank ( W k ) = 1 , ∀ k . \begin{aligned} \min_{\left\{{\textbf w}_i\right\}}~&\sum_{k=1}^{K}{\text{Tr}}\left({\textbf W}_k\right)\\ {\text{s.t.}}~&\bar{\gamma}_k\sum_{j\neq k}\text{Tr}\left({\textbf W}_j{\textbf H}_k\right)+\bar{\gamma}_k\sigma_k^2-\text{Tr}\left({\textbf W}_k{\textbf H}_k\right) \leq0,\forall k,\\ &{\textbf W}_k\succeq{\textbf 0},\forall k,\\ &{\text{rank}}\left({\textbf W}_k\right)=1,\forall k. \end{aligned} {wi}min s.t. k=1∑KTr(Wk)γˉkj=k∑Tr(WjHk)+γˉkσk2−Tr(WkHk)≤0,∀k,Wk⪰0,∀k,rank(Wk)=1,∀k.如果将上述问题中的制约条件“ rank ( W k ) = 1 {\text{rank}}\left({\textbf W}_k\right)=1 rank(Wk)=1”给去掉,那么这个问题就是一个标准的凸优化问题,可以用CVX工具包直接求解[3]。由于优化变量都是半正定矩阵,这个问题也被称为半正定规划问题。因为这是个凸问题,所以CVX工具包可以直接求出它的最优解,但需要注意的是上述问题没有考虑 rank ( W k ) = 1 {\text{rank}}\left({\textbf W}_k\right)=1 rank(Wk)=1这一约束条件,因此这只是原问题的一个次优解。不过,幸运的是,利用KKT条件,可以推导得出上述问题的解一定满足 rank ( W k ) = 1 {\text{rank}}\left({\textbf W}_k\right)=1 rank(Wk)=1这个约束条件[4]。也就是说,通过求解下述松弛问题:
min { w i } ∑ k = 1 K Tr ( W k ) s.t. γ ˉ k ∑ j ≠ k Tr ( W j H k ) + γ ˉ k σ k 2 − Tr ( W k H k ) ≤ 0 , ∀ k , W k ⪰ 0 , ∀ k , \begin{aligned} \min_{\left\{{\textbf w}_i\right\}}~&\sum_{k=1}^{K}{\text{Tr}}\left({\textbf W}_k\right)\\ {\text{s.t.}}~&\bar{\gamma}_k\sum_{j\neq k}\text{Tr}\left({\textbf W}_j{\textbf H}_k\right)+\bar{\gamma}_k\sigma_k^2-\text{Tr}\left({\textbf W}_k{\textbf H}_k\right) \leq0,\forall k,\\ &{\textbf W}_k\succeq{\textbf 0},\forall k, \end{aligned} {wi}min s.t. k=1∑KTr(Wk)γˉkj=k∑Tr(WjHk)+γˉkσk2−Tr(WkHk)≤0,∀k,Wk⪰0,∀k, 可以获得原问题的最优解。
以下,给出具体的Matlab代码来解决上述半正定规划问题。
QoS_Signal_to_Noise_Ratio = [-5:5:25]; % 用户QoS,用信噪比表示,单位为dB
Monte_Carlo = 2000; % 蒙特卡洛仿真次数
N = 4; % 基站天线数
K = 4; % 用户数
noise = 1; % 噪声功率为0 dB
Data = ones(Monte_Carlo,length(QoS_Signal_to_Noise_Ratio));
for Monte = [1:1:Monte_Carlo]
Tmp_Data = ones(1,length(QoS_Signal_to_Noise_Ratio));
for QoS_index = [1:1:length(QoS_Signal_to_Noise_Ratio)]
[Monte,QoS_index]
snr = 10^(QoS_Signal_to_Noise_Ratio(QoS_index)/10);
H = 1/sqrt(2)*randn(K,N) + 1j*1/sqrt(2)*randn(K,N); % MIMO信道(考虑瑞利衰落模型)
A = ones(N,N,K); % 存储用户信道与其自身的共轭转置的乘积,即h_k*(h_k)^{H}
for index = [1:1:K]
A(:,:,index) = H(index,:)' * H(index,:);
end
Tmp_Data(QoS_index) = CVX_QoS_SDP(A,N,snr,noise); % 利用CVX求解SDP问题
end
Data(Monte,:) = Tmp_Data;
end
%% 注意由于SDP问题采用CVX工具包进行数值求解,容易发生数据溢出的现象,
% 此外,由于精度等的设置,仿真出来的数据未必都是有效的数据。因此,我们
% 需要从获取的全部数据中筛选出合理的数据。此处采用的筛选办法叙述如下:
% 直观来看,用户QoS信噪比越高,所需的传输功率越大,利用这条规律,我们筛
% 选出2000条数据中,传输功率随用户QoS信噪比单调递增的数据用于绘图。
Tmp = []; % 存储筛选后的数据
for i=1:size(Data,1)
if Data(i,:)==sort(Data(i,:)) % 判断当前数据里传输功率是否随用户QoS信噪比单调递增
Tmp = [Tmp;Data(i,:)]; % 只留下传输功率随用户QoS信噪比单调递增的数据
end
end
plot(QoS_Signal_to_Noise_Ratio,mean(10*log10(Tmp)),'-v');
xlabel('用户QoS [dB]');
ylabel('传输功率 [dB]');
grid on;
其中,函数CVX_QoS_SDP通过利用CVX求解SDP问题。
function [y] = CVX_QoS_SDP(A,Antenna_Number,QoS,noise)
% CVX_QoS_SDP 利用半正定规划求解MU-MISO系统保证用户QoS的预编码设计问题
% Antenna_Number 表示基站天线数
% A 存储了信道矩阵
% QoS 存储了用户QoS信噪比
% noise 存储了噪声功率
N = Antenna_Number;
snr = QoS;
cvx_clear
cvx_begin quiet
% 定义变量,一共有4个,它们都是复数半正定矩阵(complex semidefinite)
variable X1(N,N) complex semidefinite
variable X2(N,N) complex semidefinite
variable X3(N,N) complex semidefinite
variable X4(N,N) complex semidefinite
minimize(real(trace(X1)+trace(X2)+trace(X3)+trace(X4))); % 目标函数
% 注意由于优化变量为复数,尽管目标函数的虚部为0,也需要取目标函数的实部,以保证程序不出错
% 上述注意事项也可用于制约条件
subject to % 以下为各个用户的QoS制约条件,A(:,:,i)存储了用户信道与其自身的共轭转置的乘积,即h_k*(h_k)^{H}
snr*real(trace(A(:,:,1)*X2) + trace(A(:,:,1)*X3) + trace(A(:,:,1)*X4) + noise) - real(trace(A(:,:,1)*X1)) <= 0;
snr*real(trace(A(:,:,2)*X1) + trace(A(:,:,2)*X3) + trace(A(:,:,2)*X4) + noise) - real(trace(A(:,:,2)*X2)) <= 0;
snr*real(trace(A(:,:,3)*X1) + trace(A(:,:,3)*X2) + trace(A(:,:,3)*X4) + noise) - real(trace(A(:,:,3)*X3)) <= 0;
snr*real(trace(A(:,:,4)*X1) + trace(A(:,:,4)*X2) + trace(A(:,:,4)*X3) + noise) - real(trace(A(:,:,4)*X4)) <= 0;
cvx_end
y = real(trace(X1)+trace(X2)+trace(X3)+trace(X4)); % 返回优化后的目标函数值
end
图2.8.2:基站传输功率与用户QoS信噪比的关系,信道采用瑞利衰落模型,蒙特卡洛仿真次数设置为2000, K = 4 K=4 K=4, σ 2 = 1 \sigma^2=1 σ2=1。
图2绘制了基站传输功率随用户QoS信噪比变化的曲线,从图中可以看出,增加基站天线数可以降低用户传输功率。注意,此处每个用户的QoS信噪比设置为相同取值。