访问约束/目标

哈立德·阿尔舍里(Khaled Alshehri)

我正在使用一个内部调用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>

伯大尼·尼科尔森(Bethany Nicholson)

听起来像是network.modelPyomo模型,是的,如果可以访问它,则可以对其进行修改。尝试使用以下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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章