访问约束/目标

时间:2018-07-17 12:28:17

标签: pyomo

我正在使用内部调用Pyomo的工具箱来解决优化问题。我对访问它构建的Pyomo模型感兴趣,因此可以修改约束/目标。所以我的问题是,假设我得到以下输出:

问题:

名称:未知 下限:6250.0 上限:6250.0 目标数量:1 约束数量:11 变量数:8 非零数目:17 感觉:最小化

求解器:

状态:确定 终止条件:最佳 统计:     分支定界:     有界子问题数:0     创建的子问题数量:0 错误rc:0 时间:0.015599727630615234

解决方案:

解决方案数:0 显示的解决方案数量:0

因此问题很好解决,我得到了解决方案,该建模也通过另一个内部完成。是否可以访问约束/目标,以便我可以自由地使用Pyomo语法修改优化模型?

我试图调用该模型,并得到如下所示: {{1}}

1 个答案:

答案 0 :(得分:1)

听起来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

修改目标的最简单方法是找到现有目标,将其停用并添加新目标

network.model.obj.deactivate()
network.model.new_obj = Objective(expr=network.model.x**2)

有很多方法可以修改约束/目标,但是它们没有充分的文档记录。我建议使用Python的dir()函数并尝试一些组件属性和方法,以了解它们的工作原理。

dir(network.model.obj)