CVXPY: использование двух наборов ограничений различного формата возвращает None - PullRequest
0 голосов
/ 26 мая 2018

Я новичок в 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.Есть идеи, где я мог все испортить?Большое спасибо!

...