Python 2.7中的CVXPY矩阵乘法

时间:2019-05-13 21:20:48

标签: python-2.7 cvxpy convex-optimization

我正在使用CVXPY代码here。我想在Python 2.7而不是Python 3上运行它。运算符@似乎可以在Python 3上运行。要使其在python 2.7上运行,我将代码修改为

import cvxpy as cp
import numpy as np

n = 3
p = 3
np.random.seed(1)
C = np.random.randn(n, n)
A = []
b = []
for i in range(p):
   A.append(np.random.randn(n, n))
b.append(np.random.randn())

X = cp.Variable((n,n), symmetric=True)
# The operator >> denotes matrix inequality.
constraints = [X >> 0] 
prob = cp.Problem(cp.Minimize(np.matmul(C,X)), constraints)
prob.solve()

在这里我使用numpy.matmul而不是@。但是,它给了我这个错误“ ValueError:matmul:输入操作数1没有足够的尺寸”

我的问题是如何在python 2.7(而不是python 3)中成功运行此代码here

1 个答案:

答案 0 :(得分:1)

您需要对cvxpy变量使用cvxpy运算符,换句话说,您不能对cvxpy变量执行np.matmul。您可以只使用*运算符。 cvxpy会将其视为矩阵乘法。试试这个,

C = np.random.randn(2, n)
C * X

您将获得:

Expression(AFFINE, UNKNOWN, (2, 3))