PYOMO:如何创建约束松弛? (从 Pyomo 中的 CPLEX 重写约束)

Posted

技术标签:

【中文标题】PYOMO:如何创建约束松弛? (从 Pyomo 中的 CPLEX 重写约束)【英文标题】:PYOMO: How to create constraint relaxation? (Rewrite constraint from CPLEX in Pyomo) 【发布时间】:2019-08-26 21:18:00 【问题描述】:

我正在尝试将使用 CPLEX 求解器在 GAMS 中编写的模型转移到 Pyomo。 CPLEX 具有允许建模者在模型不可行时放松约束和决策变量的功能 - FeasOpt(用于可行优化)。我在不使用松弛变量的情况下在 Pyomo 中重新创建这种自动不可行性松弛功能时遇到了麻烦。

下面是我的 GAMS/CPLEX 代码的 sn-p:

以不可行为代价的放松约束:

RotationOnce1(R)$(sum(W$B1(W), VAC(R,W))<4 or sum(W$B1(W), AIRP(R,W))<4).. | sum(Rot$Act(Rot), y1(R,Rot))=e=1;

指定放松偏好:

*$ontext
$onecho > cplex.opt
feasopt 1
feasoptmode 1

x.feaspref 0
RotationOnce1.feaspref 1

如何在 pyomo 中重新创建约束松弛(没有松弛变量)?在 Pyomo 中重写上面的 CPLEX sn-p 会有所帮助

【问题讨论】:

我不知道这是否有帮助(我不知道如何使 FeasOpt 工作),但是如果您知道要放松的 Pyomo 约束,您可以随时使用 @ 停用它987654323@。这是你想要做的吗? @V.Brunelle 寻找自动化方法 【参考方案1】:

Pyomo 似乎没有实现 FeasOpt 功能: https://github.com/Pyomo/pyomo/search?q=feasopt&unscoped_q=feasopt

【讨论】:

但我仍然不清楚 pyomo 是否具有类似的功能来完成类似的任务。它不必被称为“FeasOpt”

以上是关于PYOMO:如何创建约束松弛? (从 Pyomo 中的 CPLEX 重写约束)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pyomo 中声明目标函数和约束(抽象模型)

Pyomo:使用 if 语句进行约束

TypeError PYOMO:基于 pandas 数据框定义约束

如何在 Pyomo 中编写分段线性目标函数

如何在pyomo中访问目标函数值?

pyomo 写模型似乎很慢