Я довольно новичок в Pyomo, но не в Python.
У меня следующая проблема:
import pyomo.environ as pyo
model = pyo.ConcreteModel()
model.A = pyo.Set(initialize=range(7))
model.B = pyo.Set(initialize=range(7))
model.AB = pyo.Set(initilize= list((a,b) for a in model.A for b in model.B)
model.X = pyo.Var(model.A, model.B, within=pyo.Binary)
model.objective = pyo.Objective(... maximize)
solver = pyo.SolverFactory('glpk')
result = solver.solve(model)
Далее я хочу обновить модель. Set () и, как следствие, изменить de model.AB Set и model.X Var, так что я может решить это снова. Например, я хочу установить:
model.B = pyo.Set(initialize=range(4)
Затем обновите model.AB, model.X и решите снова. Если сделать это вручную:
model.B = pyo.Set(initialize=range(4)
model.AB = pyo.Set(initilize= list((a,b) for a in model.A for b in model.B)
model.X = pyo.Var(model.A, model.B, within=pyo.Binary)
result = solver.solve(model)
То, что не работает, выдает следующую ошибку:
RuntimeError: Cannot add component 'X_index' (type <class 'pyomo.core.base.sets._SetProduct'>) to block 'unknown': a component by that name (type <class 'pyomo.core.base.sets._SetProduct'>) is already defined.