BoundPretransformation

(class from pyomo.gdp.plugins.bound_pretransformation)

class pyomo.gdp.plugins.bound_pretransformation.BoundPretransformation[source]

Bases: Transformation

Implements a special case of the transformation mentioned in [1] for handling disjunctive constraints with common left-hand sides (i.e., Constraint bodies). Automatically detects univariate disjunctive Constraints (bounds or equalities involving one variable), and transforms them according to [1]. The transformed Constraints are deactivated, but the remainder of the GDP is untouched. That is, to completely transform the GDP, a GDP-to-MIP transformation is needed that will transform the remaining disjunctive constraints as well as any LogicalConstraints and the logic of the disjunctions themselves.

NOTE: Because this transformation allows tighter bound values higher in the GDP hierarchy to supersede looser ones that are lower, the transformed model will not necessarily still be valid in the case that there are mutable Params in disjunctive variable bounds or in the transformed Constraints and the values of those mutable Params are later changed. Similarly, if this transformation is called when Vars are fixed, it will only be guaranteed to be valid when those Vars remain fixed to the same values.

[1] Egon Balas, “On the convex hull of the union of certain polyhedra,”

Operations Research Letters, vol. 7, 1988, pp. 279-283

__init__()[source]

Methods

__init__()

apply(model, **kwds)

DEPRECATED.

apply_to(model, **kwds)

Apply the transformation to the given model.

create_using(model, **kwds)

Create a new model with this transformation

get_transformed_constraints(v, disjunction)

Attributes

CONFIG

transformation_name

Member Documentation

apply(model, **kwds)

DEPRECATED.

Deprecated since version 4.3.11323: Transformation.apply() has been deprecated. Please use either Transformation.apply_to() for in-place transformations or Transformation.create_using() for transformations that create a new, independent transformed model instance.

apply_to(model, **kwds)

Apply the transformation to the given model.

create_using(model, **kwds)

Create a new model with this transformation