250 int &numberNodesOutput,
int &
status);
255 #ifdef CBC_KEEP_DEPRECATED
261 CbcModel *cleanModel(
const double *lower,
const double *upper);
278 int subBranchAndBound(
CbcModel *model2,
296 int subBranchAndBound(
const double *lower,
const double *upper,
357 double *saveLower = NULL,
358 double *saveUpper = NULL);
395 int lessThanThis,
int defaultValue = 1000);
436 bool tightenVubs(
int type,
bool allowMultipleBinary =
false,
437 double useCutoff = 1.0e50);
445 double useCutoff = 1.0e50);
556 #ifdef SWITCH_VARIABLES
563 const double *solution,
int printLevel);
892 bool doCutsNow(
int allowForTopOfTree)
const;
1343 double &objectiveValue,
const double *solution,
1344 int fixVariables = 0);
1350 const double *solution);
1359 virtual double checkSolution(
double cutoff,
double *solution,
1360 int fixVariables,
double originalObjValue);
1368 int &numberObjectInfeasibilities)
const;
1478 double objectiveValue,
bool check =
false);
1790 int howOften = 1,
const char *name = NULL,
1791 bool normal =
true,
bool atSolution =
false,
1792 bool infeasible =
false,
int howOftenInSub = -100,
1793 int whatDepth = -1,
int whatDepthInSub = -1);
2226 return returnSolver;
2431 const double *lowerBefore,
const double *upperBefore,
2455 bool allowResolve,
OsiCuts *saveCuts,
2456 int numberNewCuts = 0,
const OsiRowCut **newCuts = NULL);
2493 double &lower,
double &upper,
int force);
2520 int *numberDown = NULL,
int *numberUp = NULL,
2521 int *numberDownInfeasible = NULL,
2522 int *numberUpInfeasible = NULL)
const;
2648 int numberFixed,
bool ifInfeasible);
2693 void setMIPStart(
const std::vector< std::pair< std::string, double > > &mips)
2712 void setMIPStart(
int count,
const char **colNames,
const double colValues[]);
3248 double &originalUpper);
3256 int callCbc(
const char *input2);
3258 int callCbc(
const std::string input2);
This class allows for the use of more exotic solvers e.g.
bool ownObjects() const
Now we may not own objects - just point to solver's objects.
void clearNumberGlobalViolations()
Holds solution at continuous (after cuts if branchAndBound called)
int getMaximumCutPassesAtRoot() const
Get the maximum number of cut passes at root node.
int getCurrentPassNumber() const
Get current cut pass number in this round of cuts.
int maximumRows_
Maximum number of rows.
bool isProvenDualInfeasible() const
Was continuous solution unbounded.
CbcModel * subTreeModel(OsiSolverInterface *solver=NULL) const
For retrieving a copy of subtree model with given OsiSolver.
CbcCutGenerator ** cutGenerators() const
Get the list of cut generators.
bool isNodeLimitReached() const
Node limit reached?
void previousBounds(CbcNode *node, CbcNodeInfo *where, int iColumn, double &lower, double &upper, int force)
Returns bounds just before where - initially original bounds.
double * continuousSolution_
Holds solution at continuous (after cuts)
void setHotstartSolution(const double *solution, const int *priorities=NULL)
Pass in target solution and optional priorities.
bool isIntegerNonBinary(int colIndex) const
Return true if variable is general integer.
void zapGlobalCuts()
Get rid of global cuts.
int * hotstartPriorities_
Hotstart priorities.
Largest non-zero change on a branch.
int numberRowsAtContinuous_
Number of rows at continuous.
void setStrategy(CbcStrategy &strategy)
Set the strategy. Clones.
int moreSpecialOptions2_
More more special options 0 bit (1) - find switching variables 1 bit (2) - using fake objective until...
const double * cbcReducedCost_
Get a pointer to array[getNumCols()] (for speed) of reduced costs.
int getMaximumNodes() const
Get the maximum node limit .
void saveBestSolution(const double *solution, double objectiveValue)
Save a solution to best and move current to saved.
bool defaultHandler_
Flag to say if handler_ is the default handler.
bool feasibleSolution(int &numberIntegerInfeasibilities, int &numberObjectInfeasibilities) const
Test the current solution for feasiblility.
virtual void setObjSense(double s)=0
Set the objective function sense.
int strongInfo_[7]
0 - number times strong branching done, 1 - number fixed, 2 - number infeasible Second group of three...
int getNumberThreads() const
Get number of threads.
CbcBaseModel * master_
Thread stuff for master.
void sayEventHappened()
Tell model to stop on event.
double originalContinuousObjective_
Value of objective before root node cuts added.
int lastNumberCuts2_
The solver associated with this model.
double getIntegerTolerance() const
Get the integrality tolerance .
double getContinuousObjective() const
Value of objective at continuous.
double getInfinity() const
Get solver's value for infinity.
Current minimization objective value.
const double * cbcColSolution_
Pointer to array[getNumCols()] (for speed) of primal solution vector.
int numberStrongIterations_
Number of iterations in strong branching.
int currentNumberCuts_
Number of entries in addedCuts_.
int numberExtraIterations() const
Number of extra iterations.
void setNumberStrong(int number)
Set the maximum number of candidates to be evaluated for strong branching.
Information required to recreate the subproblem at this node.
virtual const double * getReducedCost() const =0
Get a pointer to an array[getNumCols()] of reduced costs.
double * bestSolution_
Array holding the incumbent (best) solution.
virtual const char * getRowSense() const =0
Get a pointer to an array[getNumRows()] of row constraint senses.
CbcBaseModel * master() const
Thread stuff for master.
void saveReferenceSolver()
Save a copy of the current solver so can be reset to.
CoinMessages messages_
Cbc messages.
void unlockThread()
Get pointer to masterthread.
void gutsOfCopy(const CbcModel &rhs, int mode=0)
Most of copy constructor mode - 0 copy but don't delete before 1 copy and delete before 2 copy and de...
double getMinimumDrop() const
Get the minimum drop to continue cuts.
int currentDepth_
Current depth.
double savedSolutionObjective(int which) const
Return a saved solution objective (0==best) - COIN_DBL_MAX if off end.
void setCutAndHeuristicOptions(CbcModel &model)
CbcCompareBase * nodeComparison() const
int numberStoppedSubTrees_
Number of times any subtree stopped on nodes, time etc.
Dual Row Pivot Abstract Base Class.
void setBestSolution(CBC_Message how, double &objectiveValue, const double *solution, int fixVariables=0)
Record a new incumbent solution and update objectiveValue.
int splitModel(int numberModels, CbcModel **model, int numberNodes)
Split up nodes.
Base class for message handling.
void setModelOwnsSolver(bool ourSolver)
Set ownership of solver.
bool isAbandoned() const
Are there a numerical difficulties?
int howOftenGlobalScan() const
Get how often to scan global cuts.
void deleteObjects(bool findIntegers=true)
Delete all object information (and just back to integers if true)
CbcObjectUpdateData * updateItems_
Update items.
Just a marker, so that a static sized array can store parameters.
CbcThread * masterThread() const
Get pointer to masterthread.
bool isSolutionLimitReached() const
Solution limit reached?
int numberBeforeTrust_
The number of branches before pseudo costs believed in dynamic strong branching.
Stop doing heuristics when the gap between the objective value of the best known solution and the bes...
int maximumCutPasses_
Maximum number of cut passes.
void setNumberPenalties(int number)
Set the number of variables for which to compute penalties in dynamic strong branching.
virtual const double * getRowLower() const =0
Get a pointer to an array[getNumRows()] of row lower bounds.
const CoinPackedMatrix * getMatrixByCol() const
Get pointer to column-wise copy of matrix.
OsiSolverInterface * solver() const
Returns solver - has current state.
bool keepNamesPreproc
keepNamesPreproc if variables names will be preserved in the pre-processed problem (usefull in callba...
int maximumStatistics_
Maximum number of statistics.
CbcHeuristic * lastHeuristic() const
Pointer to heuristic solver which found last solution (or NULL)
bool setMaximumNodes(int value)
Set the maximum node limit .
double getObjValue() const
Get best objective function value.
double ** savedSolutions_
Arrays holding other solutions.
CbcHeuristic ** heuristic_
Heuristic solvers.
int maximumCuts_
The solver associated with this model.
Optimization direction - stored for speed.
const double * getCbcRowLower() const
Get pointer to array[getNumRows()] (for speed) of row lower bounds.
virtual const double * getRowUpper() const =0
Get a pointer to an array[getNumRows()] of row upper bounds.
const double * getCbcRowUpper() const
Get pointer to array[getNumRows()] (for speed) of row upper bounds.
bool setHeuristicGap(double value)
Set the heuristic gap between the best known solution and the best possible solution.
void checkModel()
Check original model before it gets messed up.
int currentPassNumber_
Current cut pass number.
int continuousPriority_
Anything with priority >= this can be treated as continuous.
void setMultipleRootTries(int value)
Set multiple root tries.
Just a marker, so that a static sized array can store parameters.
void setNumberAnalyzeIterations(int number)
Number of analyze iterations to do.
int * usedInSolution_
Array marked whenever a solution is found if non-zero.
bool setPrintingMode(int value)
Set the printing mode.
Adjusts printout 1 does different node message with number unsatisfied on last branch.
virtual const CoinPackedMatrix * getMatrixByRow() const =0
Get a pointer to a row-wise copy of the matrix.
const OsiRowCut ** lastCut_
The solver associated with this model.
virtual const double * getRightHandSide() const =0
Get a pointer to an array[getNumRows()] of row right-hand sides.
The amount by which to tighten the objective function cutoff when a new solution is discovered...
Small non-zero change on a branch to be used as guess.
void fillPseudoCosts(double *downCosts, double *upCosts, int *priority=NULL, int *numberDown=NULL, int *numberUp=NULL, int *numberDownInfeasible=NULL, int *numberUpInfeasible=NULL) const
Return pseudo costs If not all integers or not pseudo costs - returns all zero Length of arrays are n...
int secondaryStatus_
Secondary status of problem -1 unset (status_ will also be -1) 0 search completed with solution 1 lin...
Class for preProcessing and postProcessing.
int numberSolutions_
Number of solutions.
void deleteSavedSolution(int which)
Delete a saved solution and move others up.
int callCbc1(const char *input2, CbcModel &babSolver)
void setNumberObjects(int number)
Set the number of objects.
const double * getRowLower() const
Get pointer to array[getNumRows()] of row lower bounds.
bool setAllowablePercentageGap(double value)
Set the percentage allowable gap between the best known solution and the best possible solution...
Sum of non-zero changes on a branch.
Cutoff - stored for speed.
int numberHeuristics_
Number of heuristics.
int numberIterations_
Cumulative number of iterations.
void saveModel(OsiSolverInterface *saveSolver, double *checkCutoffForRestart, bool *feasible)
Save copy of the model.
virtual const double * getRowActivity() const =0
Get a pointer to array[getNumRows()] of row activity levels.
OsiSolverInterface * solver_
The solver associated with this model.
void setBranchingMethod(CbcBranchDecision *method)
Set the branching decision method.
bool addCuts1(CbcNode *node, CoinWarmStartBasis *&lastws)
Traverse the tree from node to root and prep the model.
void setMaximumCutPassesAtRoot(int value)
Set the maximum number of cut passes at root node (default 20) Minimum drop can also be used for fine...
void CbcMain0(CbcModel &babSolver)
const double * hotstartSolution() const
Get the hotstart solution.
void setProblemFeasibility(CbcFeasibilityBase *feasibility)
CbcRowCuts * globalConflictCuts_
Global conflict cuts.
double sumChangeObjective2_
Sum of Changes to objective by subsequent solves.
bool isInitialSolveProvenOptimal() const
Is optimality proven (for initialSolve) ?
int numberLongStrong_
Number of long strong goes.
virtual const double * getColUpper() const =0
Get a pointer to an array[getNumCols()] of column upper bounds.
void setContinuousInfeasibilities(int value)
Holds solution at continuous (after cuts if branchAndBound called)
virtual int getNumCols() const =0
Get the number of columns.
const char * getRowSense() const
Get pointer to array[getNumRows()] of row constraint senses.
void setProblemType(int number)
Problem type as set by user or found by analysis.
int maximumSavedSolutions() const
Maximum number of extra saved solutions.
void setSolutionCount(int value)
Set number of solutions (so heuristics will be different)
int numberObjects_
Total number of objects.
void resetModel()
Clears out enough to reset CbcModel cutoff etc.
void setNumberStrongIterations(int number)
Set the number of iterations done in strong branching.
int * originalColumns_
Original columns as created by integerPresolve or preprocessing.
int currentDepth() const
Current depth.
CoinMessages * messagesPointer()
Return pointer to messages.
void setSearchStrategy(int value)
Set strategy worked out - mainly at root node for use by CbcNode.
int stateOfSearch() const
State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no soluti...
The maximum number of seconds before terminating.
Abstract cut modifier base class.
bool setCutoffIncrement(double value)
Set the CbcModel::CbcCutoffIncrement desired.
bool isContinuousUnbounded() const
Was continuous solution unbounded.
Base class for Cbc event handling.
int numberIntegers_
Number of integers in problem.
int intParam_[CbcLastIntParam]
Array for integer parameters.
int whenCuts_
At which depths to do cuts.
void * temporaryPointer_
Useful temporary pointer.
bool solveWithCuts(OsiCuts &cuts, int numberTries, CbcNode *node)
Evaluate a subproblem using cutting planes and heuristics.
CoinThreadRandom * randomNumberGenerator()
Thread specific random number generator.
double getInfeasibilityWeight() const
Get the weight per integer infeasibility .
const int * integerVariable() const
Number of rows in continuous (root) problem.
double getHeuristicFractionGap() const
Get the fraction heuristic gap between the best known solution and the best possible solution...
CbcNodeInfo ** lastNodeInfo_
The solver associated with this model.
bool doCutsNow(int allowForTopOfTree) const
Return true if we want to do cuts If allowForTopOfTree zero then just does on multiples of depth if 1...
const double * cbcRowPrice_
Pointer to array[getNumRows()] (for speed) of dual prices.
void zapIntegerInformation(bool leaveObjects=true)
Zap integer information in problem (may leave object info)
Stop when the gap between the objective value of the best known solution and the best bound on the ob...
const double * cbcRowActivity_
Pointer to array[getNumRows()] (for speed) of row activity levels.
CoinWarmStartBasis bestSolutionBasis_
Warm start object produced by heuristic or strong branching.
void setPenaltyScaleFactor(double value)
Set scale factor to make penalties match strong.
const int * strongInfo() const
Return strong info.
int getMultipleRootTries() const
Get multiple root tries.
void setMaximumSavedSolutions(int value)
Set maximum number of extra saved solutions.
CbcFeasibilityBase * problemFeasibility() const
CoinWarmStart * emptyWarmStart_
Pointer to an empty warm start object.
CbcAction
Action codes returned by the event handler.
OsiBranchingInformation usefulInformation() const
Generate an OsiBranchingInformation object.
int numberRowsAtContinuous() const
Number of rows in continuous (root) problem.
void setTestSolution(const double *solution)
Holds solution at continuous (after cuts if branchAndBound called)
virtual const double * getObjCoefficients() const =0
Get a pointer to an array[getNumCols()] of objective function coefficients.
CbcCutModifier * cutModifier_
Cut modifier function.
int getNumberHeuristicSolutions() const
Get number of heuristic solutions.
void moveToModel(CbcModel *baseModel, int mode)
Move/copy information from one model to another -1 - initialization 0 - from base model 1 - to base m...
const double * getCbcRowActivity() const
Get pointer to array[getNumRows()] (for speed) of row activity levels.
void setObjSense(double s)
Set objective function sense (1 for min (default), -1 for max,)
CoinMessageHandler * messageHandler() const
Return handler.
CglPreProcess * preProcess_
preProcess used before branch and bound (optional)
std::vector< std::pair< std::string, double > > mipStart_
MIPstart values values for integer variables which will be converted to a complete integer initial fe...
int getNumCols() const
Get number of columns.
The maximum number of solutions before terminating.
int numberPenalties() const
get the number of variables for which to compute penalties in dynamic strong branching.
CoinBigIndex getNumElements() const
Get number of nonzero elements.
int numberStoppedSubTrees() const
Returns number of times any subtree stopped on nodes, time etc.
void setHeuristicModel(CbcModel *model)
Set a pointer to model from CbcHeuristic.
CbcThread * masterThread_
Pointer to masterthread.
Sparse Matrix Base Class.
virtual const double * getRowRange() const =0
Get a pointer to an array[getNumRows()] of row ranges.
int CbcMain(int argc, const char *argv[], OsiClpSolverInterface &solver, CbcModel **babSolver)
CbcModel * findCliques(bool makeEquality, int atLeastThisMany, int lessThanThis, int defaultValue=1000)
Identify cliques and construct corresponding objects.
void setNodeComparison(CbcCompareBase *compare)
void synchronizeNumberBeforeTrust(int type=0)
Set numberBeforeTrust in all objects.
The maximum amount the value of an integer variable can vary from integer and still be considered fea...
bool modelOwnsSolver()
Get ownership of solver.
CoinWarmStartBasis * getEmptyBasis(int ns=0, int na=0) const
Return an empty basis object of the specified size.
void setMoreSpecialOptions2(int value)
Set more more special options 0 bit (1) - find switching variables 1 bit (2) - using fake objective u...
OsiSolverInterface * referenceSolver() const
A copy of the solver, taken at constructor or by saveReferenceSolver.
bool waitingForMiniBranchAndBound() const
Says if model is sitting there waiting for mini branch and bound to finish This is because an event h...
void setApplicationData(void *appData)
Set application data.
virtual double getObjSense() const =0
Get the objective function sense.
int strongStrategy_
Strategy for strong branching 0 - normal when to do all fractional 1 - root node 2 - depth less than ...
void incrementExtra(int nodes, int iterations, int fathoms=1)
Get how many Nodes it took to solve the problem.
int logLevel() const
Get current log (detail) level.
void passInSolverCharacteristics(OsiBabSolver *solverCharacteristics)
For advanced applications you may wish to modify the behavior of Cbc e.g.
double rootObjectiveAfterCuts() const
Value of objective after root node cuts added.
CoinWarmStartBasis workingBasis_
Work basis for temporary use.
void analyzeObjective()
Analyze problem to find a minimum change in the objective function.
double penaltyScaleFactor() const
Get scale factor to make penalties match strong.
void addCutGenerator(CglCutGenerator *generator, int howOften=1, const char *name=NULL, bool normal=true, bool atSolution=false, bool infeasible=false, int howOftenInSub=-100, int whatDepth=-1, int whatDepthInSub=-1)
Add one generator - up to user to delete generators.
int specialOptions() const
Get special options.
int maximumRows() const
Maximum number of rows.
Collections of row cuts and column cuts.
double continuousObjective_
Value of objective at continuous (Well actually after initial round of cuts)
void gutsOfDestructor()
Clears out as much as possible (except solver)
const double * getCbcReducedCost() const
Get a pointer to array[getNumCols()] (for speed) of reduced costs.
int numberUpdateItems_
Number of outstanding update information items.
void addUpdateInformation(const CbcObjectUpdateData &data)
Adds an update information object.
void setStopNumberIterations(int value)
Set number of "iterations" to stop after.
Information required to recreate the subproblem at this node.
OsiRowCut * nextRowCut_
A pointer to a row cut which will be added instead of normal branching.
CoinMessageHandler * handler_
Message handler.
int maximumWhich_
Maximum number of cuts (for whichGenerator_)
bool isContinuous(int colIndex) const
Return true if variable is continuous.
const OsiSolverInterface * postProcessedSolver(int solutionType=1)
Returns postProcessed solution in solver(called from event handler) Normally used for integer solutio...
int maximumDepth_
Current limit on search tree depth.
bool defaultHandler() const
Check default handler.
const double * getCbcColSolution() const
Get pointer to array[getNumCols()] (for speed) of primal solution vector.
const double * getCbcRowPrice() const
Get pointer to array[getNumRows()] (for speed) of dual prices.
For gathering statistics.
void passInTreeHandler(CbcTree &tree)
For modifying tree handling (original is cloned)
bool isProvenOptimal() const
Is optimality proven?
void addSOSEtcToSolver()
Add SOS info to solver - Overwrites SOS information in solver with information in CbcModel...
int getStopNumberIterations() const
Get number of "iterations" to stop after.
OsiSolverInterface * swapSolver(OsiSolverInterface *solver)
Returns current solver - sets new one.
bool setHeuristicFractionGap(double value)
Set the fraction heuristic gap between the best known solution and the best possible solution...
int getPreferredWay() const
Get the preferred way to branch (default 0)
int numberAnalyzeIterations() const
Set an integer parameter.
const double * cbcColLower_
Whether to automatically do presolve before branch and bound.
const double * savedSolution(int which) const
Return a saved solution (0==best) - NULL if off end.
CbcRowCuts * globalCuts()
Global cuts.
int numberPenalties_
The number of variables for which to compute penalties in dynamic strong branching.
void setMaximumCutPasses(int value)
Set the maximum number of cut passes at other nodes (default 10) Minimum drop can also be used for fi...
char integerType(int i) const
Whether or not integer.
void incrementStrongInfo(int numberTimes, int numberIterations, int numberFixed, bool ifInfeasible)
Increment strong info.
CoinThreadRandom randomNumberGenerator_
Thread specific random number generator.
int numberThreads_
Parallel 0 - off 1 - testing 2-99 threads other special meanings.
void newLanguage(CoinMessages::Language language)
Set language.
const double * getRightHandSide() const
Get pointer to array[getNumRows()] of rows right-hand sides.
The maximum number of nodes before terminating.
void moveInfo(const CbcModel &rhs)
Move status, nodes etc etc across.
void mergeModels(int numberModel, CbcModel **model, int numberNodes)
Merge models.
void redoWalkBack()
Redo walkback arrays.
int * whichGenerator_
Which cut generator generated this cut.
int numberObjects() const
Get the number of objects.
bool integerPresolveThisModel(OsiSolverInterface *originalSolver, bool weak=false)
Do integer presolve, modifying the current model.
void setNumberHeuristicSolutions(int value)
Set number of heuristic solutions.
void setPreferredWay(int value)
Set global preferred way to branch -1 down, +1 up, 0 no preference.
int priority(int sequence) const
Returns priority level for an object (or 1000 if no priorities exist)
CbcCountRowCut ** addedCuts() const
Return the list of cuts initially collected for this subproblem.
int getFathomCount() const
Get how many times complete fathoming B&B was done.
void setOptionalInteger(int index)
Get the number of objects.
int numberFixedAtRoot_
Number of fixed by analyze at root.
virtual double getObjValue() const =0
Get the objective function value.
int getMaximumSolutions() const
Get the maximum number of solutions desired.
void makeGlobalCuts()
Make partial cuts into global cuts.
void assignSolver(OsiSolverInterface *&solver, bool deleteSolver=true)
Assign a solver to the model (model assumes ownership)
bool isInitialSolveProvenPrimalInfeasible() const
Is primal infeasiblity proven (for initialSolve) ?
int numberFathoms_
Number of times fast lp entered.
int randomSeed_
Random seed.
CbcCountRowCut ** addedCuts_
The list of cuts initially collected for this subproblem.
CbcModel * subTreeModel_
A pointer to model to be used for subtrees.
bool setAllowableFractionGap(double value)
Set the fraction allowable gap between the best known solution and the best possible solution...
int secondaryStatus() const
Secondary status of problem -1 unset (status_ will also be -1) 0 search completed with solution 1 lin...
void setMIPStart(const std::vector< std::pair< std::string, double > > &mips)
CbcStrategy * strategy() const
Get the current strategy.
const double * cbcRowLower_
Pointer to array[getNumRows()] (for speed) of row lower bounds.
bool ownObjects_
Now we may not own objects - just point to solver's objects.
CglStored * storedRowCuts() const
Get stored row cuts for donor/recipient CbcModel.
Smallest non-zero change on a branch.
CoinMessages & messages()
Return messages.
const double * getRowActivity() const
Get pointer to array[getNumRows()] of row activity levels.
CbcStrategy * strategy_
Strategy.
void goToDantzig(int numberNodes, ClpDualRowPivot *&savePivotMethod)
Go to dantzig pivot selection if easy problem (clp only)
double getCutoff() const
Get the cutoff bound on the objective function - always as minimize.
double getMinimizationObjValue() const
Get best objective function value as minimization.
void setCurrentPassNumber(int value)
Set current cut pass number in this round of cuts.
int CbcMain1(int argc, const char *argv[], CbcModel &babSolver)
CbcModel * heuristicModel_
A pointer to model from CbcHeuristic.
bool setInfeasibilityWeight(double value)
Set the weight per integer infeasibility .
double * hotstartSolution_
Hotstart solution.
void flipModel()
Flip direction of optimization on all models.
const double * getCbcColLower() const
Get pointer to array[getNumCols()] (for speed) of column lower bounds.
void incrementIterationCount(int value)
Increment how many iterations it took to solve the problem.
bool setIntegerTolerance(double value)
Set the integrality tolerance .
int numberSolves_
Cumulative number of solves.
const double * getCbcColUpper() const
Get pointer to array[getNumCols()] (for speed) of column upper bounds.
bool canStopOnGap() const
See if can stop on gap.
double * currentSolution() const
Solution to the most recent lp relaxation.
double bestPossibleObjective_
Best possible objective.
int numberSavedSolutions() const
Number of saved solutions (including best)
bool useElapsedTime() const
Get time method.
const double * cbcColUpper_
Pointer to array[getNumCols()] (for speed) of column upper bounds.
Class to deal with symmetry.
int stateOfSearch_
State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no soluti...
static bool haveMultiThreadSupport()
Indicates whether Cbc library has been compiled with multithreading support.
bool isSecondsLimitReached() const
Time limit reached?
bool setMaximumSeconds(double value)
Set the maximum number of seconds desired.
CbcEventHandler * eventHandler_
bool isInitialSolveProvenDualInfeasible() const
Is dual infeasiblity proven (for initialSolve) ?
void adjustHeuristics()
Adjust heuristics based on model.
int serialCuts(OsiCuts &cuts, CbcNode *node, OsiCuts &slackCuts, int lastNumberCuts)
Generate one round of cuts - serial mode returns - 0 - normal 1 - must keep going 2 - set numberTries...
int logLevel() const
Get log level.
virtual CbcBranchDecision * clone() const =0
Clone.
CbcFeasibilityBase * problemFeasibility_
User feasibility function (see CbcFeasibleBase.hpp)
void gutsOfDestructor2()
Clears out enough to reset CbcModel as if no branch and bound done.
double numberDJFixed_
Number of reduced cost fixings.
virtual int getNumRows() const =0
Get the number of rows.
void setContinuousPriority(int value)
Set anything with priority >= this can be treated as continuous.
int maximumNumberUpdateItems_
Maximum number of outstanding update information items.
int maximumCutPassesAtRoot_
Maximum number of cut passes at root.
void setObjectiveValue(CbcNode *thisNode, const CbcNode *parentNode) const
Set objective value in a node.
const double * getRowRange() const
Get pointer to array[getNumRows()] of row ranges.
void setCutoffAsConstraint(bool yesNo)
Set cutoff as constraint.
CglStored * storedRowCuts_
Stored row cuts for donor/recipient CbcModel.
double minimumDrop_
Minimum degradation in objective value to continue cut generation.
void setLanguage(CoinMessages::Language language)
Pass in Message handler (not deleted at end)
int parallelCuts(CbcBaseModel *master, OsiCuts &cuts, CbcNode *node, OsiCuts &slackCuts, int lastNumberCuts)
Generate one round of cuts - parallel mode returns - 0 - normal 1 - must keep going 2 - set numberTri...
int fastNodeDepth_
Depth for fast nodes.
int maximumSavedSolutions_
Maximum number of saved solutions.
const double * cbcRowUpper_
Pointer to array[getNumRows()] (for speed) of row upper bounds.
CglPreProcess * preProcess() const
Returns CglPreProcess used before branch and bound.
void setProblemStatus(int value)
Are there a numerical difficulties?
void setDefaultHandler(bool yesNo)
Set flag to say if handler_ is the default handler.
CbcNode * currentNode_
Current node so can be used elsewhere.
const OsiObject * object(int which) const
Get the specified object.
double penaltyScaleFactor_
Scale factor to make penalties match strong.
double getSolverObjValue() const
Get solver objective function value (as minimization)
int priority() const
Return Priority - note 1 is highest priority.
OsiRowCut * conflictCut(const OsiSolverInterface *solver, bool &localCuts)
Create conflict cut (well - most of)
void deleteSolutions()
Delete best and saved solutions.
void setBranchingMethod(CbcBranchDecision &method)
Set the branching method.
bool setDblParam(CbcDblParam key, double value)
Set a double parameter.
virtual CbcModel * clone(bool cloneHandler)
Clone.
void addHeuristic(CbcHeuristic *generator, const char *name=NULL, int before=-1)
Add one heuristic - up to user to delete.
virtual bool isContinuous(int colIndex) const =0
Return true if the variable is continuous.
virtual double checkSolution(double cutoff, double *solution, int fixVariables, double originalObjValue)
Call this to really test if a valid solution can be feasible Solution is number columns in size...
double getDblParam(CbcDblParam key) const
Get a double parameter.
int makeGlobalCut(const OsiRowCut *cut)
Make given cut into a global cut.
virtual const double * getColLower() const =0
Get a pointer to an array[getNumCols()] of column lower bounds.
const double * getRowUpper() const
Get pointer to array[getNumRows()] of row upper bounds.
int numberGlobalViolations_
Number of times global cuts violated.
void resetToReferenceSolver()
Uses a copy of reference solver to be current solver.
void saveExtraSolution(const double *solution, double objectiveValue)
Save a solution to saved list.
int numberGlobalViolations() const
Number of times global cuts violated.
int getNodeCount() const
Get how many Nodes it took to solve the problem (including those in complete fathoming B&B inside CLP...
void incrementNodeCount(int value)
Increment how many nodes it took to solve the problem.
virtual const CoinPackedMatrix * getMatrixByCol() const =0
Get a pointer to a column-wise copy of the matrix.
virtual CoinBigIndex getNumElements() const =0
Get the number of nonzero elements.
int * lastNumberCuts_
The solver associated with this model.
void setResolveAfterTakeOffCuts(bool yesNo)
Holds solution at continuous (after cuts if branchAndBound called)
void * temporaryPointer() const
Get useful temporary pointer.
int getMaximumCutPasses() const
Get the maximum number of cut passes at other nodes (default 10)
void setStrongStrategy(int value)
Set strong branching strategy.
int cutoffRowNumber_
-1 - cutoff as constraint not activated -2 - waiting to activate >=0 - activated
int problemType() const
Set an integer parameter.
CbcEventHandler * getEventHandler() const
Retrieve a pointer to the event handler.
int getSolutionCount() const
Get number of solutions.
int * integerVariable_
Indices of integer variables.
virtual const double * getColSolution() const =0
Get a pointer to an array[getNumCols()] of primal variable values.
int numberIntegers() const
Number of integers in problem.
void setHowOftenGlobalScan(int number)
Set how often to scan global cuts.
void * appData_
Pointer to user-defined data structure.
A class to encapsulate thread stuff.
int doOneNode(CbcModel *baseModel, CbcNode *&node, CbcNode *&newNode)
Do one node - broken out for clarity? also for parallel (when baseModel!=this) Returns 1 if solution ...
virtual bool isBinary(int colIndex) const
Return true if the variable is binary.
void convertToDynamic()
If numberBeforeTrust >0 then we are going to use CbcBranchDynamic.
void createContinuousSolver()
Create solver with continuous state.
int maximumNumberIterations() const
Get maximum number of iterations (designed to be used in heuristics)
void generateCpp(FILE *fp, int options)
Create C++ lines to get to current state.
The objective is assumed to worsen by this amount for each integer infeasibility. ...
OsiObject * modifiableObject(int which) const
Get the specified object.
void setStoredRowCuts(CglStored *cuts)
Set stored row cuts for donor/recipient CbcModel.
CoinWarmStartBasis & workingBasis()
Work basis for temporary use.
const double * testSolution() const
For testing infeasibilities - will point to currentSolution_ or solver–>getColSolution() ...
void setInfoInChild(int type, CbcThread *info)
Set information in a child -3 pass pointer to child thread info -2 just stop -1 delete simple child s...
void setNextRowCut(const OsiRowCut &cut)
Copy and set a pointer to a row cut which will be added instead of normal branching.
This is a first attempt at a message handler.
const char * integerType() const
Whether or not integer.
const int * whichGenerator() const
Which cut generator generated this cut.
CbcTree * tree() const
Tree method e.g. heap (which may be overridden by inheritance)
void setPointers(const OsiSolverInterface *solver)
Set pointers for speed.
int numberStrong_
Maximum number of candidates to consider for strong branching.
int reducedCostFix()
Perform reduced cost fixing.
CbcModel * heuristicModel() const
A pointer to model from CbcHeuristic.
CbcModel * integerPresolve(bool weak=false)
Do integer presolve, creating a new (presolved) model.
int preferredWay_
Preferred way of branching.
CglTreeProbingInfo * probingInfo() const
Get a pointer to probing info.
int getThreadMode() const
Get thread mode.
int getIntParam(CbcIntParam key) const
Get an integer parameter.
Abstract Base Class for describing an interface to a solver.
int getPrintingMode() const
Get the printing mode.
virtual ~CbcModel()
Destructor.
bool isLocked() const
From here to end of section - code in CbcThread.cpp until class changed Returns true if locked...
void setNumberHeuristics(int value)
Set the number of heuristics.
bool setMaximumSolutions(int value)
Set the maximum number of solutions desired.
void reserveCurrentSolution(const double *solution=NULL)
Make sure region there and optionally copy solution.
const double * getColLower() const
Get pointer to array[getNumCols()] of column lower bounds.
void passInMessageHandler(CoinMessageHandler *handler)
Pass in Message handler (not deleted at end)
int typePresolve() const
Whether to automatically do presolve before branch and bound (subTrees).
void setFastNodeDepth(int value)
Set depth for fast nodes.
int getExtraNodeCount() const
Get how many Nodes were enumerated in complete fathoming B&B inside CLP.
double dblParam_[CbcLastDblParam]
Array for double parameters.
CbcModel & operator=(const CbcModel &rhs)
Assignment operator.
int getIterationCount() const
Get how many iterations it took to solve the problem.
Cut Generator Base Class.
int numberOldActiveCuts_
Number of old active cuts.
int moreSpecialOptions2() const
Get more special options2.
const double * getColSolution() const
Get pointer to array[getNumCols()] of primal solution vector.
int numberSavedSolutions_
Number of saved solutions.
int specialOptions_
Special options 0 bit (1) - check if cuts valid (if on debugger list) 1 bit (2) - use current basis t...
Base class for Clp event handling.
const OsiBabSolver * solverCharacteristics() const
Get solver characteristics.
void * getApplicationData() const
Get application data.
int searchStrategy() const
Strategy worked out - mainly at root node for use by CbcNode.
double getHeuristicGap() const
Get the heuristic gap between the best known solution and the best possible solution.
char * integerInfo_
Whether of not integer.
void setStrategy(CbcStrategy *strategy)
Set the strategy. assigns.
void doHeuristicsAtRoot(int deleteHeuristicsAfterwards=0)
Do heuristics at root.
int moreSpecialOptions() const
Get more special options.
void setLastHeuristic(CbcHeuristic *last)
set last heuristic which found a solution
int numberHeuristics() const
Get the number of heuristics.
int presolve_
Presolve for CbcTreeLocal.
CbcNode * currentNode() const
Get a pointer to current node (be careful)
int numberStrongIterations() const
Get the number of iterations done in strong branching.
double getAllowablePercentageGap() const
Get the percentage allowable gap between the best known solution and the best possible solution...
int multipleRootTries_
Multiple root tries.
CbcModel()
Default Constructor.
double getObjSense() const
Get objective function sense (1 for min (default), -1 for max)
void initialSolve()
Solve the initial LP relaxation.
CglTreeProbingInfo * probingInfo_
Probing info.
void passInSubTreeModel(CbcModel &model)
For passing in an CbcModel to do a sub Tree (with derived tree handlers).
int numberFixedNow_
Number fixed by analyze so far.
CbcHeuristic * lastHeuristic_
Pointer to heuristic solver which found last solution (or NULL)
Class to hold and manipulate an array of massaged messages.
CbcEventHandler::CbcAction dealWithEventHandler(CbcEventHandler::CbcEvent event, double objValue, const double *solution)
Deals with event handler and solution.
int numberHeuristicSolutions_
Number of heuristic solutions.
CbcNodeInfo ** walkback_
Array used to assemble the path between a node and the search tree root.
const double * testSolution_
For testing infeasibilities - will point to currentSolution_ or solver–>getColSolution() ...
Validate cuts against a known solution.
double * bestSolution() const
The best solution to the integer programming problem.
bool isFreeBinary(int colIndex) const
Return true if variable is binary and not fixed at either bound.
void passInEventHandler(const CbcEventHandler *eventHandler)
Set an event handler.
CbcCutGenerator ** generator_
The solver associated with this model.
int stopNumberIterations_
For threads - stop after this many "iterations".
int callCbc(const char *input2, OsiClpSolverInterface &solver1)
const int * hotstartPriorities() const
Get the hotstart priorities.
Abstract base class for warm start information.
void setNumberBeforeTrust(int number)
Set the number of branches before pseudo costs believed in dynamic strong branching.
OsiSolverInterface * continuousSolver_
A copy of the solver, taken at the continuous (root) node.
CbcCompareBase * nodeCompare_
User node comparison function.
bool resolveAfterTakeOffCuts() const
Whether to force a resolve after takeOffCuts.
CbcBranchDecision * branchingMethod_
Variable selection function.
double getBestPossibleObjValue() const
Get best possible objective function value.
int numberStrong() const
Get the maximum number of candidates to be evaluated for strong branching.
double bestObjective_
Best objective.
void setCutoff(double value)
Set cutoff bound on the objective function.
void setSecondaryStatus(int value)
Are there a numerical difficulties?
virtual double getInfinity() const =0
Get the solver's value for infinity.
int numberExtraIterations_
Number of extra iterations in fast lp.
CbcCutGenerator * virginCutGenerator(int i) const
Get the specified cut generator before any changes.
void pseudoShadow(int type)
Fill in useful estimates.
void setWhenCuts(int value)
Set at which depths to do cuts.
int strongStrategy() const
Stong branching strategy.
int phase() const
Current phase (so heuristics etc etc can find out).
CbcCutModifier * cutModifier() const
Get the current cut modifier method.
double * analyzeResults_
Arrays with analysis results.
Class for thread specific random numbers.
CbcCutGenerator ** virginGenerator_
The solver associated with this model.
CbcNode ** solveOneNode(int whichSolver, CbcNode *node, int &numberNodesOutput, int &status)
Input one node output N nodes to put on tree and optional solution update This should be able to oper...
int problemType_
Problem type as set by user or found by analysis.
void setNumberThreads(int value)
Set number of threads.
int moreSpecialOptions_
More special options at present bottom 6 bits used for shadow price mode 1024 for experimental hotsta...
void setContinuousObjective(double value)
Holds solution at continuous (after cuts if branchAndBound called)
The time at start of model.
const CbcFullNodeInfo * topOfTree() const
Pointer to top of tree.
const std::vector< std::pair< std::string, double > > & getMIPStart()
int * usedInSolution() const
Array marked whenever a solution is found if non-zero.
double * continuousSolution() const
Holds solution at continuous (after cuts if branchAndBound called)
int numberGlobalCutsIn_
Number of global cuts on entry to a node.
bool isInteger(int colIndex) const
Return true if column is integer.
virtual OsiSolverInterface * clone(bool copyData=true) const =0
Clone.
CbcCutGenerator * cutGenerator(int i) const
Get the specified cut generator.
int printFrequency_
Print frequency.
void incrementUsed(const double *solution)
Increases usedInSolution for nonzeros.
CbcSymmetry * symmetryInfo_
Symmetry information.
int status() const
Final status of problem Some of these can be found out by is......
CbcModel * parentModel_
Parent model.
OsiSolverInterface * continuousSolver() const
Returns solver with continuous state.
void addObjects(int numberObjects, OsiObject **objects)
Add in object information.
double sumChangeObjective() const
Sum of Changes to objective by first solve.
Stop when the gap between the objective value of the best known solution and the best bound on the ob...
virtual const double * getRowPrice() const =0
Get pointer to array[getNumRows()] of dual variable values.
int chooseBranch(CbcNode *&newNode, int numberPassesLeft, CbcNode *oldNode, OsiCuts &cuts, bool &resolved, CoinWarmStartBasis *lastws, const double *lowerBefore, const double *upperBefore, OsiSolverBranch *&branches)
Encapsulates choosing a variable - anyAction -2, infeasible (-1 round again), 0 done.
double sumChangeObjective1_
Sum of Changes to objective by first solve.
CbcModel * parentModel() const
Get the current parent model.
bool isProvenInfeasible() const
Is infeasiblity proven (or none better than cutoff)?
virtual bool isInteger(int colIndex) const
Return true if the variable is integer.
void setPreProcess(CglPreProcess *preProcess)
Set CglPreProcess used before branch and bound.
bool setAllowableGap(double value)
Set the allowable gap between the best known solution and the best possible solution.
void makePartialCut(const OsiRowCut *cut, const OsiSolverInterface *solver=NULL)
Make partial cut into a global cut and save.
void setRandomSeed(int value)
Set random seed.
void setTypePresolve(int value)
Tree method e.g. heap (which may be overridden by inheritance)
char * setupCleanVariables()
Sets up cleanVariables array (i.e. ones to be careful about)
int cleanBounds(OsiSolverInterface *solver, char *cleanVariables)
Clean model i.e.
virtual bool isFreeBinary(int colIndex) const
Return true if the variable is binary and not fixed.
OsiBabSolver * solverCharacteristics_
For advanced applications you may wish to modify the behavior of Cbc e.g.
int status_
Status of problem - 0 finished, 1 stopped, 2 difficulties.
int * mutableStrongInfo()
Return mutable strong info.
int currentNumberCuts() const
Number of entries in the list returned by addedCuts()
void resizeWhichGenerator(int numberNow, int numberAfter)
Update size of whichGenerator.
int numberAnalyzeIterations_
Number of analyze iterations to do.
double * currentSolution_
Array holding the current solution.
double getAllowableGap() const
Get the allowable gap between the best known solution and the best possible solution.
void setSpecialOptions(int value)
Set special options 0 bit (1) - check if cuts valid (if on debugger list) 1 bit (2) - use current bas...
Information required while the node is live.
Using MS heap implementation.
void setMinimumDrop(double value)
Set the minimum drop to continue cuts.
void setMaximumNumberIterations(int value)
Set maximum number of iterations (designed to be used in heuristics)
void synchronizeHandlers(int makeDefault)
Makes all handlers same.
void setLogLevel(int value)
Set log level.
OsiObject ** object_
Integer and Clique and ...
Stored Cut Generator Class.
bool setIntParam(CbcIntParam key, int value)
Set an integer parameter.
const CoinPackedMatrix * getMatrixByRow() const
Get pointer to row-wise copy of matrix.
void setCutModifier(CbcCutModifier *modifier)
Set the cut modifier method.
void zeroExtra()
Zero extra.
bool isBinary(int colIndex) const
Return true if variable is binary.
int maximumNumberCuts_
Maximum number of cuts.
void setThreadMode(int value)
Set thread mode always use numberThreads for branching 1 set then deterministic 2 set then use number...
void setKeepNamesPreproc(bool _keep)
if original column names will be preserved in preprocessed problem
void setOriginalColumns(const int *originalColumns, int numberGood=COIN_INT_MAX)
Set original columns as created by preprocessing.
int addCuts(CbcNode *node, CoinWarmStartBasis *&lastws)
Determine and install the active cuts that need to be added for the current subproblem.
int parallelMode() const
Return -2 if deterministic threaded and main thread -1 if deterministic threaded and serial thread 0 ...
CbcStatistics ** statistics_
statistics
void branchAndBound(int doStatistics=0)
Invoke the branch & cut algorithm.
void getIntegerInformation(const OsiObject *object, double &originalLower, double &originalUpper)
So we can use osiObject or CbcObject during transition.
CBC_Message
This deals with Cbc messages (as against Clp messages etc).
bool stoppedOnGap_
Whether stopping on gap.
CbcFullNodeInfo * topOfTree_
Pointer to top of tree.
int numberCutGenerators_
Number of cut generators.
int lastDepth_
The solver associated with this model.
int threadMode_
thread mode always use numberThreads for branching 1 set then deterministic 2 set then use numberThre...
OsiRowCut augmented with bookkeeping.
Abstract base class for `objects'.
int numberNodes2_
Cumulative number of nodes for statistics.
void setUseElapsedTime(bool yesNo)
Set time method.
int getRandomSeed() const
Get random seed.
int * originalColumns() const
Original columns as created by integerPresolve or preprocessing.
void setBestObjectiveValue(double objectiveValue)
Just update objectiveValue.
bool resolveAfterTakeOffCuts_
Whether to force a resolve after takeOffCuts.
const double * getReducedCost() const
Get a pointer to array[getNumCols()] of reduced costs.
double getCurrentObjValue() const
Get current objective function value.
double getMaximumSeconds() const
Get the maximum number of seconds desired.
double getCurrentMinimizationObjValue() const
Get current minimization objective function value.
double getAllowableFractionGap() const
Get the fraction allowable gap between the best known solution and the best possible solution...
int searchStrategy_
Strategy worked out - mainly at root node.
void setBestSolutionBasis(const CoinWarmStartBasis &bestSolutionBasis)
Warm start object produced by heuristic or strong branching.
void saveSolution(const ClpSimplex *lpSolver, std::string fileName)
int numberCutGenerators() const
Get the number of cut generators.
int printFrequency() const
Get the print frequency.
int cliquePseudoCosts(int doStatistics)
Use cliques for pseudocost information - return nonzero if infeasible.
const double * getRowPrice() const
Get pointer to array[getNumRows()] of dual prices.
int getNumRows() const
Get number of rows.
int takeOffCuts(OsiCuts &cuts, bool allowResolve, OsiCuts *saveCuts, int numberNewCuts=0, const OsiRowCut **newCuts=NULL)
Remove inactive cuts from the model.
int continuousInfeasibilities_
Number of infeasibilities at continuous.
int numberBeforeTrust() const
get the number of branches before pseudo costs believed in dynamic strong branching.
CbcEvent
Events known to cbc.
unsigned int ownership_
Ownership of objects and other stuff.
bool tightenVubs(int type, bool allowMultipleBinary=false, double useCutoff=1.0e50)
For variables involved in VUB constraints, see if we can tighten bounds by solving lp's...
void passInPriorities(const int *priorities, bool ifNotSimpleIntegers)
Pass in branching priorities.
int numberNodes_
Cumulative number of nodes.
virtual bool isIntegerNonBinary(int colIndex) const
Return true if the variable is general integer.
Language
Supported languages.
int numberNewCuts_
Number of new cuts.
void clearContinuousSolver()
Clear solver with continuous state.
void setPrintFrequency(int number)
Set the print frequency.
void synchronizeModel()
Ensure attached objects point to this model.
void lockThread()
Get pointer to masterthread.
void setMoreSpecialOptions(int value)
Set more special options at present bottom 6 bits used for shadow price mode 1024 for experimental ho...
bool getKeepNamesPreproc() const
double getCutoffIncrement() const
Get the CbcModel::CbcCutoffIncrement desired.
int fastNodeDepth() const
Get depth for fast nodes.
void setStateOfSearch(int state)
State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no soluti...
double getCurrentSeconds() const
Current time since start of branchAndbound.
void findIntegers(bool startAgain, int type=0)
Identify integer variables and create corresponding objects.
CbcBranchDecision * branchingMethod() const
Get the current branching decision method.
The default COIN simplex (basis-oriented) warm start class.
int getNodeCount2() const
Get how many Nodes it took to solve the problem.
int continuousPriority() const
Get anything with priority >= this can be treated as continuous.
Stop doing heuristics when the gap between the objective value of the best known solution and the bes...
OsiSolverInterface * referenceSolver_
A copy of the solver, taken at constructor or by saveReferenceSolver.
void setParentModel(CbcModel &parentModel)
Set the parent model.
void setMinimizationObjValue(double value)
Set best objective function value as minimization.
CbcHeuristic * heuristic(int i) const
Get the specified heuristic.
Number of branches (may be more than number of nodes as may include strong branching) ...
void incrementSubTreeStopped()
Says a sub tree was stopped.
void originalModel(CbcModel *presolvedModel, bool weak)
Put back information into the original model after integer presolve.
OsiObject ** objects() const
Get the array of objects.
Simple Branch and bound class.
CbcNodeInfo ** walkback() const
Get pointer to walkback.
bool normalSolver() const
Says if normal solver i.e. has well defined CoinPackedMatrix.
void setObjValue(double value)
Set best objective function value.
const double * getColUpper() const
Get pointer to array[getNumCols()] of column upper bounds.
int getContinuousInfeasibilities() const
Number of infeasibilities at continuous.
void AddIntegers()
Add additional integers.
bool eventHappened_
Whether event happened.
int howOftenGlobalScan_
How often to scan global cuts.
void setTemporaryPointer(void *pointer)
Set useful temporary pointer.
int resolve(CbcNodeInfo *parent, int whereFrom, double *saveSolution=NULL, double *saveLower=NULL, double *saveUpper=NULL)
Reoptimise an LP relaxation.
int numberInfeasibleNodes_
Number of nodes infeasible by normal branching (before cuts)
int whenCuts() const
Get at which depths to do cuts.
int maximumDepthActual_
Maximum depth reached.
bool isInitialSolveAbandoned() const
Are there numerical difficulties (for initialSolve) ?
CbcRowCuts globalCuts_
Global cuts.
int phase_
Current phase (so heuristics etc etc can find out).
const double * getObjCoefficients() const
Get pointer to array[getNumCols()] of objective function coefficients.
int maximumNumberIterations_
Maximum number of iterations (designed to be used in heuristics)
bool maximumSecondsReached() const
Return true if maximum time reached.
bool allDynamic() const
Says whether all dynamic integers.
void startSplitModel(int numberIterations)
Start threads.
int numberExtraNodes_
Number of extra nodes in fast lp.
Interface between Cbc and Cut Generation Library.