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