我正在尝试解决一个简单的优化问题,我们想要一个复杂的值 Hermitan 矩阵,因为它是变量(主题是量子力学)
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
。
如何处理这些问题?可能有一个简单的解决方案。在最坏的情况下,我们可能不得不拆分实部和虚部。