Go to the documentation of this file.
19 class CoinWarmStartBasis;
46 class CglLandPSimplex;
51 friend void CglLandPUnitTest(OsiSolverInterface *si,
const std::string & mpsDir);
192 virtual void generateCuts(
const OsiSolverInterface & si, OsiCuts & cs,
236 void scanExtraCuts(OsiCuts& cs,
const double * colsol)
const;
243 CachedData(
int nBasics = 0 ,
int nNonBasics = 0);
248 void getData(
const OsiSolverInterface &si);
CglCutGenerator * clone() const
Clone function.
CoinMessages messages_
messages
@ none
Generate no extra cuts.
LHSnorm lhs_norm
How to weight LHS of normalization.
Class collecting parameters for all cut generators.
@ AtOptimalBasis
Generate cuts from the optimal basis.
@ AllViolatedMigs
Generate all violated Mixed integer Gomory cuts in the course of the optimization.
double pivotTol
Tolerance for small pivots values (should be the same as the solver.
Information about where the cut generator is invoked from.
RhsWeightType
RHS weight in normalization.
Parameters()
Default constructor (with default values)
Some informations that will be changed by the pivots and that we want to keep.
@ Full
Work in full space.
int maxCutPerRound
Maximum number of cuts generated at a given round.
double timeLimit
Total time limit for cut generation.
bool perturb
Apply perturbation procedure.
bool canLift_
Flag to say if cuts can be lifted.
bool strengthen
Do we strengthen the final cut (always do if modularize is 1)
CachedData(int nBasics=0, int nNonBasics=0)
OsiCuts extraCuts_
Store some extra cut which could be cheaply generated but do not cut current incumbent.
int nBasics_
number of basics variables
Normalization
Normalization.
double * originalColLower_
Original lower bounds for the problem (for lifting cuts).
CachedData cached_
Cached informations about problem.
void getSortedFractionalIndices(std::vector< int > &indices, const CachedData &data, const CglLandP::Parameters ¶ms) const
Retrieve sorted integer variables which are fractional in the solution.
int extraCutsLimit
Maximum number of extra rows to generate per round.
int nNonBasics_
number of non-basics
void setLogLevel(int level)
set level of log for cut generation procedure :
int pivotLimitInTree
Max number of pivots at regular nodes.
int * basics_
Indices of basic variables in starting basis (ordered if variable basics_[i] s basic in row i)
@ Fractional_rc
Use fractional space only for computing reduced costs.
void scanExtraCuts(OsiCuts &cs, const double *colsol) const
bool modularize
Do we apply Egon Balas's Heuristic for modularized cuts.
virtual ~LapMessages()
destructor.
int numcols_
number of columns in the original problems.
CoinMessageHandler * handler_
message handler
RhsWeightType rhsWeightType
How to weight RHS of normalization.
double rhsWeight
Weight to put in RHS of normalization if static.
LAP::Validator validator_
cut validator
Cut Generator Base Class.
CoinWarmStartBasis * basis_
Optimal basis.
double away
A variable have to be at least away from integrity to be generated.
bool countMistakenRc
Wether to limit or not the number of mistaken RC (when perturbation is applied).
Parameters & operator=(const Parameters &other)
Assignment opertator.
@ initialReducedCosts
Select only those rows which had initialy a 0 reduced cost.
@ bestPivot
select best possible pivot.
friend void CglLandPUnitTest(OsiSolverInterface *si, const std::string &mpsDir)
@ Dynamic
2 * current number of constraints.
SeparationSpaces sepSpace
Work in the reduced space (only non-structurals enter the basis)
virtual bool needsOptimalBasis() const
Return true if needs optimal basis to do cuts.
LapMessages()
Constructor.
int * nonBasics_
Indices of non-basic variables.
double * colsol_
Stores the value of the solution to cut.
void CglLandPUnitTest(OsiSolverInterface *si, const std::string &mpsDir)
Class storing parameters.
double * originalColUpper_
Original upper bounds for the problem (for lifting cuts).
void getData(const OsiSolverInterface &si)
Get the data from a problem.
CglLandP & operator=(const CglLandP &rhs)
Assignment operator.
int getSortedFractionals(CoinPackedVector &xFrac, const CachedData &data, const CglLandP::Parameters ¶ms) const
Retrieve sorted integer variables which are fractional in the solution.
double singleCutTimeLimit
Time limit for generating a single cut.
int failedPivotLimit
Maximum number of failed pivots before aborting.
double * slacks_
Stores the values of the slacks.
virtual void generateCuts(const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())
Generate cuts for the model data contained in si.
OsiSolverInterface * solver_
Solver before pivots.
bool * integers_
Stores wheter slacks are integer constrained.
int numrows_
number of rows in the original problems.
@ mostNegativeRc
select most negative reduced cost
Class to validate or reject a cut.
SelectionRules pivotSelection
Which rule to apply for choosing entering and leaving variables.
CglLandP(const CglLandP::Parameters ¶ms=CglLandP::Parameters(), const LAP::Validator &validator=LAP::Validator())
Constructor for the class.
LAP::Validator & validator()
int pivotLimit
Max number of pivots before we generate the cut \default 20.
SeparationSpaces
Space where cuts are optimized.
ExtraCutsMode generateExtraCuts
Generate extra constraints from optimal lift-and-project basis.
int degeneratePivotLimit
maximum number of consecutive degenerate pivots \default 0
Normalization normalization
How to weight normalization.
CachedData & operator=(const CachedData &source)
bool useTableauRow
Do we use tableau row or the disjunction (I don't really get that there should be a way to always use...
Performs one round of Lift & Project using CglLandPSimplex to build cuts.
@ WhenEnteringBasis
Generate cuts as soon as a structural enters the basis.