Как получить массив результатов scipy.optimize.linprog? - PullRequest
0 голосов
/ 28 апреля 2020

Я использую scipy.optimize.linprog для решения проблем сетевого потока, и у меня есть результат. Но я не знаю, как получить результирующий массив, который отображается в виде x: array в результате. Мне нужно изменить этот массив, чтобы его было легче читать.

res = linprog(c=C, A_eq=A, b_eq=B)
print(res)

И вот результат:

    fun: 67538.0
 message: 'Optimization terminated successfully.'
     nit: 36
   slack: array([], dtype=float64)
  status: 0
 success: True
       x: array([    0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
           0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
           0.,     0.,     0.,     0.,     0.,     0.,  5415.,     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.,     0.,     0.,  7732.,     0.,     0.,
           0.,     0.,     0.,     0.,     0.,     0.,     0.,  4045.,
        3167.,     0.,  2420.,     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.,  3257.,     0.,
           0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
           0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
           0.,     0.,     0.,     0.,     0., 12230.,     0.,     0.,
        1574.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
           0., 13407.,  4708.,     0.,     0.,     0.,     0.,     0.,
           0.,     0.,     0.,     0.,  4601.,     0.,  4982.,     0.,
           0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
           0.])

Итак, я хочу знать, как получить массив x :. Я должен использовать ненулевые числа в этом массиве.

1 Ответ

0 голосов
/ 29 апреля 2020

Согласно документации scipy.optimize.linprog эта функция возвращает OptimizeResult , где x - одно из свойств (переменных экземпляра).

Вы можете обращаться к нему напрямую, как к любому другому свойству объекта в Python с использованием res.x обозначения.

Обратите внимание, что x - это массив NumPy, поэтому, особенно если ваш массив будет большим, вместо того, чтобы конвертировать в Python собственный список и удалять нули вручную, вы можете использовать nonzero_x = numpy.trim_zeros(res.x).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...