可选输入数据
Optional input data
对于问题的表述
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
静音?该模型已完全指定。另一个模型需要 "excess" 数据(在本例中为参数 q),并且模型共享此 input.dat。我可以为 AttributeError
使用 try/except 并继续我猜,但是我需要保护每个 create_instance
调用。我在文档中寻找 "skip_undefined" kwarg 或类似的东西。有没有其他首选方法来处理这种情况?
根据文档,如果您使用 load
方法从 class 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)
对于问题的表述
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
静音?该模型已完全指定。另一个模型需要 "excess" 数据(在本例中为参数 q),并且模型共享此 input.dat。我可以为 AttributeError
使用 try/except 并继续我猜,但是我需要保护每个 create_instance
调用。我在文档中寻找 "skip_undefined" kwarg 或类似的东西。有没有其他首选方法来处理这种情况?
根据文档,如果您使用 load
方法从 class 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)