2011-04-26 19 views
21

Una búsqueda rápida en "programación lineal de python" arroja muchos resultados (por ejemplo, this one). Al examinarlos, veo a fair number of complaints sobre dependencias desactualizadas, documentación deficiente, etc.¿Qué bibliotecas debo usar para la programación lineal en python?

¿Alguien puede recomendar una biblioteca de programación lineal sin dolor de cabeza (por ejemplo, rápida, bien documentada, fácil de instalar, API limpia) para python?

+0

aquí hay algunos más ... http://www.scipy.org/Topical_Software – dfb

Respuesta

8

yo recomiendo mirar y/o Pyomo.

+1

Son adecuados para grandes instancias, digamos al menos cientos de variables y miles de restricciones. –

+0

Buena pregunta. No estoy seguro de cómo PULP y Pyomo escalan para problemas grandes. Sin embargo, puedo decir que la mayoría de mis amigos que hacen grandes problemas de optimización (principalmente para diseños de circuitos integrados) utilizan IBM CPLEX como su solucionador de optimización. Basado en una búsqueda rápida en Google, hay una API CPLEX para Python. Sin embargo, CPLEX no es gratuito para uso no académico. – solvingPuzzles

+0

... Acabo de revisar su perfil de stackexchange, Andreas, y parece que eres un estudiante graduado. Puede obtener una licencia de CPLEX gratis. :) – solvingPuzzles

2

No sé lo que está tratando específicamente de hacer, pero NumPy/SciPy son los primeros lugares para buscar cualquier cosa relacionada con las matemáticas en Python.

+0

Numpy es una biblioteca de arreglos, con algunas funcionalidades extra lanzadas para compatibilidad con versiones anteriores. Scipy tiene algunas rutinas de optimización, pero a partir de ahora creo que son solo solucionadores generales no lineales. Scipy actualmente no tiene un solucionador especializado para programas lineales. – cjordan1

5

cvxopt ha sido escrito por Lieven Vandenberghe y algunos de sus colaboradores. (Este es el mismo Vandenberghe del ampliamente usado libro de texto de optimización convexa de Boyd y Vandenberghe.) Es un solucionador de programación cónica convexo general, y utiliza un método de punto interior. En el lado positivo, está bien documentado, tiene muchos ejemplos y es fácil de usar. Creo que se escala bastante bien, aunque no tan bien como productos comerciales como Xpress, Gurobi o cplex.

Parece que hay una solicitud de extracción para scipy que contiene una implementación de programación lineal (python puro). Por lo tanto, un solucionador de programación lineal podría ser impreciso en el futuro.

+0

Para el registro, aquí está ese PR https://github.com/scipy/scipy/pull/218 – astrojuanlu

1

También puede consultar or-tools, que incluye un envoltorio de solucionadores lineales ampliamente utilizados como GLPK.

1

A partir de 2015, scipy incluye un método para resolver modelos de programación lineal directamente a través de scipy.optimize.linprog. Utiliza el algoritmo Simplex.

Cuestiones relacionadas