Je travaille sur un projet qui nécessite que je code avec une librairie python. appelé pyomo.Valeur de réglage d'une variable indexée à une expression indexée - pyomo
et j'ai besoin de définir la valeur d'une variable indexée à une expression indexée.
Il y a donc 2 modèles au total et 1 script qui crée leurs instances.
premier modèle:
m.i = [1,2,3] # i=1,2,3
m.j = [1,2,3] # j=1,2,3
m.index = Set(within=m.i*m.j) # m.index = [i]*[j] (pyomo set)
m.a = Var(m.index) # m.a[i,j]
m.Exp = Expression(m.index) # pyomo expression with [i,j] index
m.Const = Constraint(m.index, rule=const_rule)
def const_rule(m, index):
return m.a[index] == m.Exp[index]
Deuxième modèle:
m.index = ... # same index with first model's m.index
m.y = Var(m.index) # lets assume it has values or I can put with init command
le script run.py:
instance1 = create_first_model()
instance2 = create_second model()
solve(instance2)
for k in instance1.index:
instance1.Exp[k].expr = instance2.y[k].value
solve(instance1)
Peu de temps:
je besoin d'une meilleure approche pour cette pour-boucle. ou approche plus efficaces (les boucles sont lentes ...)
Cordialement Okan
Ps: tous les vars, ensembles, l'expression et la contrainte sont des objets pyomo.
Je l'utilise comme paramètre mutuel, mais je ne l'ai pas codé comme ça parce que sinon le solveur ne donne aucune variable double de cette contrainte. – Icedkk
Aussi, si je mets _linking_con à l'intérieur d'un modèle, ils ne fonctionneront pas parce que les instances ne sont pas créées avant d'appeler les modèles et donc il donnera une erreur en appelant des modèles qui seront comme instance2.y [k] n'existe pas. – Icedkk
Vous pouvez ajouter la contrainte après la construction des deux modèles –