Python Смешанное Целочисленное Линейное Программирование


существуют ли какие-либо смешанные целочисленные линейные программы(MILP) для Python?

может ли glpk python решить проблему MILP? Я читал, что он может решить проблему смешанное число.
Я очень новичок в задаче линейного программирования. Поэтому я довольно смущен и не могу действительно дифференцировать, если смешанное целочисленное программирование отличается от смешанного целочисленного линейного программирования(MILP).

1 52

1 ответ:

массы это интерфейс моделирования python, который подключается к решателям, таким как CBC(С открытым исходным кодом),CPLEX (торговое), Gurobi(торговое), XPRESS-MP(коммерческих) и YALMIP(открытым исходным кодом).

вы также можете использовать Pyomo для моделирования задачи оптимизации и последующего вызова внешний решатель, а именно CPLEX, Gurobim GLPK и библиотека решателей AMPL.

вы также можете позвонить в GLPK из GLPK / Python, PyGLPK или PyMathProg.

еще один язык моделирования CMPL, который имеет интерфейс python для решателей MIP (только для линейных программ).

все вышеперечисленные решатели решают Смешанное Целое Число линейный - программы, в то время как некоторые из них (CPLEX, GUROBI и XRESS-MP наверняка) могут решить Смешанное Целое Число квадратичная - программы и квадратично ограниченные квадратичные программы (а также конические программы, но это наверное выходит за рамки этого вопроса).

MIP относится к смешанным целочисленным программам, но обычно используется только для линейных программ. Чтобы сделать терминологию более точной, нужно всегда см. MILP или MINLP (смешанное целочисленное нелинейное Программирование).

CyLP похож на пульпу выше, но взаимодействует с монетами или решателями CBC и CGL и CLP.

отметим, что существует большая разница в производительности коммерческих и бесплатных решателей: последний отставание от первого с большим отрывом. SCIP и пожалуй, лучший некоммерческий решатель (см. ниже для обновления). Его интерфейс python, PySCIPOpt, является здесь.

кроме того, посмотрите на это так вопрос.

наконец, если вас интересует простой решатель ограничений (не оптимизация) , то посмотрите python-ограничение.

надеюсь, это поможет!

обновления

больше решателей и интерфейсов python, которые попали в мой радар:

MIPCL, которая, по-видимому один из самых быстрых самый быстрый некоммерческий решатель MIP, имеет интерфейс python, у хорошая документация. Обратите внимание, однако, что API Python не включает расширенная функциональность, которая поставляется вместе с родной MIPCLShell. Мне особенно нравится MIPCL-пы инструкцию, который демонстрирует множество моделей, используемых в управлении операциями, поверх некоторых мелких реализаций. Это очень интересное вводное руководство само по себе, независимо от того, какой решатель/API можно использовать.

Инструменты Оптимизации Google, которые включают в себя множество функций, например,

  • решатель программирования ограничений и линейное программирование (не МИП) решатель
  • интерфейс для решателей MIP (поддерживает CBC, CLP, GLOP, GLPK, Gurobi, CPLEX и SCIP)
  • специализированные алгоритмы для графиков, для задачи коммивояжера, задачи маршрутизации транспортного средства и для задач упаковки и рюкзака бункера

Он имеет обширную документацию нескольких традиционных или проблем и простая реализация. Я не смог найти полную документацию по API Python, хотя существуют некоторые примеры здесь. Мне несколько непонятно, как другие решатели подключаются к интерфейсу и доступны ли методы этих решателей.

CVXOPT, пакет с открытым исходным кодом для выпуклой оптимизации, который взаимодействует с GLPK (open source) и MOSEK (коммерческий.) Он универсален, так как может решать многие классы проблем (в частности линейный, второго порядка, полуопределенный, выпуклый нелинейный). Единственным недостатком является то, что моделирование сложных задач может быть громоздким, так как пользователю необходимо передать данные в режиме "Matlab-y" (т. е. указать матрицу, векторы rhs и т. д.). Однако его можно вызвать из интерфейсов моделирования Пикос и...

CVXPY, встроенный в python язык оптимизации для задач выпуклой оптимизации, который содержит CVXOPT Как решатель по умолчанию, но это можно подключить до обычные MIP решатели.

спасибо RedPanda за то, что указал на это CVXOPT/CVXPY поддержка MIP решателей, а также.

для очень полной статьи о возможностях оптимизации моделирования пакетов и объектно-ориентированных языков (не ограничиваясь Python), проверьте в этой статье.