Cre*_*tor 5 python mathematical-optimization convex-optimization python-2.7 cvxpy
假设我的约束是矩阵变量的第一列和第三列的乘积大于一。如何在 CVXPY 中实施?例子:
w = Variable(4,3)
Run Code Online (Sandbox Code Playgroud)
在 Matlab 中,我的约束是:
w(:,1)'*w(:,3)>1
Run Code Online (Sandbox Code Playgroud)
我如何在 CVXPY 中实现它?或者我们可以在 CVXPY 下执行点积吗?numpy.dotCVXPY 不支持。
不可能将两个变量相乘,所有约束都必须是线性的(一般为DCP)。
如果您尝试执行禁止的操作,CVXPY 会引发 DCPError。
import cvxpy
x = cvxpy.Variable()
y = cvxpy.Variable()
constraints = [x*y > 1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\cvxpy\expressions\expression.py", line 43, in cast_op
return binary_op(self, other)
File "C:\Python27\lib\site-packages\cvxpy\expressions\expression.py", line 226, in __mul__
raise DCPError("Cannot multiply two non-constants.")
cvxpy.error.DCPError: Cannot multiply two non-constants.
Run Code Online (Sandbox Code Playgroud)
如果至少一个变量是整数/布尔值,则可以使用松弛变量来避免这种情况。否则,您可以使用任何非线性求解器,例如IPOPT。
同样的问题在这里得到了回答。
| 归档时间: |
|
| 查看次数: |
3816 次 |
| 最近记录: |