半正定松弛法(SDR)2021-11-06

@[TOC](半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题(QCQP))

SDR适用问题的表现形式

min ⁡ x ∈ R n    x T C x                                     s . t .    x T A i x ⊵ i b i ,   i = 1 , ⋯   , m , \min_{x \in \mathbb{R} ^n} ~~ x^TCx \\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \mathrm {s.t.} ~~x^TA_ix \unrhd_i b_i, ~i = 1,\cdots,m, xRnmin  xTCx                                   s.t.  xTAixibi, i=1,,m,

  • 该问题定义在实数域 R n \mathbb{R} ^n Rn,复数域类似。
  • ⊵ i \unrhd_i i 可以表示为 ≥ \geq , ≤ \leq , = = =,只要约束条件是二次约束即可。
  • C C C, A i A_i Ai 都是对称矩阵, C ,   A i (   i = 1 , ⋯   , m ) ∈ S n C, ~A_i (~i = 1,\cdots,m) \in \mathbb{S} ^n C, Ai( i=1,,m)Sn
  • 因为目标函数和约束条件中都有两个 x x x,所以该类问题也称为 二次约束二次规划(quadratically constrained quadratic programs, QCQP) 问题,需要注意的是, QCQP并不是一个凸问题,因为 x T A i x ≥ 0 x^TA_ix \geq 0 xTAix0 x T A i x = 0 x^TA_ix = 0 xTAix=0时可行域并不是一个凸集。

SDR处理

  • SDR方法就是将问题转化为一个凸问题从而求解。SDR 本身的性能是次优的。
    引入一个新的变量 X = x x T X=xx^T X=xxT 作为优化变量, 那么上述问题可以被写为
    min ⁡ X ∈ S n    T r ( C X )                                     s . t .    T r ( A i X ) ⊵ i b i ,   i = 1 , ⋯   , m ,                             X ⪰ 0 , r a n k ( X ) = 1. \min_{X \in \mathbb{S} ^n} ~~ \mathrm {Tr}(CX) \\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \mathrm {s.t.} ~~\mathrm {Tr}(A_iX) \unrhd_i b_i, ~i = 1,\cdots,m, \\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ X \succeq 0, \mathrm {rank} (X) =1. XSnmin  Tr(CX)                                   s.t.  Tr(AiX)ibi, i=1,,m,                           X0,rank(X)=1.
  • 该问题是SDR可处理问题的标准形式。
  • 注意到目标函数 x T C x x^TCx xTCx是一个标量,标量可以看成一个 1 × 1 的矩阵, 且迹等于本身,即 T r ( x T C x ) = x T C x \mathrm {Tr}(x^TCx)=x^TCx Tr(xTCx)=xTCx 。 根据迹的性质, 有 T r ( A B ) = T r ( B A ) \mathrm {Tr}( A B ) = \mathrm {Tr}( B A ) Tr(AB)=Tr(BA) 推到的 T r ( A B C ) = T r ( B A C ) = T r ( B C A ) \mathrm {Tr}( ABC) = \mathrm {Tr}( BAC) = \mathrm {Tr}( BCA) Tr(ABC)=Tr(BAC)=Tr(BCA)。应用该性质 T r ( x T C x ) = T r ( C x x T ) \mathrm {Tr}(x^TCx) = \mathrm {Tr}(Cxx^T) Tr(xTCx)=Tr(CxxT),这也就变成了目标函数 T r ( C X ) \mathrm {Tr}(CX) Tr(CX)。同理,约束条件也可以根据相同的变换得到。
  • 相比于上述问题,该问题多了两个约束,是由于 X = x x T X=xx^T X=xxT 引入的。 r a n k ( X ) = 1 \mathrm {rank}(X)=1 rank(X)=1 是因为所有的 X X X 的列都是线性相关的,所以,只有一个特征值等于 x T x x^Tx xTx,显然是大于0的,所以肯定是半正定矩阵。
  • 由于迹函数是个仿射变换,所以迹函数约束是个凸约束。 而半正定约束也是凸约束,因为其可行域显然是个凸集, 因为两个半正定矩阵的和一定也是一个半正定矩阵。因此除了 r a n k ( X ) = 1 \mathrm {rank}(X)=1 rank(X)=1 这个限制以外, 整个问题是一个凸问题(所以经过半定松弛处理的凸问题可以用CVX求解)。

工程处理

