我想使用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
显然是凸的,所以我不明白问题是什么...
答案 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。