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
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