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