Это означает, что вы пытаетесь получить доступ к индексу массива, который недопустим, поскольку он не находится между границами.
Например, это инициализировало бы примитивный целочисленный массив с верхней границей 4 .
int intArray[] = new int[5];
Программисты подсчитываются с нуля. Таким образом, это, например, выбрало бы ArrayIndexOutOfBoundsException
, поскольку верхняя граница равна 4, а не 5.
intArray[5];
Я проверил систему, и решения действительно возможны. После прочтения этого поста кажется, что в linprog
есть проблемы с плавающей запятой, явно проблема метода. Кажется, что прохождение method='interior-point'
улучшает алгоритм.
Это сработало для меня в обоих случаях
Дело 1:
res = linprog(c, A_eq=A, b_eq=b, method='interior-point')
print('Optimal value:', res.fun, '\nX:', res.x)
>> Optimal value: 64090.8624935836
X: [4.90908724e+02 1.50821194e-05 3.45454303e+02 7.63635788e+02]
Дело 2:
res = linprog(c, A_ub, b_ub, A_eq, b_eq, bounds=(0, None), method='interior-point')
print('Optimal value:', res.fun, '\nX:', res.x)
#output:
>> Optimal value: 449999.99988966336
X: [ 377.22836393 748.5144238 1874.25721154]