多用户MIMO系统(八):基于用户服务质量(QoS)的设计、SDP/SDR的Matlab实现

多用户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=hkwksk+j=khkwjsj+nk,其中 n k ∼ C N ( 0 , σ k 2 ) n_k\sim{\mathcal{CN}}\left(0,\sigma_k^2\right) nkCN(0,σk2)表示用户侧加性白高斯噪声, σ k 2 \sigma_k^2 σk2为噪声功率, s k ∈ C {s_k}\in{\mathbb C} skC是基站传给用户 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} wkCN×1表示用户 k k k的预编码向量, h k ∈ C N × 1 {\textbf h}_k\in{\mathbb C}^{N\times1} hkCN×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=khkwj2+σk2hkwk2.

多用户MIMO系统(八):基于用户服务质量(QoS)的设计、SDP/SDR的Matlab实现_第1张图片图1:下行传输模型,一个基站服务多个用户。

此处预编码设计的策略为保证每个用户的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=1Kwkwk最小。问题建模为:[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=1Kwkwkγk=j=khkwj2+σk2hkwk2γˉ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} Wk0是个半正定矩阵,且 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=khkwj2+σk2hkwk2=j=kwjhkhkwj+σk2wkhkhkwk=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=1KTr(Wk)γˉkj=kTr(WjHk)+γˉkσk2Tr(WkHk)0,k,Wk0,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=1KTr(Wk)γˉkj=kTr(WjHk)+γˉkσk2Tr(WkHk)0,k,Wk0,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

多用户MIMO系统(八):基于用户服务质量(QoS)的设计、SDP/SDR的Matlab实现_第2张图片图2.8.2:基站传输功率与用户QoS信噪比的关系,信道采用瑞利衰落模型,蒙特卡洛仿真次数设置为2000, K = 4 K=4 K=4 σ 2 = 1 \sigma^2=1 σ2=1

图2绘制了基站传输功率随用户QoS信噪比变化的曲线,从图中可以看出,增加基站天线数可以降低用户传输功率。注意,此处每个用户的QoS信噪比设置为相同取值。

参考文献

  1. E. Karipidis, N. D. Sidiropoulos, and Z.-Q. Luo, ‘‘Quality of service and max-min fair transmit beamforming to multiple cochannel multicast groups,’’ IEEE Trans. Signal Process., vol. 56, no. 3, pp. 1268–1279, Mar. 2008.
  2. Z. Luo, W. Ma, A. M. So, Y. Ye, and S. Zhang, “Semidefinite relaxation of quadratic optimization problems,” IEEE Signal Process. Mag., vol. 27, no. 3, pp. 20–34, 2010.
  3. S. Boyd and L. Vandenberghe, Convex Optimization. Cambridge, U.K.: Cambridge Univ. Press, 2004.
  4. C.-Y. Chi, W.-C. Li, and C.-H. Lin, Convex Optimization for Signal Processing and Communications: From Fundamentals to Applications. Boca Raton, FL, USA: CRC Press, 2017.

你可能感兴趣的:(多用户多天线系统速率优化框架,mimo,sdr)