非严格不等式作为Python库cvxpy中的约束

时间:2019-12-18 21:17:34

标签: python numpy cvxpy

我正在使用cvxpy库来解决某些特定的优化问题

import cvxpy as cp
import numpy as np

(...)

prob = cp.Problem(
    cp.Minimize(max(M*theta-b)) <= 45,
    [-48 <= theta, theta <= 48])

(这里M和b是某些numpy矩阵。)

有趣的是,它尖叫:

NotImplementedError                       Traceback (most recent call last)
<ipython-input-62-0296c965b1ff> in <module>
      1 prob = cp.Problem(
----> 2     cp.Minimize(max(M*theta-b)) <= 45,
      3     [-10 <= theta, theta <= 10])

~\Anaconda3\lib\site-packages\cvxpy\expressions\expression.py in __gt__(self, other)
    595         """Unsupported.
    596         """
--> 597         raise NotImplementedError("Strict inequalities are not allowed.")

NotImplementedError: Strict inequalities are not allowed.

但是,对我来说,它们看起来并不严格...

1 个答案:

答案 0 :(得分:1)

与您的earlier question中的原因相同(尽管很难分析)。

您需要明确询问cvxpy是max function总是必需的/建议

cp.Minimize(max(M*theta-b))

应该是

cp.Minimize(cp.max(M*theta-b))

除了following之外,您基本上只需要使用cvxpy中的函数:

  

CVXPY函数求和将单个表达式中的所有条目求和。内置的Python总和应用于将表达式列表加在一起。