cvxpy问题中没有严格的不等式,但仍然收到错误“不允许严格的不等式”

时间:2020-05-30 14:25:56

标签: python numpy scipy cvxpy

我在Python中使用CVXPY库,试图解决特定的优化问题。

import cvxpy as cp
import numpy as np
from scipy.stats import norm

(...)

a = cp.Variable([10, 1])

obj = cp.Maximize(sum(norm.logcdf(A @ a, scale=sigma)))
constraints = [a >= np.zeros([10, 1]), a <= np.ones([10, 1])]

prob = cp.Problem(objective=obj, constraints=constraints)

prob.solve()

这里A是特定的numpy矩阵,而sigma是特定的标量。当我尝试解决问题时,包装盒给我以下错误。

Traceback (most recent call last):
  File "~\anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-23-c554382c1c69>", line 19, in <module>
    obj = cp.Maximize(sum(norm.logcdf(A @ a, scale=sigma)))
  File "~\anaconda3/lib/python3.7/site-packages/scipy/stats/_distn_infrastructure.py", line 1848, in logcdf
    cond1 = self._open_support_mask(x, *args) & (scale > 0)
  File "~\anaconda3/lib/python3.7/site-packages/scipy/stats/_distn_infrastructure.py", line 901, in _open_support_mask
    return (a < x) & (x < b)
  File "~\anaconda3/lib/python3.7/site-packages/cvxpy/expressions/expression.py", line 597, in __gt__
    raise NotImplementedError("Strict inequalities are not allowed.")
NotImplementedError: Strict inequalities are not allowed.

但是问题本身并不包含严格的不等式……似乎SCIPY软件包与CVXPY冲突,但不知道如何解决...

1 个答案:

答案 0 :(得分:1)

cvxpy中有一个norm。因此,请更改以下代码:

from scipy.stats import stats
obj = cp.Maximize(sum(stats.logcdf(A @ a, scale=sigma)))

functions