get_shifted_linear_model

(function from pyomo.contrib.alternative_solutions.shifted_lp)

pyomo.contrib.alternative_solutions.shifted_lp.get_shifted_linear_model(model, block=None)[source]

Converts an (MI)LP with bounded (discrete and) continuous variables (l <= x <= u) into a standard form where where all continuous variables are non-negative reals and all constraints are equalities. For a pure LP of the form,

\[min/max cx s.t. A_1 * x = b_1 A_2 * x <= b_2 l <= x <= u\]

a problem of the form,

\[min/max c'z s.t. Bz = q z >= 0\]

will be created and added to the returned block. z consists of var_lower and var_upper variables that are substituted into the original x variables, and slack_vars that are used to convert the original inequalities to equalities. Bounds are provided on all variables in z. For MILPs, only the continuous part of the problem is converted.

See Lee, Sangbum., C. Phalakornkule, M. Domach, I. Grossmann, Recursive MILP model for finding all the alternate optima in LP models for metabolic networks, Computers & Chemical Engineering, Volume 24, Issues 2–7, 2000, page 712 for additional details.

Parameters:
  • model (ConcreteModel) – A concrete Pyomo model

  • block (Block) – The Pyomo block that the new model should be added to.

Returns:

The block that holds the reformulated model.

Return type:

block