pyomo - 访问约束/目标
问题描述
我正在使用一个内部调用 Pyomo 的工具箱来解决优化问题。我有兴趣访问它构建的 Pyomo 模型,以便我可以修改约束/目标。所以我的问题是,假设我得到以下输出:
问题:
名称:未知 下限:6250.0 上限:6250.0 目标数:1 约束数:11 变量数:8 非零数:17 意义:最小化
求解器:
状态:好的终止条件:最佳统计信息:分支和边界:有界子问题的数量:0 创建的子问题的数量:0 错误 rc:0 时间:0.015599727630615234
解决方案:
解决方案数:0 显示的解决方案数:0
所以这个问题很好,我得到了一个解决方案,建模也是通过另一个内部完成的。是否可以访问约束/目标,以便我可以自由修改 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
修改目标的最简单方法是找到现有目标,将其停用,然后添加一个新目标
network.model.obj.deactivate()
network.model.new_obj = Objective(expr=network.model.x**2)
有一些方法可以修改现有的约束/目标,但它们没有得到很好的记录。我建议使用 Python 的dir()
函数并使用一些组件属性和方法来了解它们是如何工作的。
dir(network.model.obj)
推荐阅读
- ios - Xcode 10,iOS:即使所有测试都通过了,测试构建也会失败
- javascript - 如何添加选项以选择元素?
- java - 当应用程序部署为 jar 文件时,TestNG 实例初始化不起作用。
- session - Coldfusion 2018 集群和会话复制不起作用
- javascript - 进行多次获取并返回结果的单个异步函数?
- java - 与机器人的环聊聊天不会将消息发布到 pub/sub
- python - 用 fg 回到 python3 弄乱了箭头键的解释
- c# - .NET CORE CLI - 从文件中加载参数吗?
- angular - 角度检测是否打开了弹出窗口
- python - 根据索引和条件更改 numpy 数组中的值