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 如预期。
我想使用 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 如预期。