2011-04-26 1 views
21

Une recherche rapide sur "Programmation linéaire python" génère beaucoup de résultats (par exemple, this one). En regardant à travers elles, je vois a fair number of complaints sur les dépendances obsolètes, la mauvaise documentation, etc.Quelles bibliothèques dois-je utiliser pour la programmation linéaire en python?

Quelqu'un peut-il recommander une bibliothèque de programmation linéaire sans maux de tête (par exemple, rapide, bien documentée, facile à installer, propre API) pour Python?

+0

Voici un peu plus ... http://www.scipy.org/Topical_Software – dfb

Répondre

8

Je recommande regarder et/ou Pyomo.

+1

Sont-ils appropriés pour les grandes instances, disons au moins hundereds de variables et des milliers de contraintes. –

+0

Bonne question. Je ne suis pas sûr de savoir comment PULP et Pyomo évoluent pour de gros problèmes. Cependant, je peux dire que la plupart de mes amis qui font d'énormes problèmes d'optimisation (principalement pour les circuits intégrés) utilisent IBM CPLEX comme solutionneur d'optimisation. Basé sur une recherche google rapide, il y a une API CPLEX pour Python. Cependant, CPLEX n'est pas gratuit pour un usage non académique. – solvingPuzzles

+0

... Je viens de vérifier votre profil stackexchange, Andreas, et on dirait que vous êtes un étudiant diplômé. Vous pouvez obtenir une licence CPLEX gratuite. :) – solvingPuzzles

2

Je ne sais pas ce que vous essayez spécifiquement de faire, mais NumPy/SciPy sont généralement les premiers endroits où trouver tout ce qui est mathématique en Python.

+0

Numpy est une bibliothèque de tableaux, avec quelques fonctionnalités supplémentaires lancées pour la rétrocompatibilité. Scipy a quelques routines d'optimisation, mais pour le moment je pense que ce n'est que des solveurs non-linéaires. Scipy n'a actuellement pas de solveur spécialisé pour les programmes linéaires. – cjordan1

5

cvxopt est écrit par Lieven Vandenberghe et certains de ses collaborateurs. (Ceci est le même Vandenberghe du manuel d'optimisation convexe largement utilisé par Boyd et Vandenberghe.) C'est un solveur de programmation conique général convexe, et utilise une méthode de point intérieur. Sur le plan positif, il est bien documenté, a de nombreux exemples, et est facile à utiliser. Je crois que cela évolue assez bien, mais pas aussi bien que les produits commerciaux comme Xpress, Gurobi ou cplex.

On dirait qu'il y a une requête pull à scipy contenant une implémentation de programmation linéaire (pure python), cependant. Donc, un solveur de programmation linéaire pourrait être dans scipy à l'avenir.

+0

Pour l'enregistrement, voici ce PR https://github.com/scipy/scipy/pull/218 – astrojuanlu

1

Vous pouvez également jeter un oeil à or-tools, qui comprend une enveloppe autour des solveurs linéaires largement utilisés tels que GLPK.

1

Depuis 2015, scipy inclut une méthode pour résoudre les modèles de programmation linéaire directement par scipy.optimize.linprog. Il utilise l'algorithme Simplex.

Questions connexes