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