2017-04-21 5 views

Répondre

0

L'avantage d'utiliser Pyomo est qu'il s'agit d'un langage de modélisation indépendant du solveur sous-jacent utilisé pour résoudre le problème. Par exemple, vous pouvez écrire votre modèle, puis le résoudre avec glpk. En changeant une option de ligne de commande, vous pouvez résoudre le même modèle avec CPLEX, Gurobi, etc. Il offre de nombreuses fonctionnalités telles que la prise en charge de l'optimisation distribuée et vous permet d'utiliser votre propre solveur personnalisé (voir la documentation). Le CPLEX Python API est à l'autre extrémité du spectre. Ce n'est pas un langage de modélisation. C'est une couche relativement légère qui enveloppe le sous-jacente CPLEX Callable Library (API C). Les variables, contraintes, etc., sont référencées par index ou par nom. Cela vous permet de faire presque tout ce qui peut être fait dans la Callable Library. En ce sens, il vous donne le plus accès à la fonctionnalité CPLEX (même des fonctionnalités avancées comme les rappels).

Une option située quelque part au milieu est DOCplex. DOCplex est un langage de modélisation open source fourni par IBM et il vous permet de résoudre sur le cloud ou localement. Il supporte CPLEX pour la programmation mathématique, mais aussi CP Optimizer pour la programmation par contraintes.

+0

Merci rkersh! Savez-vous comment pyomo se compare aux gams en termes d'accès à la fonctionnalité CPLEX? Par exemple, sous gams, vous pouvez arrêter le brach et l'algorithme lié chaque fois qu'une nouvelle solution est trouvée. Cela peut-il aussi être fait sous pyomo? – Salva

+0

Je doute que. [Voici quelques indications] (https://groups.google.com/forum/#!topic/pyomo-forum/lJTUjlAjw3s), bien qu'il s'agisse de l'autre grand solveur commercial. C'est également quelque chose qui n'est pas commun dans les langages d'optimisation de haut niveau, en particulier ceux qui sont open-source. Le seul que je connaisse est [JuMP] (https://jump.readthedocs.io/en/latest/). Mais ce n'est pas python évidemment. – sascha