我正在使用一个内部调用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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句