2017-03-06 3 views
0

Je dois vérifier si l'index d'une variable existe, en appelant une initialisation Constraint et s'il n'existe pas, je veux définir la valeur de la variable à 0. Dans un dictionnaire python peut le faire avec quelque chose comme ça: dict.get ('not-a-key', 0). Y at-il quelque chose de similaire pour les objets Pyomo?Similaire à l'attribut .get() pour IndexedParam ou IndexedVar

Répondre

0

Nous n'avons pas ajouté cette méthode car on pourrait s'attendre à l'utiliser pour renvoyer une nouvelle variable (qui ne serait pas détenue par le conteneur, car la méthode get ne modifie pas un dictionnaire). Peut-être que quelque chose comme la méthode setdefault aurait plus de sens ici, mais ce n'est pas quelque chose qui est actuellement intégré dans l'interface de modélisation.

Une fonctionnalité que vous pourriez utiliser est que Pyomo construira implicitement un nouvel objet variable à un index particulier si cet index a été ajouté à l'ensemble d'indexation de la variable après la déclaration initiale. Exemple:

model = ConcreteModel() 
model.x_index = Set(initialize=[1]) 
model.x = Var(model.x_index) 
model.x[1] # OK 
model.x[2] # KeyError 
model.x_index.add(2) 
model.x[2] # OK (implicitly creates this object on the fly)  
+0

Merci beaucoup.J'ai résolu ce problème en créant un dictionnaire avec les valeurs de la variable, puis en utilisant cela dans ma fonction. – iriniapid