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

Python 1/x违反了CVXPY中的DCP规则,python,nonlinear-optimization,cvxpy,Python,Nonlinear Optimization,Cvxpy,我想用cvxpy解决一个非线性优化问题。当在约束中引入1/x时,我得到一个DCP错误,其中x是一个变量 例如,这样的代码会导致DCP错误 进口cvxpy x=cvxpy.Variable1 obj=cvxpy.Maximizex cst=[1/x>=1] prob=cvxpy.Problemobj,cst opt_val=prob.solve 预期结果为x=1。另外,1/x显然是凸的,所以我不明白问题是什么…我通过向prob.solve添加一个可选参数来解决问题: 进口cvxpy x=cvxpy

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

例如,这样的代码会导致DCP错误

进口cvxpy x=cvxpy.Variable1 obj=cvxpy.Maximizex cst=[1/x>=1] prob=cvxpy.Problemobj,cst opt_val=prob.solve
预期结果为x=1。另外,1/x显然是凸的,所以我不明白问题是什么…

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

进口cvxpy x=cvxpy.Variable1 obj=cvxpy.Maximizex cst=[1/x>=1] prob=cvxpy.Problemobj,cst opt_val=prob.solveqcp=True 选择值
按预期返回x=1。

查看错误消息dcperror只能除以标量常量。。您正在除以一个变量。我没有这个提示。我的意思是DCPError:问题不符合DCP规则。编辑:由于在CVXOPT中允许除以一个变量,所以我假设使用CVXPY也可以