TypeError: Неверный ввод для linprog: A_ub должен быть числовым двумерным массивом, где каждая строка представляет ограничение неравенства верхней границы - PullRequest
0 голосов
/ 10 ноября 2018

Я делаю линейную оптимизацию, используя метод внутренней точки. Мой код оптимизации выглядит как

z=scipy.optimize.linprog(c, A_ub, b_ub, bounds=bounds,method='interior-point',
                         options = {"maxiter":10000})

У меня 34K данных. Проверил форму A_ub с помощью кода ниже

A_ub.shape
Out[7]: (37439, 74878)

Изначально тот же код выполнялся для данных 8K, но теперь выдает ошибку

TypeError: Invalid input for linprog: A_ub must be a numerical 2D array with each row representing an upper bound inequality constraint

Можете ли вы помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 10 ноября 2018

Я нашел этот пример из старого кода

from scipy import optimize
    optimize.linprog(
...     c = [1, 3], 
...     A_ub=[[1, 1]], 
...     b_ub=[4],
...     bounds=(1, 6),
...     method='interior-point'
... )
     con: array([], dtype=float64)
     fun: 4.00000000831602
 message: 'Optimization terminated successfully.'
     nit: 4
   slack: array([2.])
  status: 0
 success: True
       x: array([1., 1.])

Конечно, вы можете использовать простой или любой другой метод. Может быть, вам стоит проверить память, вы имеете дело с большими массивами.

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