Python Programmation Linéaire Mixte D'Entiers

y a-t-il un solveur mixte de programmation linéaire(MILP) pour Python?

est-ce que GLPK python peut résoudre le problème MILP? J'ai lu qu'il peut résoudre le problème des entiers mixtes.

Je suis très nouveau au problème de programmation linéaire. Donc je suis plutôt confus et ne peux pas vraiment différencier si la programmation mixte entière est différente de la programmation mixte linéaire entière(MILP).

52
demandé sur asun 2014-10-10 22:22:08

1 réponses

Pulp est une interface de modélisation python qui se branche à des solveurs comme CBC (open source), CPLEX (commercial), Gurobi (commercial), Xpress-MP (commercial) et YALMIP 151960920 " (ouvert) source.)

vous pouvez également utiliser Pyomo pour modéliser le problème d'optimisation et ensuite appeler un solveur externe, à savoir CPLEX, Gurobim GLPK et la bibliothèque de solveur AMPL.

vous pouvez aussi appeler GLPK de GLPK / Python , PyGLPK ou PyMathProg .

encore un autre langage de modélisation est CMPL , qui a une interface python pour les solveurs MIP (pour les programmes linéaires seulement).

tous les solveurs ci-dessus résoudre mixte entier linéaire programmes , tandis que certains d'entre eux (CPLEX, GUROBI et XRESS-MP pour sûr) peut résoudre mixte entier quadratique programmes et Quadratiquement contrainte quadratique programmes (et également conique programmes, mais c'est probablement ce qui va au-delà de la portée de cette question).

MIP se réfère à des programmes mixtes entiers, mais il est couramment utilisé pour se référer à des programmes linéaires seulement. Pour rendre la terminologie plus précise, on devrait toujours se référer à MILP ou MINLP (Mixed integer non-linear programming).

notez que CPLEX et GUROBI ont aussi leur propre APIs python, mais ils (et aussi) XPRESS-MP sont des produits commerciaux, mais gratuits pour la recherche universitaire. cylindrique est similaire à la pâte ci-dessus, mais est en interface avec les solveurs de pièces de monnaie CBC et CGL et CLP.

noter que Il ya une grande différence dans la performance des solveurs commerciaux et libres : les derniers sont en baisse derrière le premier d'une large marge. PESC est peut-être le meilleur non-commercial solveur (voir ci-dessous pour une mise à jour). Son interface python, PySCIPOpt, est ici .

aussi, jeter un oeil à cette question ainsi .

enfin, si vous êtes intéressé par un simple résolveur de contraintes (pas optimisation), jetez un oeil à Python-constraint .

J'espère que cela aide!

MISES à jour

plus de solveurs et d'interfaces python qui sont tombés dans mon radar:

MIPCL , qui semble être l'un des plus rapides le plus rapide non-commercial MIP solver, a un Python interface qui a tout à fait bonne documentation . Notez cependant que L'API Python ne ne pas inclure la fonctionnalité avancée qui vient avec le natif MIPCLShell . J'aime particulièrement le MIPCL-PY manuel , qui montre un éventail de modèles utilisés dans la gestion des opérations, en plus de quelques mises en œuvre à petite échelle. Il s'agit d'un manuel d'introduction très intéressant en soi, quel que soit le solveur/API à utiliser.

Outils D'Optimisation Google , qui comprennent une multitude de fonctionnalités, telles que

  • Un solveur de programmation par contraintes et programmation linéaire ( "1519790920 pas" MIP ) solveur
  • an interface for MIP solvers (supports CBC, CLP, GLOP, GLPK, Gurobi, CPLEX, and SCIP)
  • algorithmes spécialisés pour les graphiques, pour le problème du vendeur ambulant, Le Problème de L'acheminement du véhicule et pour L'emballage Bin et Sac À Dos les problèmes de

Il dispose d'une vaste documentation de plusieurs traditionnels ou des problèmes et des mises en œuvre simples. Je n'ai pas pu trouver une documentation complète de L'API Python, bien qu'il existe quelques exemples ici . Je ne sais pas très bien comment d'autres solveurs se raccordent sur l'interface et si les méthodes de ces solveurs sont disponibles.

CVXOPT , un paquet open-source pour convex optimisation, qui se connecte à GLPK (open source) et MOSEK (commercial.) Il est polyvalent, car il peut s'attaquer à de nombreuses classes de problèmes (notamment linéaire, de deuxième ordre, semidefinite, convexe non linéaire). Le seul inconvénient est que la modélisation informatique de problèmes complexes peut être lourde, car l'utilisateur doit passer les données D'une manière "mathématique" (c'est-à-dire pour spécifier la matrice, les vecteurs rhs, etc). Cependant, il peut être appelé à partir des interfaces de modélisation PICOS et...

CVXPY , un langage d'optimisation intégré à python pour les problèmes d'optimisation convex, qui contient CVXOPT comme un solveur par défaut, mais il peut se raccorder à les solveurs habituels de MIP .

merci à RedPanda pour avoir souligné que CVXOPT/CVXPY support MIP solvers ainsi.

pour un article très complet sur la modélisation de l'optimisation capacités des paquets et des langages orientés objet (non limité à Python), cochez cet article .

87
répondu Ioannis 2018-04-02 10:27:54