2017-04-06 1 views
0

L'invocation de solveur Pyomo peut être obtenue par l'utilisation d'une ligne de commande ou à partir d'un script Python.Option de résumé SolverFactory.solve

Comment l'appel en ligne de commande avec le drapeau résumé

pyomo solve model.py input.dat --solver=glpk --summary 

se traduire par exemple l'utilisation d'une classe SolverFactory dans un script Python?

Spécifiquement, dans l'exemple suivant, comment peut-on spécifier une option de résumé? Est-ce un argument (non documenté?) À SolverFactory.solve?

from pyomo.opt import SolverFactory 
import pyomo.environ 

from model import model 

opt = SolverFactory('glpk') 

instance = model.create_instance('input.dat') 

results = opt.solve(instance) 

Répondre

1

L'option --summary est spécifique à la commande pyomo. Ce n'est pas une option de solveur. Je crois que tout ce qu'il fait est vraiment exécuter la ligne

pyomo.environ.display(instance) 

après le résoudre, que vous pouvez facilement ajouter à votre script. Une manière plus directe d'interroger la solution consiste simplement à accéder à la valeur des variables du modèle ou de l'objectif en les «évaluant». Par exemple,

instance.some_objective() 
instance.some_variable() 
instance.some_indexed_variable[0]() 

ou

pyomo.environ.value(instance.some_objective) 
pyomo.environ.value(instance.some_variable) 
pyomo.environ.value(instance.some_indexed_variable) 

Je préfère le premier, mais celui-ci est plus approprié si vous accédez aux valeurs des objets immuables, indexés Param. Notez également que les variables ont un attribut .value auquel vous pouvez accéder directement (et que vous souhaitez mettre à jour si vous souhaitez fournir un démarrage à chaud).