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

时间:2019-06-13 23:58:09

标签: python nonlinear-optimization cvxpy

我想使用cvxpy解决非线性优化问题。在约束中引入DCP Error时得到1/x,其中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显然是凸的,所以我不明白问题是什么...

1 个答案:

答案 0 :(得分:0)

我通过在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

按预期返回x = 1。