J'essaie de créer un modèle abstrait dans Pyomo 5.1.1, puis de le remplir avec des valeurs dans python (c'est-à-dire sans utiliser les fichiers AMPL). Je suis fondamentalement en train de suivre le Pyomo documentation example, mais j'obtiens un "objectif constant détecté".instancier un modèle concret à partir d'un modèle pyomo abstrait
import pyomo.environ as oe
model = oe.AbstractModel()
model.I = oe.Set()
model.J = oe.Set()
model.a = oe.Param(model.I,model.J)
model.b = oe.Param(model.I)
model.c = oe.Param(model.J)
model.x = oe.Var(model.J,domain=oe.NonNegativeReals)
def obj_expression(model):
return oe.summation(model.c,model.x)
model.OBJ = oe.Objective(rule=obj_expression)
def ax_constraint_rule(model,i):
return sum(model.a[i,j]*model.x[j] for j in model.J) >= model.b[i]
model.AxbConstraint = oe.Constraint(model.I,rule=ax_constraint_rule)
Et puis, j'essaie d'initialiser ce modèle avec des valeurs réelles
aa = np.array([[1,2,1,4],[5,2,2,4]])
bb = np.array([2,4])
cc = np.array([1,2,4,2])
cmodel = model.create_instance()
cmodel.a.values = aa
cmodel.b.values = bb
cmodel.c.values = cc
opt = oe.SolverFactory("glpk")
results = opt.solve(cmodel)
Je reçois l'erreur suivante:
WARNING:pyomo.core:Constant objective detected, replacing with a placeholder to prevent solver failure. WARNING:pyomo.core:Empty constraint block written in LP format - solver may error WARNING: Constant objective detected, replacing with a placeholder to prevent solver failure. WARNING: Empty constraint block written in LP format - solver may error
De toute évidence, il y a quelque chose de mal dans la façon dont je suis initialisation cmodel
mais je ne trouve aucune documentation décrivant l'initialisation dans python.