在Pyomo中使用[component] .value vs value([component])

时间:2017-06-26 14:56:29

标签: pyomo

我被告知value(x)比使用x.value更可取,但这会在尝试存储变量值时导致未初始化变量出现问题:

initial_vals = {id(v): value(v) for v in m.component_data_objects(ctype=Var)}

如果未初始化任何变量,则会导致ValueError被引发。这是x.value的可靠用例,还是使用value(x)建议的替代方案?

1 个答案:

答案 0 :(得分:1)

您可以将exception=False传递给value函数或__call__对象上的NumericValue方法。这将取消ValueError,只返回None

另一方面,如果您知道它是变量,那么使用.value属性绝对安全。 Params是唯一具有.value属性的其他对象(我知道),但索引Params的行为方式有很多变化,因此只使用value函数变得更好。