Julia - 复值变量的优化

问题描述 投票:0回答:1

我正在尝试解决一个简单的优化问题,我们想要一个复值埃尔米特矩阵,因为它是变量(主题是量子力学)

using Convex  #load the optimization solvers
using SCS

# define pauli-y+ projector
# by construction a positive operator valued hermitian matrix
y_plus = [1,im]/sqrt(2)
My0 = y_plus*y_plus'

# define the variable; a 2x2 density matrix
rho = Variable(2, 2)
problem.constraints += [rho == rho']     # hermitian
problem.constraints += [trace(rho) == 1] # unit trace
problem.constraints += [rho in :SDP]     # positive definite


# define the objective
problem = maximize(trace(rho*My0))

# solve
solve!(problem,SCSSolver(verbose=false))

problem.optval

问题是,Julia/JuMP/Convex.jl 在涉及

时都会出错
maximize(trace(rho*My0))

由于

rho*My0
的迹原则上可能很复杂,但是考虑到
rho*My0
rho
的约束,我们应该确信
My0
是真实的。

如何处理这些问题?可能有一个简单的解决方案。最坏的情况我们可能必须将实部和虚部分开。

julia mathematical-optimization convex-optimization
1个回答
0
投票

您可以将问题写成:

$$ 开始{对齐*} rg \min_{ oldsymbol{A}} \quad & \operatorname{Tr} \left( oldsymbol{A} oldsymbol{B} 右),;旧符号{B} \in \mathcal{S} \ ext{服从} \quad & egin{对齐} oldsymbol{A} & \in \mathcal{S}_{+} \ \operatorname{Tr} \left( oldsymbol{A} 右) & = 1 nd{对齐} nd{对齐*} $$

其中集合是对称正半定矩阵的集合。

这些问题是等效的,因为您可能总是使用上面问题中的 $ oldsymbol{B} = - oldsymbol{M}$ 。

投影步骤为3:

  1. 投影到对称矩阵集
  2. 投影到 PSD 矩阵集
  3. 投影到带有单位迹的矩阵

由于每组的投影是已知的,我们可以很容易地解决这个问题。
然而,由于要投影到的集合不是子空间,我们不能只是迭代地投影每个集合,我们必须使用求解器进行投影(请参阅凸集交集的正交投影)。

在我看来,有两个选择:

  1. 预计梯度下降
    目标函数的梯度步骤,然后通过凸集交集的正交投影中的方法求解投影。
  2. 4 术语 ADMM
    我还没有找到一篇论文来证明这种情况下收敛的保证。但值得一试。

备注:这个答案的动机是一个独立于一般凸求解器的求解器,如

Convex.jl
JuMP.jl

© www.soinside.com 2019 - 2024. All rights reserved.