python - 由 Param 定义的 Var 界限不会在 6.0.1 中更新
问题描述
我有一个 Var,其边界由可变参数定义。Param 在构造时有一个默认值,稍后会更新。在 Pyomo 5.7.3 版中,边界值已正确更新;但是在 6.0.1 版本中,绑定的值不会更新并保持默认值。似乎破坏 6.0.1 版本的是单位是否包含在 Var 和 Param 中。
这是一个简单的例子:
import pyomo.environ as pyomo
from pyomo.environ import units as u
model = pyomo.ConcreteModel()
model.avail_gen = pyomo.Param(within=pyomo.NonNegativeReals,
default=0,
mutable=True,
units=u.MW
)
model.generation = pyomo.Var(domain=pyomo.NonNegativeReals,
bounds=(0, model.avail_gen),
units=u.MW
)
model.avail_gen.set_value(10)
model.obj = pyomo.Objective(expr=model.generation, sense=pyomo.maximize)
solver = pyomo.SolverFactory('glpk')
results = solver.solve(model)
print(pyomo.value(model.obj))
由于 model.generation = 0 的界限,obj 值在 0 处不正确。但是,如果将 units=u.MW 行注释掉,则 obj 值在 10 处是正确的。5.7.3 不会发生这种情况.
我使用的单位不正确还是有错误?
解决方案
推荐阅读
- c# - 将奇数从数组复制到另一个数组
- laravel - 嵌套循环导致性能下降
- spagobi - 是否可以在 SpagoBI Server 5.2 中编辑数据源数据
- java - 我正在尝试使用 servlet 检索 BLOB 数据(图像)并在 html 页面中显示
- javascript - 检查浏览器和语言
- python - 带有 ValueError 形状的 while_loop 必须为 0 级,但对于 'while/LoopCond' 为 2 级
- ios - 游戏开发菜单
- mysql - MySQL Union 未按预期工作
- javascript - 如何映射包含一组数据和一个日期的json数据?
- sql - SQL 使用 LIKE %?% 搜索多个列