可选输入数据

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)