2017-03-13 2 views

Répondre

3

Si vous voulez définir la valeur d'une variable lorsque vous la déclarez, vous pouvez utiliser le mot-clé initialize . Par exemple,

model.x = Var(initialize=1.0) 

Alternativement, vous pouvez définir à tout moment l'attribut .value sur une variable avant la résoudre. Si vous commencez avec un AbstractModel, assurez-vous de ne le faire que sur l'instance renvoyée par la méthode create_instance. Voici un exemple en utilisant un ConcreteModel:

model = ConcreteModel() 
model.x = Var() 
model.X = Var([1,2,3]) 

model.x.value = 5.0 
model.X[1].value = 1.0 

L'interface de fichier NL contient toujours la valeur actuelle de toutes les variables du modèle dans le fichier d'entrée de solveur. Pour les autres interfaces (par exemple, l'interface de fichier LP), l'ajout du mot-clé warmstart=True à la méthode solve va créer un fichier warmstart qui inclut des valeurs de variables binaires ou entières pour un point de démarrage MIP.

Pour définir une solution double, vous devez déclarer un Suffix sur votre modèle avec le nom dual. Notez que la seule interface qui prend actuellement en charge l'exportation des informations de suffixe est l'interface de fichier NL (solveurs qui fonctionnent avec AMPL). Cependant, la plupart des interfaces prennent en charge l'importation des informations de suffixe à partir du solveur (dual en particulier). Réglage de la double valeur d'une contrainte particulière pourrait ressembler à:

model = ConcreteModel() 
model.dual = Suffix(direction=Suffix.IMPORT_EXPORT) 
model.c = Constraint(...) 
model.dual[model.c] = 1.0 

Plus d'informations sur le composant Suffix se trouve dans la ligne documentation pour Pyomo.