1/x 违反了 CVXPY 中的 DCP 规则

1/x violates DCP rules in CVXPY

我想使用 cvxpy 解决非线性优化问题。在约束中引入 1/x 时,我得到一个 DCP Error,其中 x 是一个变量。

例如这样的代码导致 DCP Error

import cvxpy

x = cvxpy.Variable(1)

obj = cvxpy.Maximize(x)
cst = [1/x >= 1]

prob = cvxpy.Problem(obj, cst)
opt_val = prob.solve()

预期结果是 x=1。另外 1/x 显然是凸的所以我不明白问题是什么...

我通过向 prob.solve() 添加一个可选参数解决了这个问题:

import cvxpy

x = cvxpy.Variable(1)

obj = cvxpy.Maximize(x)
cst = [1/x >= 1]

prob = cvxpy.Problem(obj, cst)
opt_val = prob.solve(qcp=True)
opt_val

Returns x = 1 如预期。