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
函数。
我被告知 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
函数。