我正在使用内部调用Pyomo的工具箱来解决优化问题。我对访问它构建的Pyomo模型感兴趣,因此可以修改约束/目标。所以我的问题是,假设我得到以下输出:
问题:
名称:未知 下限:6250.0 上限:6250.0 目标数量:1 约束数量:11 变量数:8 非零数目:17 感觉:最小化
求解器:
状态:确定 终止条件:最佳 统计: 分支定界: 有界子问题数:0 创建的子问题数量:0 错误rc:0 时间:0.015599727630615234
解决方案:
解决方案数:0 显示的解决方案数量:0
因此问题很好解决,我得到了解决方案,该建模也通过另一个内部完成。是否可以访问约束/目标,以便我可以自由地使用Pyomo语法修改优化模型?
我试图调用该模型,并得到如下所示: {{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)