多用户MIMO系统(八):基于用户服务质量(QoS)的设计

关键词

MIMO多用户用户QoS半正定规划半正定松弛Matlab实现

基本介绍

本文介绍了多用户MIMO系统基于用户QoS的预编码设计,优化目标为在保证每个用户QoS的前提下最小化基站传输功率。通过引入辅助变量,发现这一优化问题可以采用半正定规划以及半正定松弛来解决,并且给出了对应的Matlab实现。

主要内容

考虑图1所示下行多用户MIMO系统,基站配置多条天线,天线数为yarn 多用户 多用户mimo_mimo,用户均配置多天线,用户数为yarn 多用户 多用户mimo_sdr_02。此处从保证用户服务质量(quality of service, QoS)的角度对发射端预编码以及功率分配策略进行设计。具体来讲,用户yarn 多用户 多用户mimo_多用户_03收到的信号为:yarn 多用户 多用户mimo_预编码_04其中yarn 多用户 多用户mimo_mimo_05表示用户侧加性白高斯噪声,yarn 多用户 多用户mimo_多用户_06为噪声功率,yarn 多用户 多用户mimo_多用户_07是基站传给用户yarn 多用户 多用户mimo_多用户_03的信号,满足yarn 多用户 多用户mimo_yarn 多用户_09yarn 多用户 多用户mimo_yarn 多用户_10表示用户yarn 多用户 多用户mimo_多用户_03的预编码向量,yarn 多用户 多用户mimo_多用户_12表示基站与用户yarn 多用户 多用户mimo_多用户_03的之间的信道。对于用户yarn 多用户 多用户mimo_多用户_03而言,信干噪比为yarn 多用户 多用户mimo_mimo_15

yarn 多用户 多用户mimo_预编码_16

图1:下行传输模型,一个基站服务多个用户。

此处预编码设计的策略为保证每个用户的QoS,即使得每个用户的信干噪比大于某个预设值yarn 多用户 多用户mimo_yarn 多用户_17,同时使得总的传输功率yarn 多用户 多用户mimo_yarn 多用户_18最小。问题建模为:[1]yarn 多用户 多用户mimo_sdr_19上述问题可以采用半正定规划(Semidefinite programming,SDP)来解决[2]。定义yarn 多用户 多用户mimo_sdr_20,可知yarn 多用户 多用户mimo_多用户_21是个半正定矩阵,且yarn 多用户 多用户mimo_多用户_22的秩yarn 多用户 多用户mimo_sdr_23为1,即yarn 多用户 多用户mimo_mimo_24。此外,定义yarn 多用户 多用户mimo_预编码_25,则信干噪比可以写为:yarn 多用户 多用户mimo_mimo_26上述问题可以等价地写为:yarn 多用户 多用户mimo_多用户_27如果将上述问题中的制约条件“yarn 多用户 多用户mimo_mimo_24”给去掉,那么这个问题就是一个标准的凸优化问题,可以用CVX工具包直接求解[3]。由于优化变量都是半正定矩阵,这个问题也被称为半正定规划问题。因为这是个凸问题,所以CVX工具包可以直接求出它的最优解,但需要注意的是上述问题没有考虑yarn 多用户 多用户mimo_mimo_24这一约束条件,因此这只是原问题的一个次优解。不过,幸运的是,利用KKT条件,可以推导得出上述问题的解一定满足yarn 多用户 多用户mimo_mimo_24这个约束条件[4]。也就是说,通过求解下述松弛问题:
yarn 多用户 多用户mimo_yarn 多用户_31

以下,给出具体的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

yarn 多用户 多用户mimo_mimo_32

图2.8.2:基站传输功率与用户QoS信噪比的关系,信道采用瑞利衰落模型,蒙特卡洛仿真次数设置为2000,yarn 多用户 多用户mimo_sdr_33yarn 多用户 多用户mimo_多用户_34

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