将优化问题从CVX转换为CVXPY?

时间:2019-02-08 23:21:46

标签: cvxpy cvx

我正在尝试将here中所述的半定编程问题从CVX转换为CVXPY。我的尝试如下:

import cvxpy as cvx
import numpy as np

c = [0, 1]
n = len(c)

# Create optimization variables.
f = cvx.Variable((n, n), hermitian=True)

# Create constraints.
constraints = [f >> 0]
for k in range(1, n):
    indices = [(i * n) + i - (n - k) for i in range(n - k, n)]
    constraints += [cvx.sum(cvx.vec(f)[indices]) == c[n - k]]

# Form objective.
obj = cvx.Maximize(c[0] - cvx.trace(f))

# Form and solve problem.
prob = cvx.Problem(obj, constraints)
sol = prob.solve()

print(sol)
print(f.value)

这里的问题是,当我将傅立叶级数的系数转换为数组c时,它在复数值上失败。我认为这是由于CVX和CVXPY的maximize函数之间存在差异。 我不确定哪个CVX最大化,因为矩阵的轨迹是一个复数值。正如下面所指出的,由于矩阵是Hermitian,所以轨迹是真实的,但是代码仍然失败。拥有CVXPY知识的人可以解决这个问题吗?

0 个答案:

没有答案