CVXPY:使用两组不同格式的约束返回None

时间:2018-05-26 10:09:05

标签: python constraints cvxpy

我是CVXPY的新手。我一直在努力解决一个简单的可行性问题。这是代码:

from cvxpy import *
import numpy as np

dim = np.shape(Bs[0])[1] 
X = Variable(dim)
objective = Minimize(0)
constraintsA = [X.T * M * X + B * X + C == 0 for M, B, C in zip(Ms, Bs, Cs)]
constraintsB = [A * X - b == 0 for A, b in zip(As, bs)]
constraints = constraintsA + constraintsB
prob = Problem(objective, constraints)

result = prob.solve()
R = X.value
print R

下面,您可以找到输入矩阵:

Ms = [array([[ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.]]), 
      array([[ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.]]), 
      array([[ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.],
             [ 0.,  0.,  0.,  0.,  0.,  0.]])]
 Bs = [array([[-18.,   0.,   0.,  18.,   0.,   0.]]), 
       array([[  0.,   0.,   0.,   0., -36.,   0.]]), 
       array([[  0.,   0., -18.,   0.,   0., -18.]])]
 Cs = [270.0, 540.0, 810.0]

 As = [array([[ 0., -1.,  1.,  0.,  0.,  0.],
              [ 0.,  0.,  0.,  0., -1.,  1.]]), 
       array([[-1.,  1.,  0.,  0.,  0.,  0.],
              [ 0.,  0.,  0., -1.,  1.,  0.]]),
       array([[-1.,  0.,  1.,  0.,  0.,  0.],
              [ 0.,  0.,  0., -1.,  0.,  1.]])]
 bs = [array([[  0],
              [  1.00000000e+01]]), 
       array([[ 20.],
              [ 10.]]), 
       array([[ -2.00000000e+01],
              [ 0]])]

仅为constraintsA运行代码,执行代码并按预期返回结果向量。但是,在考虑constraintsB设置时,我的结果为None。任何想法,我可能搞砸了吗?非常感谢!

0 个答案:

没有答案