找出Pyomo模型不可行的原因

时间:2018-06-26 13:36:16

标签: variables constraints pyomo feasibility

我得到了一个带有许多变量和约束的pyomo具体模型。

以某种方式,模型中的变量之一违反了一个约束,这使我的模型不可行:

WARNING: Loading a SolverResults object with a warning status into model=xxxx;
    message from solver=Model was proven to be infeasible.

有没有办法向求解器询问不可行的原因?

因此,例如,假设我有一个名为x的变量,并且如果我定义以下2个约束,则模型将为ofc。不可行的。

const1:
    x >= 10

const2:
    x <= 5

我要实现的目标是指出导致不可行的约束和变量,以便我可以解决它。否则,使用我的大型模型,很难找到导致这种不可行的原因。

IN: write_some_comment
OUT: variable "x" cannot fulfill "const1" and "const2" at the same time.

1 个答案:

答案 0 :(得分:1)

即使发现问题不可行,许多求解器(包括IPOPT)也会在求解器终止时退还变量的值。到那时,您确实有一些选择。

pyomo.util.infeasible中有一些有用的代码可以帮助您。 https://github.com/Pyomo/pyomo/blob/master/pyomo/util/infeasible.py

用法:

from pyomo.util.infeasible import log_infeasible_constraints
...
SolverFactory('your_solver').solve(model)
...
log_infeasible_constraints(model)