CuttingPlane_Transformation

(class from pyomo.gdp.plugins.cuttingplane)

class pyomo.gdp.plugins.cuttingplane.CuttingPlane_Transformation[source]

Bases: Transformation

Relax convex disjunctive model by forming the bigm relaxation and then iteratively adding cuts from the hull relaxation (or the hull relaxation after some basic steps) in order to strengthen the formulation.

Note that gdp.cuttingplane is not a structural transformation: If variables on the model are fixed, they will be treated as data, and unfixing them after transformation will very likely result in an invalid model.

This transformation accepts the following keyword arguments:

Parameters:
  • solver (Solver name (as string) to use to solve relaxed BigM and separation) – problems

  • solver_options (dictionary of options to pass to the solver)

  • stream_solver (Whether or not to display solver output)

  • verbose (Enable verbose output from cuttingplanes algorithm)

  • cuts_name (Optional name for the IndexedConstraint containing the projected) – cuts (must be a unique name with respect to the instance)

  • minimum_improvement_threshold (Stopping criterion based on improvement in) – Big-M relaxation. This is the minimum difference in relaxed BigM objective values between consecutive iterations

  • separation_objective_threshold (Stopping criterion based on separation) – objective. If separation objective is not at least this large, cut generation will terminate.

  • cut_filtering_threshold (Stopping criterion based on effectiveness of the) – generated cut: This is the amount by which a cut must be violated at the relaxed bigM solution in order to be added to the bigM model

  • max_number_of_cuts (The maximum number of cuts to add to the big-M model)

  • norm (norm to use in the objective of the separation problem)

  • tighten_relaxation (callback to modify the GDP model before the hull) – relaxation is taken (e.g. could be used to perform basic steps)

  • create_cuts (callback to create cuts using the solved relaxed bigM and hull) – problems

  • post_process_cut (callback to perform post-processing on created cuts)

  • back_off_problem_tolerance (tolerance to use while post-processing)

  • zero_tolerance (Tolerance at which a float will be considered 0 when) – using Fourier-Motzkin elimination to create cuts.

  • do_integer_arithmetic (Whether or not to require Fourier-Motzkin elimination) – to do integer arithmetic. Only possible when all data is integer.

  • tight_constraint_tolerance (Tolerance at which a constraint is considered) – tight for the Fourier-Motzkin cut generation procedure

  • default (By)

  • is (the callbacks will be set such that the algorithm performed)

  • [1] (as presented in)

  • to (but with an additional post-processing procedure)

  • error (reduce numerical)

  • cut (fourier-motzkin elimination on the collection of constraints and the)

  • constraints (subject to the relaxed hull)

  • by (extended space perpendicular to a composite normal vector created)

  • tolerance. (this violation plus an additional user-specified)

  • addition (In)

  • time) (the create_cuts_fme function provides an (exponential)

  • eliminate (method of generating cuts which reduces numerical error (and can)

  • are (it if all data is integer). It collects the hull constraints which)

  • the (tight at the solution of the separation problem. It creates a cut in)

  • by

  • performs (summing the directions normal to these constraints. It then)

  • cut

  • which (to project out the disaggregated variables. The resulting constraint)

  • returned. (is most violated by the relaxed bigM solution is then)

References

[1] Sawaya, N. W., Grossmann, I. E. (2005). A cutting plane method for solving linear generalized disjunctive programming problems. Computers and Chemical Engineering, 29, 1891-1913

__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

Attributes

CONFIG

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