可选输入数据

时间:2018-11-21 17:57:34

标签: pyomo

用于问题表达

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或类似内容。还有另一种首选的方式来处理这种情况吗?

1 个答案:

答案 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)