Комментарии 10
Вопрос по библиотеке в целом — не пробовали её использовать для целочисленных задач?
0
А почему бы не использовать cvxopt? Это, пожалуй, самый мощный пакет для выпуклой оптимизации.
0
Статья интересная. Я даже и не знал что scipy можно использовать для решения задач линейного программирования.
Пара непонятностей. Видится мне что ограничение 1 можно убрать (ибо оно выполняется автоматически при наличии ограничения 2). Ограничение 4 вовсе неясно, почему именно от нуля до одного? Может быть, просто больше нуля?
И почему ваша модель не учитывает возможность закрытия магазинов, коль такое упомянуто в задаче? Оно понятно что ILP всунуть не получится, но ведь можно решить ослабленную задачу и показать какой получается ответ. Ведь не факт что решение ILP даст те же выводы, что и ваше решение.
Пара непонятностей. Видится мне что ограничение 1 можно убрать (ибо оно выполняется автоматически при наличии ограничения 2). Ограничение 4 вовсе неясно, почему именно от нуля до одного? Может быть, просто больше нуля?
И почему ваша модель не учитывает возможность закрытия магазинов, коль такое упомянуто в задаче? Оно понятно что ILP всунуть не получится, но ведь можно решить ослабленную задачу и показать какой получается ответ. Ведь не факт что решение ILP даст те же выводы, что и ваше решение.
0
Из любопытства сделал ту же задачу на mip
с целочисленными (бинарными) constraints для условия закрытия магазинов. Параметры (расходы на магазин и выручку) изменил для меньшей тривиальности решения:
https://gist.github.com/xpl/f93af7ea2d2bd08fad2c45535433327d
Задание ограничений в mip
сделано удобнее чем в scipy
— через перегрузку операторов, так что не нужно мучаться с кодированием их в виде матриц:
for s in range (N_shops):
m += xsum (supplies_s[s]) <= float (max_demand[s]) * is_open[s]
for f in range (N_facts):
m += xsum (supplies_f[f]) == float (max_supply[f])
m.objective = (xsum (supplies[i] * c[i] for i in range (len (supplies))) -
xsum (is_open[i] * shop_rent_cost for i in range (N_shops)))
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Линейное программирование в python силами библиотеки scipy