линейное программирование на python?
Мне нужно сделать модель линейного программирования. Вот неравенства, которые я использую (например):
6x + 4y <= 24
x + 2y <= 6
-x + y <= 1
y <= 2
Мне нужно найти область, описанную этими неравенствами, и затенить ее на графике, а также отслеживать вершины ограничивающих линий этой области и рисовать ограничивающую линию в другом цвете. Смотрите график ниже для примера того, что я ищу.
.
Я использую Python 3.2, numpy и matplotlib. Быть там лучше модули линейного программирования в Python?
7 ответов
обновление: ответ несколько устарел за последние 4 года, вот обновление. У вас есть много вариантов:
Если вы не обязательно сделайте это Python, тогда это намного проще сделайте это в моделирование langage см. любые хорошие инструменты для решения целочисленные программы в linux?
Я лично использую Gurobi эти дни через свой API Python. Это коммерческий, закрытый источник продукт, но бесплатно для академических исследований.
SciPy предлагает линейное программирование:scipy.оптимизировать.linprog. (У меня есть никогда не пробовал.)
с массы вы можете создать MPS и LP файлы и затем разрешите их с GLPK, монеткой CLP / CBC, CPLEX, или XPRESS через их интерфейс командной строки. Этот подход имеет свои преимущества и ущерб.
видимо, CVXOPT предлагает интерфейс Python для GLPK, я сделал не знаю. Я использую GLPK на 8 лет теперь и я могу очень рекомендую GLPK. The примеры и учебник CVXOPT очень милые!
вы можете найти другие возможности в Wikibook под GLPK / Python. Обратите внимание, что многие из них не обязательно д в ГЛПК.
единственный раз, когда граф используется для решения линейной программы для задания. Во всех остальных случаях задачи линейного программирования решаются через матричную линейную алгебру.
Что касается Python, хотя есть некоторые библиотеки pure-Python, большинство людей используют собственную библиотеку с привязками Python. Существует множество бесплатных и коммерческих библиотек для линейного программирования. Подробный список см. В разделе Линейное Программирование в Википедии или линейный Программирование Программного Обеспечения in или / MS сегодня.
отказ от ответственности: в настоящее время я работаю для оптимизации Gurobi и ранее работал в ILOG, который предоставил CPLEX.
для решения задачи линейного программирования, вы можете использовать scipy.оптимизировать.linprog модуль в SciPy, который использует Симплексный алгоритм.
другие ответы сделали хорошую работу, предоставляя список решателей. Однако в качестве библиотеки Python для разработки моделей LP упоминается только PuLP.
еще один отличный вариант-это Pyomo. Как и PuLP, вы можете отправить проблему любому решателю и прочитать решение обратно в Python. Вы также можете управлять параметрами решателя. Мы с одноклассником сравнили производительность PuLP и Pyomo в 2015 году, и мы обнаружили, что Pyomo может генерировать .LP файлы для того же проблема в несколько раз быстрее, чем пульпа.
Я бы рекомендовал использовать массы пакет python. Он имеет приятный интерфейс, и вы можете использовать различные типы алгоритмов для решения LP.
lpsolve является самым простым для меня. Нет необходимости устанавливать отдельный решатель. Он входит в пакет.