Pyomo 中 [component].value 与 value([component]) 的使用

Use of [component].value vs value([component]) in 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) 的建议替代方案?

您可以将 exception=False 传递给 value 函数或 NumericValue 对象上的 __call__ 方法。这将抑制 ValueError 和 return None.

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