复值变量的Julia-优化

复值变量的Julia-优化,julia,mathematical-optimization,convex-optimization,Julia,Mathematical Optimization,Convex Optimization,我试图解决一个简单的优化问题,我们想要一个复值的厄米坦矩阵作为它的变量(主题是量子力学) 问题是,Julia/JuMP/convertic.jl在使用时都会出错 maximize(trace(rho*My0)) 由于rho*My0的轨迹在原理上是复杂的,但是我们应该确保rho*My0在rho和My0的约束下是真实的 如何处理这些问题?也许有一个简单的解决办法。最糟糕的情况是,我们可能必须将实部和虚部分开。考虑到添加复杂支持对于代码申请者来说是一个开放的项目,您处于受支持行为的边缘。您可以尝试类

我试图解决一个简单的优化问题,我们想要一个复值的厄米坦矩阵作为它的变量(主题是量子力学)

问题是,Julia/JuMP/convertic.jl在使用时都会出错

maximize(trace(rho*My0))
由于
rho*My0
的轨迹在原理上是复杂的,但是我们应该确保
rho*My0
rho
My0
的约束下是真实的


如何处理这些问题?也许有一个简单的解决办法。最糟糕的情况是,我们可能必须将实部和虚部分开。

考虑到添加复杂支持对于代码申请者来说是一个开放的项目,您处于受支持行为的边缘。您可以尝试类似于
最大化(trace(convert(Array{Float64},rho*My0))
最大化(trace(real(rho*My0)))
,但如果这样做有效,我会感到惊讶。为什么不直接最大化
abs(trace(rho*My0))
?如果痕迹是真的,它是一样的。
maximize(trace(rho*My0))