用于问题表达
import pyomo.environ as pe
model = pe.AbstractModel()
model.I = pe.Set()
model.p = model.Param(model.I)
model.create_instance("input.dat")
和input.dat
set I := 1 2 3 ;
param p :=
1 0.1
2 0.2
3 0.3
;
param q :=
1 1.1
2 2.2
3 3.3
;
显示以下错误
AttributeError: 'AbstractModel' object has no attribute 'q'
在这种情况下如何使create_instance
静音?型号已完全指定。另一个模型需要“过量”数据(在这种情况下为参数q),并且模型共享此input.dat。我可以尝试使用AttributeError
之外的try / except,然后继续进行下去,但是接下来我需要保护每个create_instance
的调用。我在文档中寻找了“ skip_undefined” kwarg或类似内容。还有另一种首选的方式来处理这种情况吗?
答案 0 :(得分:1)
根据文档,如果您使用类load
中的方法DataPortal
加载数据,则会忽略模型未使用的参数。
因此您可以尝试:
from pyomo.environ import *
data = DataPortal()
model = AbstractModel()
data.load(filename='./input.dat')
model.I = Set()
model.p = model.Param(model.I)
instance = model.create_instance(data)