Saltar al contenido

Python Programación lineal entera mixta

Amelia, parte de este equipo de trabajo, nos ha hecho el favor de redactar esta crónica ya que controla a la perfección el tema.

Solución:

Pulpa es una interfaz de modelado de Python que se conecta a solucionadores como CBC(fuente abierta), CPLEX (comercial), Gurobí(comercial), XPRESS-MP(comercial) y YALMIP(fuente abierta).

También puedes usar piomo para modelar el problema de optimización y luego llamar a un solucionador externo, a saber, CPLEX, Gurobi GLPK y la biblioteca de solucionador AMPL.

También puede llamar a GLPK desde GLPK/Python, PyGLPK o PyMathProg.

Otro lenguaje de modelado es CMPLque tiene una interfaz python para solucionadores MIP (solo para programas lineales).

Todos los solucionadores anteriores resuelven enteros mixtos Lineal Programas, mientras que algunos de ellos (CPLEX, GUROBI y XRESS-MP seguro) pueden resolver problemas de enteros mixtos. Cuadrático Programas y programas cuadráticos restringidos cuadráticamente (y también programas cónicos, pero esto probablemente va más allá del alcance de esta pregunta).

MIP se refiere a programas enteros mixtos, pero se usa comúnmente para referirse solo a programas lineales. Para hacer la terminología más precisa, siempre se debe hacer referencia a MILP o MINLP (programación no lineal de enteros mixtos).

Tenga en cuenta que CPLEX y GUROBI también tienen sus propias API de Python, pero (y también) XPRESS-MP son productos comerciales, pero gratuitos para la investigación académica. CyLP es similar a Pulp anterior pero interactúa con los solucionadores COIN-OR CBC, CGL y CLP.

Tenga en cuenta que hay una gran diferencia en el rendimiento de los solucionadores comerciales y gratuitos: estos últimos se están quedando atrás de los primeros por un amplio margen. SCIP es quizás el mejor solucionador no comercial (ver más abajo para una actualización). Su interfaz de python, PySCIPOpt, es aquí.

Además, eche un vistazo a esta pregunta SO.

Finalmente, si está interesado en un solucionador de restricciones simple (no en la optimización), eche un vistazo a restricción de python.

¡Espero que esto ayude!

ACTUALIZACIONES

Más solucionadores e interfaces de Python que cayeron en mi radar:

MIPCL, que parece ser uno de los mas rapidos el solucionador de MIP no comercial más rápido, tiene una interfaz de python que tiene una documentación bastante buena. Tenga en cuenta, sin embargo, que la API de Python no incluye la funcionalidad avanzada que viene junto con MIPCLSShell nativo. Me gusta especialmente el manual MIPCL-PY, que demuestra una array de modelos utilizados en Gestión de Operaciones, además de algunas implementaciones a pequeña escala. Es un manual introductorio muy interesante por derecho propio, independientemente del solucionador/API que uno desee utilizar.

Herramientas de optimización de Google, que incluyen multitud de funcionalidades, como

  • Un solucionador de programación de restricciones y una programación lineal (no MIP) solucionador
  • Una interfaz para solucionadores de MIP (compatible con CBC, CLP, GLOP, GLPK, Gurobi, CPLEX y SCIP)
  • Algoritmos especializados para gráficos, para el problema del viajante de comercio, el problema de enrutamiento de vehículos y para problemas de empaque de contenedores y mochilas

Tiene una extensa documentación de varios problemas OR tradicionales e implementaciones simples. No pude encontrar una documentación completa de la API de Python, aunque existen algunos ejemplos aquí. No me queda claro cómo se conectan otros solucionadores en la interfaz y si los métodos de estos solucionadores están disponibles.

CVXOPT, un paquete de código abierto para la optimización convexa, que interactúa con GLPK (código abierto) y MOSEK (comercial). Es versátil, ya que puede abordar muchas clases de problemas (en particular, lineal, de segundo orden, semidefinido, no lineal convexo). La única desventaja es que modelar problemas complejos puede ser engorroso, ya que el usuario necesita pasar los datos en una forma “Matlab-y” (es decir, para especificar la matriz, los vectores rhs, etc.). Sin embargo, se puede llamar desde las interfaces de modelado PICOS y…

CVXPY, un lenguaje de optimización integrado en Python para problemas de optimización convexa, que contiene CVXOPT como un solucionador predeterminado, pero puede conectarse a los solucionadores habituales de MIP.

Gracias a RedPanda por señalar que CVXOPT/CVXPY también es compatible con los solucionadores de MIP.

Para obtener un artículo muy completo sobre las capacidades de modelado de optimización de paquetes y lenguajes orientados a objetos (no restringido a Python), consulte este artículo.

He usado Gekko Python Package para resolver problemas de MILP. Puede resolver sus modelos localmente o en su servidor remoto.

GEKKO es un paquete de Python para el aprendizaje automático y la optimización de mixed-ecuaciones algebraicas enteras y diferenciales. Se combina con solucionadores a gran escala para lineal, cuadrático, no lineal y mixed programación entera (LP, QP, PNL, MILP, MINLP). Los modos de operación incluyen regresión de parámetros, reconciliación de datos, optimización en tiempo real, simulación dinámica y control predictivo no lineal. GEKKO es una biblioteca de Python orientada a objetos para facilitar la ejecución local de APMonitor.

Aquí tienes las reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *