我正在使用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.
但是,对我来说,它们看起来并不严格...
答案 0 :(得分:1)
与您的earlier question中的原因相同(尽管很难分析)。
您需要明确询问cvxpy是max
function。 总是必需的/建议。
cp.Minimize(max(M*theta-b))
应该是
cp.Minimize(cp.max(M*theta-b))
除了following之外,您基本上只需要使用cvxpy中的函数:
CVXPY函数求和将单个表达式中的所有条目求和。内置的Python总和应用于将表达式列表加在一起。