#python #numpy #optimization #scipy #linear-programming
#python #numpy #оптимизация #scipy #линейное программирование
Вопрос:
Ограничения:
5×1 6×2 >= 95
18×1 — 9×2 >= 189
x1 x2 <= 45
x1, x2 >= 0
Максимизировать:
z = 15×1 15×2
Код:
import numpy as np
import scipy as sp
c = [-15,-15]
A = [[-5,-6], [-18,9],[1,1]]
b = [-95,-189,45]
x0_bounds = (0,None)
x1_bounds = (0,None)
from scipy.optimize import linprog
# Solve the problem by Simplex method in Optimization
res = linprog(c, A_ub=A, b_ub=b, bounds=(x0_bounds, x1_bounds), method='simplex', options={"disp": True})
print(res)
Это возвращает:
Максимум 675 случаев при x1 = 22, x2 = 23
Однако ответ — max = 675, встречающийся при (x1, x2) = (22,23) amp; (45,0)
Таким образом, он не возвращает второе значение для x1 и x2
Комментарии:
1. Все точки на
x1 x2 = 45
между(22,23)
и(45,0)
имеют одинаковый минимальный размер. Целевая функция имеет тот же наклон 1: 1, что и это ограничение.2. Решатели LP сообщают только об одной точке.