访问 constraints/objective
Accessing constraints/objective
我正在使用内部调用 Pyomo 的工具箱来解决优化问题。我有兴趣访问它构建的 Pyomo 模型,以便我可以修改 constraints/objective。所以我的问题是,假设我得到以下输出:
问题:
姓名:未知
下限:6250.0
上限:6250.0
物镜数量:1
约束数:11
变量数:8
非零数:17
意义:最小化
求解器:
状态:正常
终止条件:最优
统计数据:
分支定界:
有界子问题数:0
创建的子问题数:0
错误 rc: 0
时间:0.015599727630615234
解决方案:
解数:0
显示的解决方案数量:0
所以这个问题很有效,我得到了解决方案,建模也是通过另一个在内部完成的。是否可以访问 constraints/objective 以便我可以自由修改 Pyomo 语法中的优化模型?
我尝试调用模型并得到如下信息:
<pyomo.core.base.PyomoModel.ConcreteModel at xxxxxxx>
听起来 network.model
是 Pyomo 模型,是的,如果您可以访问它,您可以修改它。尝试使用 pprint()
方法打印模型或单个模型组件:
network.model.pprint()
network.model.con1.pprint()
或者您可以遍历模型中特定类型的组件:
for c in network.model.component_objects(Constraint):
print(c) # Prints the name of every constraint on the model
修改 objective 最简单的方法是找到现有的,停用它,然后添加一个新的
network.model.obj.deactivate()
network.model.new_obj = Objective(expr=network.model.x**2)
有一些方法可以就地修改 constraints/objectives,但没有详细记录。我建议使用 Python 的 dir()
函数并试用一些组件属性和方法以了解它们的工作原理。
dir(network.model.obj)
我正在使用内部调用 Pyomo 的工具箱来解决优化问题。我有兴趣访问它构建的 Pyomo 模型,以便我可以修改 constraints/objective。所以我的问题是,假设我得到以下输出:
问题:
姓名:未知 下限:6250.0 上限:6250.0 物镜数量:1 约束数:11 变量数:8 非零数:17 意义:最小化
求解器:
状态:正常 终止条件:最优 统计数据: 分支定界: 有界子问题数:0 创建的子问题数:0 错误 rc: 0 时间:0.015599727630615234
解决方案:
解数:0 显示的解决方案数量:0
所以这个问题很有效,我得到了解决方案,建模也是通过另一个在内部完成的。是否可以访问 constraints/objective 以便我可以自由修改 Pyomo 语法中的优化模型?
我尝试调用模型并得到如下信息:
<pyomo.core.base.PyomoModel.ConcreteModel at xxxxxxx>
听起来 network.model
是 Pyomo 模型,是的,如果您可以访问它,您可以修改它。尝试使用 pprint()
方法打印模型或单个模型组件:
network.model.pprint()
network.model.con1.pprint()
或者您可以遍历模型中特定类型的组件:
for c in network.model.component_objects(Constraint):
print(c) # Prints the name of every constraint on the model
修改 objective 最简单的方法是找到现有的,停用它,然后添加一个新的
network.model.obj.deactivate()
network.model.new_obj = Objective(expr=network.model.x**2)
有一些方法可以就地修改 constraints/objectives,但没有详细记录。我建议使用 Python 的 dir()
函数并试用一些组件属性和方法以了解它们的工作原理。
dir(network.model.obj)