工程上很自然的处理办法就是暂时忽略 r a n k ( X ) = 1 \mathrm {rank}(X)=1 rank(X)=1 约束(松弛掉秩为1的约束),并通过凸优化方法(以CVX工具为代表的的内点法数值算法)来求解出一个 X X X

  • 问题的关键点在于,我们要求得的是 x x x 而不是 X X X。如果通过凸优化刚好求得的 X X X 刚好就是一个 r a n k ( X ) = 1 \mathrm {rank}(X)=1 rank(X)=1 的矩阵,那么 x x x 可以通过 SVD/EVD 求得。
  • 但更多时候,X 并不是 r a n k ( X ) = 1 \mathrm {rank}(X)=1 rank(X)=1 的矩阵时,那么从工程实现角度上可以通过求解下列问题求得 x x x
    min ⁡ x ∥ X − x T x ∥ F 2 \min_x \| X- x^Tx \|_F^2 xminXxTxF2
    即找一个最接近 X X X x T x x^Tx xTx。 这个问题很经典了,而它的闭式解就是 x x x X X X 的最大特征向量乘以最大特征值的平方根, 即,将 X X X 的特征值分解表示为:
    X ∗ = ∑ i = 1 r λ i q i q i T X^* = \sum_{i=1}^r \lambda_i q_i q_i^T X=i=1rλiqiqiT
    其中 λ i \lambda_i λi q i q_i qi 代表第 i i i 大的特征值和特征向量,那么问题的最优解 x = x ∗ = λ 1 q 1 x=x^*=\sqrt{\lambda_1}q_1 x=x=λ1 q1。但是,问题又出现了! 虽然 X X X 满足所有的约束, 但由于在这一步中求得的 X ∗ X^* X 是一个近似的结果。 此时得到的 X X X 不一定满足原问题中的约束! 也就是说, 经过一顿转化之后, 求得的 X X X 并不是原问题的可行解!此时怎么办呢? 解决方案也非常符合工程思维:直接从 x x x 出发找一个离 x x x 最近的可行解, 这就是SDR的最终结果。
    需要注意的两点:
  • 直接从 x x x出发找一个离 x x x最近的可行解, 这本身就是一个独立的问题, 具体问题具体分析。
  • 在SDR中有许许多多的近似,工程处理,因此 SDR的解远非全局最优解
  • 从SDR解 X X X 获得原问题可行解的一种经典思路:SDR + Gaussian Randomization. 这种处理相比于上面提到的直接寻找欧氏距离最近的 x x x,会有通过复杂度提升换来的一定性能增益。(Gaussian Randomization 会尝试更多可能的 x x x,通过遍历更多解来获得更好的性能)

两个工程应用实例

将SDR方法应用到通信设计中的两个工程应用实例:

  1. HBF混合波束成形的经典论文 《Alternating Minimization Algorithms for Hybrid Precoding in Millimeter Wave MIMO Systems》,使用SDR处理思路和过程 点击转到链接: 实例2,作者 Xianghao Yu 博士给出的代码 点击转到代码链接: 主函数为 SDR-Altmin
  2. 智能反射面相关论文《Intelligent Reflecting Surface Enhanced Wireless Network: Joint Active and Passive Beamforming Design》中, 对于passive beamforming 的设计点击转到链接: 实例2 。以武庆庆老师的该论文背景, 求解其 (P4) 所写,MATLAB代码如下:
Nt = 16;
M = 4;
L = 100; % number of Gaussian randomizations
G = sqrt(2) / 2 * (randn(M, Nt) + 1j * randn(M, Nt));
hr = sqrt(2) / 2 * (randn(M, 1) + 1j * randn(M, 1));
hd = sqrt(2) / 2 * (randn(Nt, 1) + 1j * randn(Nt, 1));
phi = diag(hr') * G;

R = [phi * phi' phi * hd; hd' * phi' 0];

cvx_begin sdp quiet
variable V(M+1, M+1) hermitian
maximize(real(trace(R*V)));
subject to
diag(V) == 1;
V >= 0;
cvx_end

%% method 1
max_F = 0;
max_v = 0;
[U, Sigma] = eig(V);
for l = 1 : L
    r = sqrt(2) / 2 * (randn(M+1, 1) + 1j * randn(M+1, 1));
    v = U * Sigma^(0.5) * r;
    if v' * R * v > max_F
        max_v = v;
        max_F = v' * R * v;
    end
end

v = exp(1j * angle(max_v / max_v(end)));
v = v(1 : M);
v' * phi * phi' * v

%% method 2
max_F = 0;
max_v = 0;
[U, Sigma] = eig(V);
for l = 1 : L
    r = sqrt(2) / 2 * (randn(M+1, 1) + 1j * randn(M+1, 1));
    v = U * Sigma^(0.5) * r;
    v = exp(1j * angle(v / v(end)));
    v = v(1 : M);
    if v' * phi * phi' * v > max_F
        max_v = v;
        max_F = v' * phi * phi' * v;
    end
end
max_v' * phi * phi' * max_v

%% method 3  element iteration
T = phi * phi';
v = sqrt(2) / 2 * (randn(M, 1) + 1j * randn(M, 1));
for n = 1 : 10
    for i = 1 : M
        tmp = 0;
        for j = 1 : M
            if i~= j
                tmp = tmp + T(i,j) * v(j);
            end
        end
        v(i) = exp(1j * angle(tmp));
    end
end
v' * phi * phi' * v



感谢CSDN优质博主 “B417科研笔记” 的学习分享。

参考资料

【1】Zhi-quan Luo 老师的经典著作 《Semidefinite Relaxation of Quadratic Optimization Problems》
【2】https://blog.csdn.net/weixin_39274659/article/details/117627627
【3】https://blog.csdn.net/weixin_39274659/article/details/121619619
【4】《 Alternating Minimization Algorithms for Hybrid Precoding in Millimeter Wave MIMO Systems》
【5】《Intelligent Reflecting Surface Enhanced Wireless Network: Joint Active and Passive Beamforming Design》

  • 19
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值