CbcModel Class Reference

Simple Branch and bound class. More...

#include <CbcModel.hpp>

Collaboration diagram for CbcModel:

Collaboration graph
[legend]
List of all members.

Solve methods

void initialSolve ()
 Solve the initial LP relaxation.
void branchAndBound (int doStatistics=0)
 Invoke the branch & cut algorithm.
CbcModelcleanModel (const double *lower, const double *upper)
 create a clean model from partially fixed problem
int subBranchAndBound (CbcModel *model2, CbcModel *presolvedModel, int maximumNodes)
 Invoke the branch & cut algorithm on partially fixed problem.
int subBranchAndBound (const double *lower, const double *upper, int maximumNodes)
 Invoke the branch & cut algorithm on partially fixed problem.
OsiSolverInterfacestrengthenedModel ()
 Process root node and return a strengthened model.
int resolve (CbcNodeInfo *parent, int whereFrom)
 Reoptimise an LP relaxation.
void makeGlobalCuts (int numberRows, const int *which)
 Make given rows (L or G) into global cuts and remove from lp.
bool solveWithCuts (OsiCuts &cuts, int numberTries, CbcNode *node)
 Evaluate a subproblem using cutting planes and heuristics.
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 operate in parallel so is given a solver and is const(ish) However we will need to keep an array of solver_ and bases and more status is 0 for normal, 1 if solution Calling code should always push nodes back on tree.
void resizeWhichGenerator (int numberNow, int numberAfter)
 Update size of whichGenerator.

Public Types

 CbcMaxNumNode = 0
 The maximum number of nodes before terminating.
 CbcMaxNumSol
 The maximum number of solutions before terminating.
 CbcFathomDiscipline
 Fathoming discipline.
 CbcLastIntParam
 Just a marker, so that a static sized array can store parameters.
 CbcIntegerTolerance = 0
 The maximum amount the value of an integer variable can vary from integer and still be considered feasible.
 CbcInfeasibilityWeight
 The objective is assumed to worsen by this amount for each integer infeasibility.
 CbcCutoffIncrement
 The amount by which to tighten the objective function cutoff when a new solution is discovered.
 CbcAllowableGap
 Stop when the gap between the objective value of the best known solution and the best bound on the objective of any solution is less than this.
 CbcAllowableFractionGap
 Stop when the gap between the objective value of the best known solution and the best bound on the objective of any solution is less than this fraction of of the absolute value of best known solution.
 CbcMaximumSeconds
 The maximum number of seconds before terminating.
 CbcCurrentCutoff
 Cutoff - stored for speed.
 CbcOptimizationDirection
 Optimization direction - stored for speed.
 CbcCurrentObjectiveValue
 Current objective value.
 CbcCurrentMinimizationObjectiveValue
 Current minimization objective value.
 CbcStartSeconds
 The time at start of model.
 CbcLastDblParam
 Just a marker, so that a static sized array can store parameters.
enum  CbcIntParam { CbcMaxNumNode = 0, CbcMaxNumSol, CbcFathomDiscipline, CbcLastIntParam }
enum  CbcDblParam {
  CbcIntegerTolerance = 0, CbcInfeasibilityWeight, CbcCutoffIncrement, CbcAllowableGap,
  CbcAllowableFractionGap, CbcMaximumSeconds, CbcCurrentCutoff, CbcOptimizationDirection,
  CbcCurrentObjectiveValue, CbcCurrentMinimizationObjectiveValue, CbcStartSeconds, CbcLastDblParam
}

Public Member Functions

Presolve methods
CbcModelfindCliques (bool makeEquality, int atLeastThisMany, int lessThanThis, int defaultValue=1000)
 Identify cliques and construct corresponding objects.
CbcModelintegerPresolve (bool weak=false)
 Do integer presolve, creating a new (presolved) model.
bool integerPresolveThisModel (OsiSolverInterface *originalSolver, bool weak=false)
 Do integer presolve, modifying the current model.
void originalModel (CbcModel *presolvedModel, bool weak)
 Put back information into the original model after integer presolve.
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.
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.
void analyzeObjective ()
 Analyze problem to find a minimum change in the objective function.
Object manipulation routines
See CbcObject for an explanation of `object' in the context of CbcModel.

int numberObjects () const
 Get the number of objects.
void setNumberObjects (int number)
 Set the number of objects.
CbcObject ** objects () const
 Get the array of objects.
const CbcObjectobject (int which) const
 Get the specified object.
CbcObjectmodifiableObject (int which) const
 Get the specified object.
void deleteObjects ()
 Delete all object information.
void addObjects (int numberObjects, CbcObject **objects)
 Add in object information.
void synchronizeModel ()
 Ensure attached objects point to this model.
void findIntegers (bool startAgain, int type=0)
 Identify integer variables and create corresponding objects.
Parameter set/get methods
The set methods return true if the parameter was set to the given value, false if the value of the parameter is out of range.

The get methods return the value of the parameter.

bool setIntParam (CbcIntParam key, int value)
 Set an integer parameter.
bool setDblParam (CbcDblParam key, double value)
 Set a double parameter.
int getIntParam (CbcIntParam key) const
 Get an integer parameter.
double getDblParam (CbcDblParam key) const
 Get a double parameter.
void setCutoff (double value)
 Set cutoff bound on the objective function.
double getCutoff () const
 Get the cutoff bound on the objective function - always as minimize.
bool setMaximumNodes (int value)
 Set the maximum node limit .
int getMaximumNodes () const
 Get the maximum node limit .
bool setMaximumSolutions (int value)
 Set the maximum number of solutions desired.
int getMaximumSolutions () const
 Get the maximum number of solutions desired.
bool setMaximumSeconds (double value)
 Set the maximum number of seconds desired.
double getMaximumSeconds () const
 Get the maximum number of seconds desired.
double getCurrentSeconds () const
 Current time since start of branchAndbound.
bool setIntegerTolerance (double value)
 Set the integrality tolerance .
double getIntegerTolerance () const
 Get the integrality tolerance .
bool setInfeasibilityWeight (double value)
 Set the weight per integer infeasibility .
double getInfeasibilityWeight () const
 Get the weight per integer infeasibility .
bool setAllowableGap (double value)
 Set the allowable gap between the best known solution and the best possible solution.
double getAllowableGap () const
 Get the allowable gap between the best known solution and the best possible solution.
bool setAllowableFractionGap (double value)
 Set the fraction allowable gap between the best known solution and the best possible solution.
double getAllowableFractionGap () const
 Get the fraction allowable gap between the best known solution and the best possible solution.
bool setAllowablePercentageGap (double value)
 Set the percentage allowable gap between the best known solution and the best possible solution.
double getAllowablePercentageGap () const
 Get the percentage allowable gap between the best known solution and the best possible solution.
bool setCutoffIncrement (double value)
 Set the CbcModel::CbcCutoffIncrement desired.
double getCutoffIncrement () const
 Get the CbcModel::CbcCutoffIncrement desired.
void setHotstartSolution (const double *solution, const int *priorities=NULL)
 Pass in target solution and optional priorities.
void setMinimumDrop (double value)
 Set the minimum drop to continue cuts.
double getMinimumDrop () const
 Get the minimum drop to continue cuts.
void setMaximumCutPassesAtRoot (int value)
 Set the maximum number of cut passes at root node (default 20) Minimum drop can also be used for fine tuning.
int getMaximumCutPassesAtRoot () const
 Get the maximum number of cut passes at root node.
void setMaximumCutPasses (int value)
 Set the maximum number of cut passes at other nodes (default 10) Minimum drop can also be used for fine tuning.
int getMaximumCutPasses () const
 Get the maximum number of cut passes at other nodes (default 10).
int getCurrentPassNumber () const
 Get current cut pass number in this round of cuts.
void setNumberStrong (int number)
 Set the maximum number of candidates to be evaluated for strong branching.
int numberStrong () const
 Get the maximum number of candidates to be evaluated for strong branching.
void setSizeMiniTree (int value)
 Set size of mini - tree.
int sizeMiniTree () const
 Set an integer parameter.
void setNumberBeforeTrust (int number)
 Set the number of branches before pseudo costs believed in dynamic strong branching.
int numberBeforeTrust () const
 get the number of branches before pseudo costs believed in dynamic strong branching.
void setNumberPenalties (int number)
 Set the number of variables for which to compute penalties in dynamic strong branching.
int numberPenalties () const
 get the number of variables for which to compute penalties in dynamic strong branching.
void setNumberAnalyzeIterations (int number)
 Number of analyze iterations to do.
int numberAnalyzeIterations () const
 Set an integer parameter.
double penaltyScaleFactor () const
 Get scale factor to make penalties match strong.
void setPenaltyScaleFactor (double value)
 Set scale factor to make penalties match strong.
void setProblemType (int number)
 Problem type as set by user or found by analysis.
int problemType () const
 Set an integer parameter.
void setHowOftenGlobalScan (int number)
 Set how often to scan global cuts.
int howOftenGlobalScan () const
 Get how often to scan global cuts.
int * originalColumns () const
 Original columns as created by integerPresolve.
void setPrintFrequency (int number)
 Set the print frequency.
int printFrequency () const
 Get the print frequency.
Methods returning info on how the solution process terminated
bool isAbandoned () const
 Are there a numerical difficulties?
bool isProvenOptimal () const
 Is optimality proven?
bool isProvenInfeasible () const
 Is infeasiblity proven (or none better than cutoff)?
bool isNodeLimitReached () const
 Node limit reached?
bool isSecondsLimitReached () const
 Time limit reached?
bool isSolutionLimitReached () const
 Solution limit reached?
int getIterationCount () const
 Get how many iterations it took to solve the problem.
int getNodeCount () const
 Get how many Nodes it took to solve the problem.
int status () const
 Final status of problem Some of these can be found out by is.
int secondaryStatus () const
 Secondary status of problem -1 unset (status_ will also be -1) 0 search completed with solution 1 linear relaxation not feasible (or worse than cutoff) 2 stopped on gap 3 stopped on nodes 4 stopped on time 5 stopped on user event 6 stopped on solutions.
bool isInitialSolveAbandoned () const
 Are there numerical difficulties (for initialSolve) ?
bool isInitialSolveProvenOptimal () const
 Is optimality proven (for initialSolve) ?
bool isInitialSolveProvenPrimalInfeasible () const
 Is primal infeasiblity proven (for initialSolve) ?
bool isInitialSolveProvenDualInfeasible () const
 Is dual infeasiblity proven (for initialSolve) ?
Problem information methods
These methods call the solver's query routines to return information about the problem referred to by the current object. Querying a problem that has no data associated with it result in zeros for the number of rows and columns, and NULL pointers from the methods that return vectors.

Const pointers returned from any data-query method are valid as long as the data is unchanged and the solver is not called.

int numberRowsAtContinuous () const
 Number of rows in continuous (root) problem.
int getNumCols () const
 Get number of columns.
int getNumRows () const
 Get number of rows.
CoinBigIndex getNumElements () const
 Get number of nonzero elements.
int numberIntegers () const
 Number of integers in problem.
const int * integerVariable () const
 Number of rows in continuous (root) problem.
const char integerType (int i) const
 Whether or not integer.
const char * integerType () const
 Whether or not integer.
const double * getColLower () const
 Get pointer to array[getNumCols()] of column lower bounds.
const double * getColUpper () const
 Get pointer to array[getNumCols()] of column upper bounds.
const char * getRowSense () const
 Get pointer to array[getNumRows()] of row constraint senses.
const double * getRightHandSide () const
 Get pointer to array[getNumRows()] of rows right-hand sides.
const double * getRowRange () const
 Get pointer to array[getNumRows()] of row ranges.
const double * getRowLower () const
 Get pointer to array[getNumRows()] of row lower bounds.
const double * getRowUpper () const
 Get pointer to array[getNumRows()] of row upper bounds.
const double * getObjCoefficients () const
 Get pointer to array[getNumCols()] of objective function coefficients.
double getObjSense () const
 Get objective function sense (1 for min (default), -1 for max).
bool isContinuous (int colIndex) const
 Return true if variable is continuous.
bool isBinary (int colIndex) const
 Return true if variable is binary.
bool isInteger (int colIndex) const
 Return true if column is integer.
bool isIntegerNonBinary (int colIndex) const
 Return true if variable is general integer.
bool isFreeBinary (int colIndex) const
 Return true if variable is binary and not fixed at either bound.
const CoinPackedMatrixgetMatrixByRow () const
 Get pointer to row-wise copy of matrix.
const CoinPackedMatrixgetMatrixByCol () const
 Get pointer to column-wise copy of matrix.
double getInfinity () const
 Get solver's value for infinity.
const double * getCbcColLower () const
 Get pointer to array[getNumCols()] (for speed) of column lower bounds.
const double * getCbcColUpper () const
 Get pointer to array[getNumCols()] (for speed) of column upper bounds.
const double * getCbcRowLower () const
 Get pointer to array[getNumRows()] (for speed) of row lower bounds.
const double * getCbcRowUpper () const
 Get pointer to array[getNumRows()] (for speed) of row upper bounds.
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.
const double * getCbcReducedCost () const
 Get a pointer to array[getNumCols()] (for speed) of reduced costs.
const double * getCbcRowActivity () const
 Get pointer to array[getNumRows()] (for speed) of row activity levels.
Methods related to querying the solution
double * continuousSolution () const
 Holds solution at continuous (after cuts if branchAndBound called).
int * usedInSolution () const
 Array marked whenever a solution is found if non-zero.
void incrementUsed (const double *solution)
 Increases usedInSolution for nonzeros.
void setBestSolution (CBC_Message how, double &objectiveValue, const double *solution, bool fixVariables=false)
 Record a new incumbent solution and update objectiveValue.
void setBestObjectiveValue (double objectiveValue)
 Just update objectiveValue.
double checkSolution (double cutoff, const double *solution, bool fixVariables, double originalObjValue)
 Call this to really test if a valid solution can be feasible Solution is number columns in size.
bool feasibleSolution (int &numberIntegerInfeasibilities, int &numberObjectInfeasibilities) const
 Test the current solution for feasiblility.
double * currentSolution () const
 Solution to the most recent lp relaxation.
const double * testSolution () const
 For testing infeasibilities - will point to currentSolution_ or solver-->getColSolution().
void setTestSolution (const double *solution)
 Holds solution at continuous (after cuts if branchAndBound called).
void reserveCurrentSolution (const double *solution=NULL)
 Make sure region there and optionally copy solution.
const double * getColSolution () const
 Get pointer to array[getNumCols()] of primal solution vector.
const double * getRowPrice () const
 Get pointer to array[getNumRows()] of dual prices.
const double * getReducedCost () const
 Get a pointer to array[getNumCols()] of reduced costs.
const double * getRowActivity () const
 Get pointer to array[getNumRows()] of row activity levels.
double getCurrentObjValue () const
 Get current objective function value.
double getCurrentMinimizationObjValue () const
 Get current minimization objective function value.
double getMinimizationObjValue () const
 Get best objective function value as minimization.
void setMinimizationObjValue (double value)
 Set best objective function value as minimization.
double getObjValue () const
 Get best objective function value.
double getBestPossibleObjValue () const
 Get best possible objective function value.
void setObjValue (double value)
 Set best objective function value.
double * bestSolution () const
 The best solution to the integer programming problem.
int getSolutionCount () const
 Get number of solutions.
void setSolutionCount (int value)
 Set number of solutions (so heuristics will be different).
int phase () const
 Current phase (so heuristics etc etc can find out).
int getNumberHeuristicSolutions () const
 Get number of heuristic solutions.
void setObjSense (double s)
 Set objective function sense (1 for min (default), -1 for max,).
double getContinuousObjective () const
 Value of objective at continuous.
void setContinuousObjective (double value)
 Holds solution at continuous (after cuts if branchAndBound called).
int getContinuousInfeasibilities () const
 Number of infeasibilities at continuous.
void setContinuousInfeasibilities (int value)
 Holds solution at continuous (after cuts if branchAndBound called).
double rootObjectiveAfterCuts () const
 Value of objective after root node cuts added.
double sumChangeObjective () const
 Sum of Changes to objective by first solve.
int numberGlobalViolations () const
 Number of times global cuts violated.
void clearNumberGlobalViolations ()
 Holds solution at continuous (after cuts if branchAndBound called).
bool resolveAfterTakeOffCuts () const
 Whether to force a resolve after takeOffCuts.
void setResolveAfterTakeOffCuts (bool yesNo)
 Holds solution at continuous (after cuts if branchAndBound called).
Node selection
CbcCompareBasenodeComparison () const
void setNodeComparison (CbcCompareBase *compare)
void setNodeComparison (CbcCompareBase &compare)
Problem feasibility checking
CbcFeasibilityBaseproblemFeasibility () const
void setProblemFeasibility (CbcFeasibilityBase *feasibility)
void setProblemFeasibility (CbcFeasibilityBase &feasibility)
Tree methods and subtree methods
CbcTreetree () const
 Tree method e.g. heap (which may be overridden by inheritance).
void passInTreeHandler (CbcTree &tree)
 For modifying tree handling (original is cloned).
void passInSubTreeModel (CbcModel &model)
 For passing in an CbcModel to do a sub Tree (with derived tree handlers).
CbcModelsubTreeModel (OsiSolverInterface *solver=NULL) const
 For retrieving a copy of subtree model with given OsiSolver.
int numberStoppedSubTrees () const
 Returns number of times any subtree stopped on nodes, time etc.
void incrementSubTreeStopped ()
 Says a sub tree was stopped.
int typePresolve () const
 Whether to automatically do presolve before branch and bound (subTrees).
void setTypePresolve (int value)
 Tree method e.g. heap (which may be overridden by inheritance).
Branching Decisions
See the CbcBranchDecision class for additional information.

CbcBranchDecisionbranchingMethod () const
 Get the current branching decision method.
void setBranchingMethod (CbcBranchDecision *method)
 Set the branching decision method.
void setBranchingMethod (CbcBranchDecision &method)
 Set the branching method.
Row (constraint) and Column (variable) cut generation
int stateOfSearch () const
 State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no solution but many nodes.
void setStateOfSearch (int state)
 State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no solution but many nodes.
int searchStrategy () const
 Strategy worked out - mainly at root node for use by CbcNode.
void setSearchStrategy (int value)
 Set strategy worked out - mainly at root node for use by CbcNode.
int numberCutGenerators () const
 Get the number of cut generators.
CbcCutGenerator ** cutGenerators () const
 Get the list of cut generators.
CbcCutGeneratorcutGenerator (int i) const
 Get the specified cut generator.
CbcCutGeneratorvirginCutGenerator (int i) const
 Get the specified cut generator before any changes.
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.
Strategy and sub models
See the CbcStrategy class for additional information.

CbcStrategystrategy () const
 Get the current strategy.
void setStrategy (CbcStrategy &strategy)
 Set the strategy. Clones.
CbcModelparentModel () const
 Get the current parent model.
void setParentModel (CbcModel &parentModel)
 Set the parent model.
Heuristics and priorities
void addHeuristic (CbcHeuristic *generator)
 Add one heuristic - up to user to delete.
CbcHeuristicheuristic (int i) const
 Get the specified heuristic.
int numberHeuristics () const
 Get the number of heuristics.
CbcHeuristiclastHeuristic () const
 Pointer to heuristic solver which found last solution (or NULL).
void setLastHeuristic (CbcHeuristic *last)
 set last heuristic which found a solution
void passInPriorities (const int *priorities, bool ifNotSimpleIntegers)
 Pass in branching priorities.
int priority (int sequence) const
 Returns priority level for an object (or 1000 if no priorities exist).
void passInEventHandler (const CbcEventHandler *eventHandler)
 Set an event handler.
CbcEventHandlergetEventHandler () const
 Retrieve a pointer to the event handler.
Setting/Accessing application data
void setApplicationData (void *appData)
 Set application data.
void * getApplicationData () const
 Get application data.
void passInSolverCharacteristics (OsiBabSolver *solverCharacteristics)
 For advanced applications you may wish to modify the behavior of Cbc e.g.
const OsiBabSolversolverCharacteristics () const
 Get solver characteristics.
Message handling
void passInMessageHandler (CoinMessageHandler *handler)
 Pass in Message handler (not deleted at end).
void newLanguage (CoinMessages::Language language)
 Set language.
void setLanguage (CoinMessages::Language language)
 Pass in Message handler (not deleted at end).
CoinMessageHandlermessageHandler () const
 Return handler.
CoinMessages messages ()
 Return messages.
CoinMessagesmessagesPointer ()
 Return pointer to messages.
void setLogLevel (int value)
 Set log level.
int logLevel () const
 Get log level.
Specialized
void setSpecialOptions (int value)
 Set special options.
int specialOptions () const
 Get special options.
Constructors and destructors etc
 CbcModel ()
 Default Constructor.
 CbcModel (const OsiSolverInterface &)
 Constructor from solver.
void assignSolver (OsiSolverInterface *&solver, bool deleteSolver=true)
 Assign a solver to the model (model assumes ownership).
 CbcModel (const CbcModel &rhs, bool noTree=false)
 Copy constructor .
CbcModeloperator= (const CbcModel &rhs)
 Assignment operator.
 ~CbcModel ()
 Destructor.
OsiSolverInterfacesolver () const
 Returns solver - has current state.
OsiSolverInterfacecontinuousSolver () const
 Returns solver with continuous state.
OsiSolverInterfacereferenceSolver () const
 A copy of the solver, taken at constructor or by saveReferenceSolver.
void saveReferenceSolver ()
 Save a copy of the current solver so can be reset to.
void resetToReferenceSolver ()
 Uses a copy of reference solver to be current solver.
void gutsOfDestructor ()
 Clears out as much as possible (except solver).
void gutsOfDestructor2 ()
 Clears out enough to reset CbcModel as if no branch and bound done.
int getNodeCount2 () const
 Get how many Nodes it took to solve the problem.
void setPointers (const OsiSolverInterface *solver)
 Set pointers for speed.
int reducedCostFix ()
 Perform reduced cost fixing.
CoinWarmStartBasisgetEmptyBasis (int ns=0, int na=0) const
 Return an empty basis object of the specified size.
void takeOffCuts (OsiCuts &cuts, bool allowResolve, OsiCuts *saveCuts)
 Remove inactive cuts from the model.
int addCuts (CbcNode *node, CoinWarmStartBasis *&lastws, bool canFix)
 Determine and install the active cuts that need to be added for the current subproblem.
void addCuts1 (CbcNode *node, CoinWarmStartBasis *&lastws)
 Traverse the tree from node to root and prep the model.
void setObjectiveValue (CbcNode *thisNode, const CbcNode *parentNode) const
 Set objective value in a node.
void convertToDynamic ()
 If numberBeforeTrust >0 then we are going to use CbcBranchDynamic.
int cliquePseudoCosts (int doStatistics)
 Use cliques for pseudocost information - return nonzero if infeasible.
void pseudoShadow (double *down, double *up)
 Fill in useful estimates.
const double * hotstartSolution () const
 Get the hotstart solution.
const int * hotstartPriorities () const
 Get the hotstart priorities.
CbcCountRowCut ** addedCuts () const
 Return the list of cuts initially collected for this subproblem.
int currentNumberCuts () const
 Number of entries in the list returned by addedCuts().
OsiCutsglobalCuts ()
 Global cuts.
void setNextRowCut (const OsiRowCut &cut)
 Copy and set a pointer to a row cut which will be added instead of normal branching.
CbcNodecurrentNode () const
 Get a pointer to current node (be careful).
void setNumberStrongIterations (int number)
 Set the number of iterations done in strong branching.
int numberStrongIterations () const
 Get the number of iterations done in strong branching.
void incrementStrongInfo (int numberTimes, int numberIterations, int numberFixed, bool ifInfeasible)
 Increment strong info.
void generateCpp (FILE *fp, int options)
 Create C++ lines to get to current state.

Private Attributes

Private member data
OsiSolverInterfacesolver_
 The solver associated with this model.
bool ourSolver_
 Ownership of the solver object.
OsiSolverInterfacecontinuousSolver_
 A copy of the solver, taken at the continuous (root) node.
OsiSolverInterfacereferenceSolver_
 A copy of the solver, taken at constructor or by saveReferenceSolver.
CoinMessageHandlerhandler_
 Message handler.
bool defaultHandler_
 Flag to say if handler_ is the default handler.
CoinMessages messages_
 Cbc messages.
int intParam_ [CbcLastIntParam]
 Array for integer parameters.
double dblParam_ [CbcLastDblParam]
 Array for double parameters.
CoinWarmStartemptyWarmStart_
 Pointer to an empty warm start object.
double bestObjective_
 Best objective.
double bestPossibleObjective_
 Best possible objective.
double sumChangeObjective1_
 Sum of Changes to objective by first solve.
double sumChangeObjective2_
 Sum of Changes to objective by subsequent solves.
double * bestSolution_
 Array holding the incumbent (best) solution.
double * currentSolution_
 Array holding the current solution.
const double * testSolution_
 For testing infeasibilities - will point to currentSolution_ or solver-->getColSolution().
OsiCuts globalCuts_
 Global cuts.
double minimumDrop_
 Minimum degradation in objective value to continue cut generation.
int numberSolutions_
 Number of solutions.
int stateOfSearch_
 State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no solution but many nodes.
double * hotstartSolution_
 Hotstart solution.
int * hotstartPriorities_
 Hotstart priorities.
int numberHeuristicSolutions_
 Number of heuristic solutions.
int numberNodes_
 Cumulative number of nodes.
int numberNodes2_
 Cumulative number of nodes for statistics.
int numberIterations_
 Cumulative number of iterations.
int status_
 Status of problem - 0 finished, 1 stopped, 2 difficulties.
int secondaryStatus_
 Secondary status of problem -1 unset (status_ will also be -1) 0 search completed with solution 1 linear relaxation not feasible (or worse than cutoff) 2 stopped on gap 3 stopped on nodes 4 stopped on time 5 stopped on user event 6 stopped on solutions.
int numberIntegers_
 Number of integers in problem.
int numberRowsAtContinuous_
 Number of rows at continuous.
int maximumNumberCuts_
 Maximum number of cuts.
int phase_
 Current phase (so heuristics etc etc can find out).
int currentNumberCuts_
 Number of entries in addedCuts_.
int maximumDepth_
 Current limit on search tree depth.
CbcNodeInfo ** walkback_
 Array used to assemble the path between a node and the search tree root.
CbcCountRowCut ** addedCuts_
 The list of cuts initially collected for this subproblem.
OsiRowCutnextRowCut_
 A pointer to a row cut which will be added instead of normal branching.
CbcNodecurrentNode_
 Current node so can be used elsewhere.
int * integerVariable_
 Indices of integer variables.
char * integerInfo_
 Whether of not integer.
double * continuousSolution_
 Holds solution at continuous (after cuts).
int * usedInSolution_
 Array marked whenever a solution is found if non-zero.
int specialOptions_
 0 bit (1) - check if cuts valid (if on debugger list) 1 bit (2) - use current basis to check integer solution (rather than all slack) 2 bit (4) - don't check integer solution 3 bit (8) - Strong is doing well - keep on
CbcCompareBasenodeCompare_
 User node comparison function.
CbcFeasibilityBaseproblemFeasibility_
 User feasibility function (see CbcFeasibleBase.hpp).
CbcTreetree_
 Tree.
CbcModelsubTreeModel_
 A pointer to model to be used for subtrees.
int numberStoppedSubTrees_
 Number of times any subtree stopped on nodes, time etc.
CbcBranchDecisionbranchingMethod_
 Variable selection function.
CbcStrategystrategy_
 Strategy.
CbcModelparentModel_
 Parent model.
const double * cbcColLower_
 Pointer to array[getNumCols()] (for speed) of column lower bounds.
const double * cbcColUpper_
 Pointer to array[getNumCols()] (for speed) of column upper bounds.
const double * cbcRowLower_
 Pointer to array[getNumRows()] (for speed) of row lower bounds.
const double * cbcRowUpper_
 Pointer to array[getNumRows()] (for speed) of row upper bounds.
const double * cbcColSolution_
 Pointer to array[getNumCols()] (for speed) of primal solution vector.
const double * cbcRowPrice_
 Pointer to array[getNumRows()] (for speed) of dual prices.
const double * cbcReducedCost_
 Get a pointer to array[getNumCols()] (for speed) of reduced costs.
const double * cbcRowActivity_
 Pointer to array[getNumRows()] (for speed) of row activity levels.
void * appData_
 Pointer to user-defined data structure.
int presolve_
 Pointer to.
int numberStrong_
 Maximum number of candidates to consider for strong branching.
int numberBeforeTrust_
 The number of branches before pseudo costs believed in dynamic strong branching.
int numberPenalties_
 The number of variable sfor which to compute penalties in dynamic strong branching.
double penaltyScaleFactor_
 Scale factor to make penalties match strong.
int numberAnalyzeIterations_
 Number of analyze iterations to do.
double * analyzeResults_
 Arrays with analysis results.
int numberInfeasibleNodes_
 Number of nodes infeasible by normal branching (before cuts).
int problemType_
 Problem type as set by user or found by analysis.
int printFrequency_
 Print frequency.
int numberCutGenerators_
 Number of cut generators.
CbcCutGenerator ** generator_
 The solver associated with this model.
CbcCutGenerator ** virginGenerator_
 The solver associated with this model.
int numberHeuristics_
 Number of heuristics.
CbcHeuristic ** heuristic_
 Heuristic solvers.
CbcHeuristiclastHeuristic_
 Pointer to heuristic solver which found last solution (or NULL).
CbcEventHandlereventHandler_
int numberObjects_
 Total number of objects.
CbcObject ** object_
 Integer and Clique and .
int * originalColumns_
 Original columns as created by integerPresolve.
int howOftenGlobalScan_
 How often to scan global cuts.
int numberGlobalViolations_
 Number of times global cuts violated.
double continuousObjective_
 Value of objective at continuous (Well actually after initial round of cuts).
double originalContinuousObjective_
 Value of objective before root node cuts added.
int continuousInfeasibilities_
 Number of infeasibilities at continuous.
int maximumCutPassesAtRoot_
 Maximum number of cut passes at root.
int maximumCutPasses_
 Maximum number of cut passes.
int currentPassNumber_
 Current cut pass number.
int maximumWhich_
 Maximum number of cuts (for whichGenerator_).
int * whichGenerator_
 Which cut generator generated this cut.
int maximumStatistics_
 Maximum number of statistics.
CbcStatistics ** statistics_
 statistics
int numberFixedAtRoot_
 Number of fixed by analyze at root.
int numberFixedNow_
 Number fixed by analyze so far.
bool stoppedOnGap_
 Whether stopping on gap.
bool eventHappened_
 Whether event happened.
int numberLongStrong_
 Number of long strong goes.
int numberOldActiveCuts_
 Number of old active cuts.
int numberNewCuts_
 Number of new cuts.
int sizeMiniTree_
 Size of mini - tree.
int searchStrategy_
 Strategy worked out - mainly at root node.
int numberStrongIterations_
 Number of iterations in strong branching.
int strongInfo_ [3]
 0 - number times strong branching done, 1 - number fixed, 2 - number infeasible
OsiBabSolversolverCharacteristics_
 For advanced applications you may wish to modify the behavior of Cbc e.g.
bool resolveAfterTakeOffCuts_
 Whether to force a resolve after takeOffCuts.

Detailed Description

Simple Branch and bound class.

The initialSolve() method solves the initial LP relaxation of the MIP problem. The branchAndBound() method can then be called to finish using a branch and cut algorithm.

Search Tree Traversal

Subproblems (aka nodes) requiring additional evaluation are stored using the CbcNode and CbcNodeInfo objects. Ancestry linkage is maintained in the CbcNodeInfo object. Evaluation of a subproblem within branchAndBound() proceeds as follows:

Note that there is never a node representing the active subproblem; the model and solver represent the active subproblem.

Row (Constraint) Cut Handling

For a typical subproblem, the sequence of events is as follows:

See CbcCountRowCut for details of the bookkeeping associated with cut management.

Definition at line 84 of file CbcModel.hpp.


Member Enumeration Documentation

enum CbcModel::CbcIntParam

Enumerator:
CbcMaxNumNode  The maximum number of nodes before terminating.
CbcMaxNumSol  The maximum number of solutions before terminating.
CbcFathomDiscipline  Fathoming discipline.

Controls objective function comparisons for purposes of fathoming by bound or determining monotonic variables.

If 1, action is taken only when the current objective is strictly worse than the target. Implementation is handled by adding a small tolerance to the target.

CbcLastIntParam  Just a marker, so that a static sized array can store parameters.

Definition at line 88 of file CbcModel.hpp.

enum CbcModel::CbcDblParam

Enumerator:
CbcIntegerTolerance  The maximum amount the value of an integer variable can vary from integer and still be considered feasible.
CbcInfeasibilityWeight  The objective is assumed to worsen by this amount for each integer infeasibility.
CbcCutoffIncrement  The amount by which to tighten the objective function cutoff when a new solution is discovered.
CbcAllowableGap  Stop when the gap between the objective value of the best known solution and the best bound on the objective of any solution is less than this.

This is an absolute value. Conversion from a percentage is left to the client.

CbcAllowableFractionGap  Stop when the gap between the objective value of the best known solution and the best bound on the objective of any solution is less than this fraction of of the absolute value of best known solution.

Code stops if either this test or CbcAllowableGap test succeeds

CbcMaximumSeconds  The maximum number of seconds before terminating.

A double should be adequate!

CbcCurrentCutoff  Cutoff - stored for speed.
CbcOptimizationDirection  Optimization direction - stored for speed.
CbcCurrentObjectiveValue  Current objective value.
CbcCurrentMinimizationObjectiveValue  Current minimization objective value.
CbcStartSeconds  The time at start of model.

So that other pieces of code can access

CbcLastDblParam  Just a marker, so that a static sized array can store parameters.

Definition at line 107 of file CbcModel.hpp.


Constructor & Destructor Documentation

CbcModel::CbcModel (  ) 

Default Constructor.

CbcModel::CbcModel ( const OsiSolverInterface  ) 

Constructor from solver.

CbcModel::CbcModel ( const CbcModel rhs,
bool  noTree = false 
)

Copy constructor .

If noTree is true then tree and cuts are not copied

CbcModel::~CbcModel (  ) 

Destructor.


Member Function Documentation

void CbcModel::initialSolve (  ) 

Solve the initial LP relaxation.

Invoke the solver's initialSolve() method.

void CbcModel::branchAndBound ( int  doStatistics = 0  ) 

Invoke the branch & cut algorithm.

The method assumes that initialSolve() has been called to solve the LP relaxation. It processes the root node, then proceeds to explore the branch & cut search tree. The search ends when the tree is exhausted or one of several execution limits is reached. If doStatistics is 1 summary statistics are printed if 2 then also the path to best solution (if found by branching) if 3 then also one line per node

CbcModel* CbcModel::cleanModel ( const double *  lower,
const double *  upper 
)

create a clean model from partially fixed problem

The method creates a new model with given bounds and with no tree.

int CbcModel::subBranchAndBound ( CbcModel model2,
CbcModel presolvedModel,
int  maximumNodes 
)

Invoke the branch & cut algorithm on partially fixed problem.

The method presolves the given model and does branch and cut. The search ends when the tree is exhausted or maximum nodes is reached.

If better solution found then it is saved.

Returns 0 if search completed and solution, 1 if not completed and solution, 2 if completed and no solution, 3 if not completed and no solution.

Normally okay to do cleanModel immediately followed by subBranchandBound (== other form of subBranchAndBound) but may need to get at model for advanced features.

Deletes model2

int CbcModel::subBranchAndBound ( const double *  lower,
const double *  upper,
int  maximumNodes 
)

Invoke the branch & cut algorithm on partially fixed problem.

The method creates a new model with given bounds, presolves it then proceeds to explore the branch & cut search tree. The search ends when the tree is exhausted or maximum nodes is reached.

If better solution found then it is saved.

Returns 0 if search completed and solution, 1 if not completed and solution, 2 if completed and no solution, 3 if not completed and no solution.

This is just subModel immediately followed by other version of subBranchandBound.

OsiSolverInterface* CbcModel::strengthenedModel (  ) 

Process root node and return a strengthened model.

The method assumes that initialSolve() has been called to solve the LP relaxation. It processes the root node and then returns a pointer to the strengthened model (or NULL if infeasible)

bool CbcModel::solveWithCuts ( OsiCuts cuts,
int  numberTries,
CbcNode node 
) [private]

Evaluate a subproblem using cutting planes and heuristics.

The method invokes a main loop which generates cuts, applies heuristics, and reoptimises using the solver's native resolve() method. It returns true if the subproblem remains feasible at the end of the evaluation.

CbcNode** CbcModel::solveOneNode ( int  whichSolver,
CbcNode node,
int &  numberNodesOutput,
int &  status 
) [private]

Input one node output N nodes to put on tree and optional solution update This should be able to operate in parallel so is given a solver and is const(ish) However we will need to keep an array of solver_ and bases and more status is 0 for normal, 1 if solution Calling code should always push nodes back on tree.

void CbcModel::resizeWhichGenerator ( int  numberNow,
int  numberAfter 
) [private]

Update size of whichGenerator.

int CbcModel::resolve ( CbcNodeInfo parent,
int  whereFrom 
)

Reoptimise an LP relaxation.

Invoke the solver's resolve() method. whereFrom - 0 - initial continuous 1 - resolve on branch (before new cuts) 2 - after new cuts 3 - obsolete code or something modified problem in unexpected way 10 - after strong branching has fixed variables at root 11 - after strong branching has fixed variables in tree

returns 1 feasible, 0 infeasible, -1 feasible but skip cuts

void CbcModel::makeGlobalCuts ( int  numberRows,
const int *  which 
)

Make given rows (L or G) into global cuts and remove from lp.

CbcModel* CbcModel::findCliques ( bool  makeEquality,
int  atLeastThisMany,
int  lessThanThis,
int  defaultValue = 1000 
)

Identify cliques and construct corresponding objects.

Find cliques with size in the range [atLeastThisMany, lessThanThis] and construct corresponding CbcClique objects. If makeEquality is true then a new model may be returned if modifications had to be made, otherwise this is returned. If the problem is infeasible numberObjects_ is set to -1. A client must use deleteObjects() before a second call to findCliques(). If priorities exist, clique priority is set to the default.

CbcModel* CbcModel::integerPresolve ( bool  weak = false  ) 

Do integer presolve, creating a new (presolved) model.

Returns the new model, or NULL if feasibility is lost. If weak is true then just does a normal presolve

Todo:
It remains to work out the cleanest way of getting a solution to the original problem at the end. So this is very preliminary.

bool CbcModel::integerPresolveThisModel ( OsiSolverInterface originalSolver,
bool  weak = false 
)

Do integer presolve, modifying the current model.

Returns true if the model remains feasible after presolve.

void CbcModel::originalModel ( CbcModel presolvedModel,
bool  weak 
)

Put back information into the original model after integer presolve.

bool CbcModel::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.

Returns false if feasibility is lost. If CglProbing is available, it will be tried as well to see if it can tighten bounds. This routine is just a front end for tightenVubs(int,const int*,double).

If type = -1 all variables are processed (could be very slow). If type = 0 only variables involved in VUBs are processed. If type = n > 0, only the n most expensive VUB variables are processed, where it is assumed that x is at its maximum so delta would have to go to 1 (if x not at bound).

If allowMultipleBinary is true, then a VUB constraint is a row with one continuous variable and any number of binary variables.

If useCutoff < 1.0e30, the original objective is installed as a constraint with useCutoff as a bound.

bool CbcModel::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.

This version is just handed a list of variables to be processed.

void CbcModel::analyzeObjective (  ) 

Analyze problem to find a minimum change in the objective function.

int CbcModel::numberObjects (  )  const [inline]

Get the number of objects.

Definition at line 341 of file CbcModel.hpp.

References numberObjects_.

void CbcModel::setNumberObjects ( int  number  )  [inline]

Set the number of objects.

Definition at line 343 of file CbcModel.hpp.

References numberObjects_.

CbcObject** CbcModel::objects (  )  const [inline]

Get the array of objects.

Definition at line 347 of file CbcModel.hpp.

References object_.

const CbcObject* CbcModel::object ( int  which  )  const [inline]

Get the specified object.

Definition at line 350 of file CbcModel.hpp.

References object_.

CbcObject* CbcModel::modifiableObject ( int  which  )  const [inline]

Get the specified object.

Definition at line 352 of file CbcModel.hpp.

References object_.

void CbcModel::deleteObjects (  ) 

Delete all object information.

void CbcModel::addObjects ( int  numberObjects,
CbcObject **  objects 
)

Add in object information.

Objects are cloned; the owner can delete the originals.

void CbcModel::synchronizeModel (  ) 

Ensure attached objects point to this model.

void CbcModel::findIntegers ( bool  startAgain,
int  type = 0 
)

Identify integer variables and create corresponding objects.

Record integer variables and create an CbcSimpleInteger object for each one. If startAgain is true, a new scan is forced, overwriting any existing integer variable information. If type > 0 then 1==PseudoCost

bool CbcModel::setIntParam ( CbcIntParam  key,
int  value 
) [inline]

Set an integer parameter.

Definition at line 391 of file CbcModel.hpp.

References intParam_.

Referenced by setMaximumNodes(), and setMaximumSolutions().

bool CbcModel::setDblParam ( CbcDblParam  key,
double  value 
) [inline]

Set a double parameter.

Definition at line 396 of file CbcModel.hpp.

References dblParam_.

Referenced by setAllowableFractionGap(), setAllowableGap(), setAllowablePercentageGap(), setCutoffIncrement(), setInfeasibilityWeight(), setIntegerTolerance(), and setMaximumSeconds().

int CbcModel::getIntParam ( CbcIntParam  key  )  const [inline]

Get an integer parameter.

Definition at line 401 of file CbcModel.hpp.

References intParam_.

Referenced by getMaximumNodes(), and getMaximumSolutions().

double CbcModel::getDblParam ( CbcDblParam  key  )  const [inline]

Get a double parameter.

Definition at line 405 of file CbcModel.hpp.

References dblParam_.

Referenced by getAllowableFractionGap(), getAllowableGap(), getAllowablePercentageGap(), getCutoffIncrement(), getInfeasibilityWeight(), getIntegerTolerance(), and getMaximumSeconds().

void CbcModel::setCutoff ( double  value  ) 

Set cutoff bound on the objective function.

When using strict comparison, the bound is adjusted by a tolerance to avoid accidentally cutting off the optimal solution.

Referenced by OsiCbcSolverInterface::setCutoff().

double CbcModel::getCutoff (  )  const [inline]

Get the cutoff bound on the objective function - always as minimize.

Definition at line 416 of file CbcModel.hpp.

References CbcCurrentCutoff, and dblParam_.

Referenced by OsiCbcSolverInterface::getCutoff().

bool CbcModel::setMaximumNodes ( int  value  )  [inline]

Set the maximum node limit .

Definition at line 424 of file CbcModel.hpp.

References CbcMaxNumNode, and setIntParam().

Referenced by OsiCbcSolverInterface::setMaximumNodes().

int CbcModel::getMaximumNodes (  )  const [inline]

Get the maximum node limit .

Definition at line 428 of file CbcModel.hpp.

References CbcMaxNumNode, and getIntParam().

Referenced by OsiCbcSolverInterface::getMaximumNodes().

bool CbcModel::setMaximumSolutions ( int  value  )  [inline]

Set the maximum number of solutions desired.

Definition at line 435 of file CbcModel.hpp.

References CbcMaxNumSol, and setIntParam().

Referenced by OsiCbcSolverInterface::setMaximumSolutions().

int CbcModel::getMaximumSolutions (  )  const [inline]

Get the maximum number of solutions desired.

Definition at line 442 of file CbcModel.hpp.

References CbcMaxNumSol, and getIntParam().

Referenced by OsiCbcSolverInterface::getMaximumSolutions().

bool CbcModel::setMaximumSeconds ( double  value  )  [inline]

Set the maximum number of seconds desired.

Definition at line 450 of file CbcModel.hpp.

References CbcMaximumSeconds, and setDblParam().

Referenced by OsiCbcSolverInterface::setMaximumSeconds().

double CbcModel::getMaximumSeconds (  )  const [inline]

Get the maximum number of seconds desired.

Definition at line 457 of file CbcModel.hpp.

References CbcMaximumSeconds, and getDblParam().

Referenced by OsiCbcSolverInterface::getMaximumSeconds().

double CbcModel::getCurrentSeconds (  )  const

Current time since start of branchAndbound.

bool CbcModel::setIntegerTolerance ( double  value  )  [inline]

Set the integrality tolerance .

Definition at line 466 of file CbcModel.hpp.

References CbcIntegerTolerance, and setDblParam().

double CbcModel::getIntegerTolerance (  )  const [inline]

Get the integrality tolerance .

Definition at line 472 of file CbcModel.hpp.

References CbcIntegerTolerance, and getDblParam().

bool CbcModel::setInfeasibilityWeight ( double  value  )  [inline]

Set the weight per integer infeasibility .

Definition at line 480 of file CbcModel.hpp.

References CbcInfeasibilityWeight, and setDblParam().

double CbcModel::getInfeasibilityWeight (  )  const [inline]

Get the weight per integer infeasibility .

Definition at line 487 of file CbcModel.hpp.

References CbcInfeasibilityWeight, and getDblParam().

bool CbcModel::setAllowableGap ( double  value  )  [inline]

Set the allowable gap between the best known solution and the best possible solution.

Definition at line 494 of file CbcModel.hpp.

References CbcAllowableGap, and setDblParam().

double CbcModel::getAllowableGap (  )  const [inline]

Get the allowable gap between the best known solution and the best possible solution.

Definition at line 500 of file CbcModel.hpp.

References CbcAllowableGap, and getDblParam().

bool CbcModel::setAllowableFractionGap ( double  value  )  [inline]

Set the fraction allowable gap between the best known solution and the best possible solution.

Definition at line 507 of file CbcModel.hpp.

References CbcAllowableFractionGap, and setDblParam().

double CbcModel::getAllowableFractionGap (  )  const [inline]

Get the fraction allowable gap between the best known solution and the best possible solution.

Definition at line 513 of file CbcModel.hpp.

References CbcAllowableFractionGap, and getDblParam().

bool CbcModel::setAllowablePercentageGap ( double  value  )  [inline]

Set the percentage allowable gap between the best known solution and the best possible solution.

Definition at line 519 of file CbcModel.hpp.

References CbcAllowableFractionGap, and setDblParam().

double CbcModel::getAllowablePercentageGap (  )  const [inline]

Get the percentage allowable gap between the best known solution and the best possible solution.

Definition at line 525 of file CbcModel.hpp.

References CbcAllowableFractionGap, and getDblParam().

bool CbcModel::setCutoffIncrement ( double  value  )  [inline]

Set the CbcModel::CbcCutoffIncrement desired.

Definition at line 532 of file CbcModel.hpp.

References CbcCutoffIncrement, and setDblParam().

double CbcModel::getCutoffIncrement (  )  const [inline]

Get the CbcModel::CbcCutoffIncrement desired.

Definition at line 539 of file CbcModel.hpp.

References CbcCutoffIncrement, and getDblParam().

void CbcModel::setHotstartSolution ( const double *  solution,
const int *  priorities = NULL 
)

Pass in target solution and optional priorities.

If priorities then >0 means only branch if incorrect while <0 means branch even if correct. +1 or -1 are highest priority

void CbcModel::setMinimumDrop ( double  value  )  [inline]

Set the minimum drop to continue cuts.

Definition at line 550 of file CbcModel.hpp.

References minimumDrop_.

double CbcModel::getMinimumDrop (  )  const [inline]

Get the minimum drop to continue cuts.

Definition at line 553 of file CbcModel.hpp.

References minimumDrop_.

void CbcModel::setMaximumCutPassesAtRoot ( int  value  )  [inline]

Set the maximum number of cut passes at root node (default 20) Minimum drop can also be used for fine tuning.

Definition at line 558 of file CbcModel.hpp.

References maximumCutPassesAtRoot_.

int CbcModel::getMaximumCutPassesAtRoot (  )  const [inline]

Get the maximum number of cut passes at root node.

Definition at line 561 of file CbcModel.hpp.

References maximumCutPassesAtRoot_.

void CbcModel::setMaximumCutPasses ( int  value  )  [inline]

Set the maximum number of cut passes at other nodes (default 10) Minimum drop can also be used for fine tuning.

Definition at line 566 of file CbcModel.hpp.

References maximumCutPasses_.

int CbcModel::getMaximumCutPasses (  )  const [inline]

Get the maximum number of cut passes at other nodes (default 10).

Definition at line 569 of file CbcModel.hpp.

References maximumCutPasses_.

int CbcModel::getCurrentPassNumber (  )  const [inline]

Get current cut pass number in this round of cuts.

(1 is first pass)

Definition at line 573 of file CbcModel.hpp.

References currentPassNumber_.

void CbcModel::setNumberStrong ( int  number  ) 

Set the maximum number of candidates to be evaluated for strong branching.

A value of 0 disables strong branching.

int CbcModel::numberStrong (  )  const [inline]

Get the maximum number of candidates to be evaluated for strong branching.

Definition at line 585 of file CbcModel.hpp.

References numberStrong_.

void CbcModel::setSizeMiniTree ( int  value  )  [inline]

Set size of mini - tree.

If > 1 then does total enumeration of tree given by this best variables to branch on

Definition at line 590 of file CbcModel.hpp.

References sizeMiniTree_.

int CbcModel::sizeMiniTree (  )  const [inline]

Set an integer parameter.

Definition at line 592 of file CbcModel.hpp.

References sizeMiniTree_.

void CbcModel::setNumberBeforeTrust ( int  number  ) 

Set the number of branches before pseudo costs believed in dynamic strong branching.

A value of 0 disables dynamic strong branching.

int CbcModel::numberBeforeTrust (  )  const [inline]

get the number of branches before pseudo costs believed in dynamic strong branching.

Definition at line 603 of file CbcModel.hpp.

References numberBeforeTrust_.

void CbcModel::setNumberPenalties ( int  number  ) 

Set the number of variables for which to compute penalties in dynamic strong branching.

A value of 0 disables penalties.

int CbcModel::numberPenalties (  )  const [inline]

get the number of variables for which to compute penalties in dynamic strong branching.

Definition at line 613 of file CbcModel.hpp.

References numberPenalties_.

void CbcModel::setNumberAnalyzeIterations ( int  number  )  [inline]

Number of analyze iterations to do.

Definition at line 616 of file CbcModel.hpp.

References numberAnalyzeIterations_.

int CbcModel::numberAnalyzeIterations (  )  const [inline]

Set an integer parameter.

Definition at line 618 of file CbcModel.hpp.

References numberAnalyzeIterations_.

double CbcModel::penaltyScaleFactor (  )  const [inline]

Get scale factor to make penalties match strong.

Should/will be computed

Definition at line 622 of file CbcModel.hpp.

References penaltyScaleFactor_.

void CbcModel::setPenaltyScaleFactor ( double  value  ) 

Set scale factor to make penalties match strong.

Should/will be computed

void CbcModel::setProblemType ( int  number  )  [inline]

Problem type as set by user or found by analysis.

This will be extended 0 - not known 1 - Set partitioning <= 2 - Set partitioning == 3 - Set covering 4 - all +- 1 or all +1 and odd

Definition at line 634 of file CbcModel.hpp.

References problemType_.

int CbcModel::problemType (  )  const [inline]

Set an integer parameter.

Definition at line 636 of file CbcModel.hpp.

References problemType_.

void CbcModel::setHowOftenGlobalScan ( int  number  ) 

Set how often to scan global cuts.

int CbcModel::howOftenGlobalScan (  )  const [inline]

Get how often to scan global cuts.

Definition at line 642 of file CbcModel.hpp.

References howOftenGlobalScan_.

int* CbcModel::originalColumns (  )  const [inline]

Original columns as created by integerPresolve.

Definition at line 645 of file CbcModel.hpp.

References originalColumns_.

void CbcModel::setPrintFrequency ( int  number  )  [inline]

Set the print frequency.

Controls the number of nodes evaluated between status prints. If number <=0 the print frequency is set to 100 nodes for large problems, 1000 for small problems. Print frequency has very slight overhead if small.

Definition at line 655 of file CbcModel.hpp.

References printFrequency_.

int CbcModel::printFrequency (  )  const [inline]

Get the print frequency.

Definition at line 658 of file CbcModel.hpp.

References printFrequency_.

bool CbcModel::isAbandoned (  )  const

Are there a numerical difficulties?

bool CbcModel::isProvenOptimal (  )  const

Is optimality proven?

bool CbcModel::isProvenInfeasible (  )  const

Is infeasiblity proven (or none better than cutoff)?

bool CbcModel::isNodeLimitReached (  )  const

Node limit reached?

Referenced by OsiCbcSolverInterface::isNodeLimitReached().

bool CbcModel::isSecondsLimitReached (  )  const

Time limit reached?

bool CbcModel::isSolutionLimitReached (  )  const

Solution limit reached?

Referenced by OsiCbcSolverInterface::isSolutionLimitReached().

int CbcModel::getIterationCount (  )  const [inline]

Get how many iterations it took to solve the problem.

Definition at line 678 of file CbcModel.hpp.

References numberIterations_.

int CbcModel::getNodeCount (  )  const [inline]

Get how many Nodes it took to solve the problem.

Definition at line 681 of file CbcModel.hpp.

References numberNodes_.

Referenced by OsiCbcSolverInterface::getNodeCount().

int CbcModel::status (  )  const [inline]

Final status of problem Some of these can be found out by is.

..... functions -1 before branchAndBound 0 finished - check isProvenOptimal or isProvenInfeasible to see if solution found (or check value of best solution) 1 stopped - on maxnodes, maxsols, maxtime 2 difficulties so run was abandoned (5 event user programmed event occurred)

Definition at line 692 of file CbcModel.hpp.

References status_.

Referenced by OsiCbcSolverInterface::status().

int CbcModel::secondaryStatus (  )  const [inline]

Secondary status of problem -1 unset (status_ will also be -1) 0 search completed with solution 1 linear relaxation not feasible (or worse than cutoff) 2 stopped on gap 3 stopped on nodes 4 stopped on time 5 stopped on user event 6 stopped on solutions.

Definition at line 704 of file CbcModel.hpp.

References secondaryStatus_.

bool CbcModel::isInitialSolveAbandoned (  )  const

Are there numerical difficulties (for initialSolve) ?

bool CbcModel::isInitialSolveProvenOptimal (  )  const

Is optimality proven (for initialSolve) ?

bool CbcModel::isInitialSolveProvenPrimalInfeasible (  )  const

Is primal infeasiblity proven (for initialSolve) ?

bool CbcModel::isInitialSolveProvenDualInfeasible (  )  const

Is dual infeasiblity proven (for initialSolve) ?

int CbcModel::numberRowsAtContinuous (  )  const [inline]

Number of rows in continuous (root) problem.

Definition at line 731 of file CbcModel.hpp.

References numberRowsAtContinuous_.

int CbcModel::getNumCols (  )  const [inline]

Get number of columns.

Definition at line 735 of file CbcModel.hpp.

References OsiSolverInterface::getNumCols(), and solver_.

int CbcModel::getNumRows (  )  const [inline]

Get number of rows.

Definition at line 739 of file CbcModel.hpp.

References OsiSolverInterface::getNumRows(), and solver_.

CoinBigIndex CbcModel::getNumElements (  )  const [inline]

Get number of nonzero elements.

Definition at line 743 of file CbcModel.hpp.

References OsiSolverInterface::getNumElements(), and solver_.

int CbcModel::numberIntegers (  )  const [inline]

Number of integers in problem.

Definition at line 747 of file CbcModel.hpp.

References numberIntegers_.

const int* CbcModel::integerVariable (  )  const [inline]

Number of rows in continuous (root) problem.

Definition at line 750 of file CbcModel.hpp.

References integerVariable_.

const char CbcModel::integerType ( int  i  )  const [inline]

Whether or not integer.

Definition at line 753 of file CbcModel.hpp.

References integerInfo_.

const char* CbcModel::integerType (  )  const [inline]

Whether or not integer.

Definition at line 756 of file CbcModel.hpp.

References integerInfo_.

const double* CbcModel::getColLower (  )  const [inline]

Get pointer to array[getNumCols()] of column lower bounds.

Definition at line 760 of file CbcModel.hpp.

References OsiSolverInterface::getColLower(), and solver_.

const double* CbcModel::getColUpper (  )  const [inline]

Get pointer to array[getNumCols()] of column upper bounds.

Definition at line 764 of file CbcModel.hpp.

References OsiSolverInterface::getColUpper(), and solver_.

const char* CbcModel::getRowSense (  )  const [inline]

Get pointer to array[getNumRows()] of row constraint senses.

Definition at line 776 of file CbcModel.hpp.

References OsiSolverInterface::getRowSense(), and solver_.

const double* CbcModel::getRightHandSide (  )  const [inline]

Get pointer to array[getNumRows()] of rows right-hand sides.

Definition at line 787 of file CbcModel.hpp.

References OsiSolverInterface::getRightHandSide(), and solver_.

const double* CbcModel::getRowRange (  )  const [inline]

Get pointer to array[getNumRows()] of row ranges.

Definition at line 798 of file CbcModel.hpp.

References OsiSolverInterface::getRowRange(), and solver_.

const double* CbcModel::getRowLower (  )  const [inline]

Get pointer to array[getNumRows()] of row lower bounds.

Definition at line 802 of file CbcModel.hpp.

References OsiSolverInterface::getRowLower(), and solver_.

const double* CbcModel::getRowUpper (  )  const [inline]

Get pointer to array[getNumRows()] of row upper bounds.

Definition at line 806 of file CbcModel.hpp.

References OsiSolverInterface::getRowUpper(), and solver_.

const double* CbcModel::getObjCoefficients (  )  const [inline]

Get pointer to array[getNumCols()] of objective function coefficients.

Definition at line 810 of file CbcModel.hpp.

References OsiSolverInterface::getObjCoefficients(), and solver_.

double CbcModel::getObjSense (  )  const [inline]

Get objective function sense (1 for min (default), -1 for max).

Definition at line 814 of file CbcModel.hpp.

References CbcOptimizationDirection, and dblParam_.

bool CbcModel::isContinuous ( int  colIndex  )  const [inline]

Return true if variable is continuous.

Definition at line 820 of file CbcModel.hpp.

References OsiSolverInterface::isContinuous(), and solver_.

bool CbcModel::isBinary ( int  colIndex  )  const [inline]

Return true if variable is binary.

Definition at line 824 of file CbcModel.hpp.

References OsiSolverInterface::isBinary(), and solver_.

bool CbcModel::isInteger ( int  colIndex  )  const [inline]

Return true if column is integer.

Note: This function returns true if the the column is binary or a general integer.

Definition at line 831 of file CbcModel.hpp.

References OsiSolverInterface::isInteger(), and solver_.

bool CbcModel::isIntegerNonBinary ( int  colIndex  )  const [inline]

Return true if variable is general integer.

Definition at line 835 of file CbcModel.hpp.

References OsiSolverInterface::isIntegerNonBinary(), and solver_.

bool CbcModel::isFreeBinary ( int  colIndex  )  const [inline]

Return true if variable is binary and not fixed at either bound.

Definition at line 839 of file CbcModel.hpp.

References OsiSolverInterface::isFreeBinary(), and solver_.

const CoinPackedMatrix* CbcModel::getMatrixByRow (  )  const [inline]

Get pointer to row-wise copy of matrix.

Definition at line 843 of file CbcModel.hpp.

References OsiSolverInterface::getMatrixByRow(), and solver_.

const CoinPackedMatrix* CbcModel::getMatrixByCol (  )  const [inline]

Get pointer to column-wise copy of matrix.

Definition at line 847 of file CbcModel.hpp.

References OsiSolverInterface::getMatrixByCol(), and solver_.

double CbcModel::getInfinity (  )  const [inline]

Get solver's value for infinity.

Definition at line 851 of file CbcModel.hpp.

References OsiSolverInterface::getInfinity(), and solver_.

const double* CbcModel::getCbcColLower (  )  const [inline]

Get pointer to array[getNumCols()] (for speed) of column lower bounds.

Definition at line 854 of file CbcModel.hpp.

References cbcColLower_.

const double* CbcModel::getCbcColUpper (  )  const [inline]

Get pointer to array[getNumCols()] (for speed) of column upper bounds.

Definition at line 857 of file CbcModel.hpp.

References cbcColUpper_.

const double* CbcModel::getCbcRowLower (  )  const [inline]

Get pointer to array[getNumRows()] (for speed) of row lower bounds.

Definition at line 860 of file CbcModel.hpp.

References cbcRowLower_.

const double* CbcModel::getCbcRowUpper (  )  const [inline]

Get pointer to array[getNumRows()] (for speed) of row upper bounds.

Definition at line 863 of file CbcModel.hpp.

References cbcRowUpper_.

const double* CbcModel::getCbcColSolution (  )  const [inline]

Get pointer to array[getNumCols()] (for speed) of primal solution vector.

Definition at line 866 of file CbcModel.hpp.

References cbcColSolution_.

const double* CbcModel::getCbcRowPrice (  )  const [inline]

Get pointer to array[getNumRows()] (for speed) of dual prices.

Definition at line 869 of file CbcModel.hpp.

References cbcRowPrice_.

const double* CbcModel::getCbcReducedCost (  )  const [inline]

Get a pointer to array[getNumCols()] (for speed) of reduced costs.

Definition at line 872 of file CbcModel.hpp.

References cbcReducedCost_.

const double* CbcModel::getCbcRowActivity (  )  const [inline]

Get pointer to array[getNumRows()] (for speed) of row activity levels.

Definition at line 875 of file CbcModel.hpp.

References cbcRowActivity_.

double* CbcModel::continuousSolution (  )  const [inline]

Holds solution at continuous (after cuts if branchAndBound called).

Definition at line 883 of file CbcModel.hpp.

References continuousSolution_.

int* CbcModel::usedInSolution (  )  const [inline]

Array marked whenever a solution is found if non-zero.

Code marks if heuristic returns better so heuristic need only mark if it wants to on solutions which are worse than current

Definition at line 889 of file CbcModel.hpp.

References usedInSolution_.

void CbcModel::incrementUsed ( const double *  solution  ) 

Increases usedInSolution for nonzeros.

void CbcModel::setBestSolution ( CBC_Message  how,
double &  objectiveValue,
const double *  solution,
bool  fixVariables = false 
)

Record a new incumbent solution and update objectiveValue.

void CbcModel::setBestObjectiveValue ( double  objectiveValue  ) 

Just update objectiveValue.

double CbcModel::checkSolution ( double  cutoff,
const double *  solution,
bool  fixVariables,
double  originalObjValue 
)

Call this to really test if a valid solution can be feasible Solution is number columns in size.

If fixVariables true then bounds of continuous solver updated. Returns objective value (worse than cutoff if not feasible) Previously computed objective value is now passed in (in case user does not do solve)

bool CbcModel::feasibleSolution ( int &  numberIntegerInfeasibilities,
int &  numberObjectInfeasibilities 
) const

Test the current solution for feasiblility.

Scan all objects for indications of infeasibility. This is broken down into simple integer infeasibility (numberIntegerInfeasibilities) and all other reports of infeasibility (numberObjectInfeasibilities).

double* CbcModel::currentSolution (  )  const [inline]

Solution to the most recent lp relaxation.

The solver's solution to the most recent lp relaxation.

Definition at line 922 of file CbcModel.hpp.

References currentSolution_.

const double* CbcModel::testSolution (  )  const [inline]

For testing infeasibilities - will point to currentSolution_ or solver-->getColSolution().

Definition at line 927 of file CbcModel.hpp.

References testSolution_.

void CbcModel::setTestSolution ( const double *  solution  )  [inline]

Holds solution at continuous (after cuts if branchAndBound called).

Definition at line 929 of file CbcModel.hpp.

References testSolution_.

void CbcModel::reserveCurrentSolution ( const double *  solution = NULL  ) 

Make sure region there and optionally copy solution.

const double* CbcModel::getColSolution (  )  const [inline]

Get pointer to array[getNumCols()] of primal solution vector.

Definition at line 935 of file CbcModel.hpp.

References OsiSolverInterface::getColSolution(), and solver_.

const double* CbcModel::getRowPrice (  )  const [inline]

Get pointer to array[getNumRows()] of dual prices.

Definition at line 939 of file CbcModel.hpp.

References OsiSolverInterface::getRowPrice(), and solver_.

const double* CbcModel::getReducedCost (  )  const [inline]

Get a pointer to array[getNumCols()] of reduced costs.

Definition at line 943 of file CbcModel.hpp.

References OsiSolverInterface::getReducedCost(), and solver_.

const double* CbcModel::getRowActivity (  )  const [inline]

Get pointer to array[getNumRows()] of row activity levels.

Definition at line 947 of file CbcModel.hpp.

References OsiSolverInterface::getRowActivity(), and solver_.

double CbcModel::getCurrentObjValue (  )  const [inline]

Get current objective function value.

Definition at line 951 of file CbcModel.hpp.

References CbcCurrentObjectiveValue, and dblParam_.

double CbcModel::getCurrentMinimizationObjValue (  )  const [inline]

Get current minimization objective function value.

Definition at line 954 of file CbcModel.hpp.

References CbcCurrentMinimizationObjectiveValue, and dblParam_.

double CbcModel::getMinimizationObjValue (  )  const [inline]

Get best objective function value as minimization.

Definition at line 958 of file CbcModel.hpp.

References bestObjective_.

void CbcModel::setMinimizationObjValue ( double  value  )  [inline]

Set best objective function value as minimization.

Definition at line 961 of file CbcModel.hpp.

References bestObjective_.

double CbcModel::getObjValue (  )  const [inline]

Get best objective function value.

Definition at line 965 of file CbcModel.hpp.

References bestObjective_, OsiSolverInterface::getObjSense(), and solver_.

double CbcModel::getBestPossibleObjValue (  )  const

Get best possible objective function value.

This is better of best possible left on tree and best solution found. If called from within branch and cut may be optimistic.

void CbcModel::setObjValue ( double  value  )  [inline]

Set best objective function value.

Definition at line 974 of file CbcModel.hpp.

References bestObjective_, OsiSolverInterface::getObjSense(), and solver_.

double* CbcModel::bestSolution (  )  const [inline]

The best solution to the integer programming problem.

The best solution to the integer programming problem found during the search. If no solution is found, the method returns null.

Definition at line 983 of file CbcModel.hpp.

References bestSolution_.

int CbcModel::getSolutionCount (  )  const [inline]

Get number of solutions.

Definition at line 987 of file CbcModel.hpp.

References numberSolutions_.

void CbcModel::setSolutionCount ( int  value  )  [inline]

Set number of solutions (so heuristics will be different).

Definition at line 991 of file CbcModel.hpp.

References numberSolutions_.

int CbcModel::phase (  )  const [inline]

Current phase (so heuristics etc etc can find out).

0 - initial solve 1 - solve with cuts at root 2 - solve with cuts 3 - other e.g. strong branching 4 - trying to validate a solution 5 - at end of search

Definition at line 1001 of file CbcModel.hpp.

References phase_.

int CbcModel::getNumberHeuristicSolutions (  )  const [inline]

Get number of heuristic solutions.

Definition at line 1005 of file CbcModel.hpp.

References numberHeuristicSolutions_.

void CbcModel::setObjSense ( double  s  )  [inline]

Set objective function sense (1 for min (default), -1 for max,).

Definition at line 1008 of file CbcModel.hpp.

References CbcOptimizationDirection, dblParam_, OsiSolverInterface::setObjSense(), and solver_.

double CbcModel::getContinuousObjective (  )  const [inline]

Value of objective at continuous.

Definition at line 1012 of file CbcModel.hpp.

References originalContinuousObjective_.

void CbcModel::setContinuousObjective ( double  value  )  [inline]

Holds solution at continuous (after cuts if branchAndBound called).

Definition at line 1014 of file CbcModel.hpp.

References originalContinuousObjective_.

int CbcModel::getContinuousInfeasibilities (  )  const [inline]

Number of infeasibilities at continuous.

Definition at line 1017 of file CbcModel.hpp.

References continuousInfeasibilities_.

void CbcModel::setContinuousInfeasibilities ( int  value  )  [inline]

Holds solution at continuous (after cuts if branchAndBound called).

Definition at line 1019 of file CbcModel.hpp.

References continuousInfeasibilities_.

double CbcModel::rootObjectiveAfterCuts (  )  const [inline]

Value of objective after root node cuts added.

Definition at line 1022 of file CbcModel.hpp.

References continuousObjective_.

double CbcModel::sumChangeObjective (  )  const [inline]

Sum of Changes to objective by first solve.

Definition at line 1025 of file CbcModel.hpp.

References sumChangeObjective1_.

int CbcModel::numberGlobalViolations (  )  const [inline]

Number of times global cuts violated.

When global cut pool then this should be kept for each cut and type of cut

Definition at line 1029 of file CbcModel.hpp.

References numberGlobalViolations_.

void CbcModel::clearNumberGlobalViolations (  )  [inline]

Holds solution at continuous (after cuts if branchAndBound called).

Definition at line 1031 of file CbcModel.hpp.

References numberGlobalViolations_.

bool CbcModel::resolveAfterTakeOffCuts (  )  const [inline]

Whether to force a resolve after takeOffCuts.

Definition at line 1034 of file CbcModel.hpp.

References resolveAfterTakeOffCuts_.

void CbcModel::setResolveAfterTakeOffCuts ( bool  yesNo  )  [inline]

Holds solution at continuous (after cuts if branchAndBound called).

Definition at line 1036 of file CbcModel.hpp.

References resolveAfterTakeOffCuts_.

CbcCompareBase* CbcModel::nodeComparison (  )  const [inline]

Definition at line 1043 of file CbcModel.hpp.

References nodeCompare_.

void CbcModel::setNodeComparison ( CbcCompareBase compare  ) 

void CbcModel::setNodeComparison ( CbcCompareBase compare  ) 

CbcFeasibilityBase* CbcModel::problemFeasibility (  )  const [inline]

Definition at line 1052 of file CbcModel.hpp.

References problemFeasibility_.

void CbcModel::setProblemFeasibility ( CbcFeasibilityBase feasibility  ) 

void CbcModel::setProblemFeasibility ( CbcFeasibilityBase feasibility  ) 

CbcTree* CbcModel::tree (  )  const [inline]

Tree method e.g. heap (which may be overridden by inheritance).

Definition at line 1061 of file CbcModel.hpp.

References tree_.

void CbcModel::passInTreeHandler ( CbcTree tree  ) 

For modifying tree handling (original is cloned).

void CbcModel::passInSubTreeModel ( CbcModel model  ) 

For passing in an CbcModel to do a sub Tree (with derived tree handlers).

Passed in model must exist for duration of branch and bound

CbcModel* CbcModel::subTreeModel ( OsiSolverInterface solver = NULL  )  const

For retrieving a copy of subtree model with given OsiSolver.

If no subtree model will use self (up to user to reset cutoff etc). If solver NULL uses current

int CbcModel::numberStoppedSubTrees (  )  const [inline]

Returns number of times any subtree stopped on nodes, time etc.

Definition at line 1075 of file CbcModel.hpp.

References numberStoppedSubTrees_.

void CbcModel::incrementSubTreeStopped (  )  [inline]

Says a sub tree was stopped.

Definition at line 1078 of file CbcModel.hpp.

References numberStoppedSubTrees_.

int CbcModel::typePresolve (  )  const [inline]

Whether to automatically do presolve before branch and bound (subTrees).

0 - no 1 - ordinary presolve 2 - integer presolve (dodgy)

Definition at line 1085 of file CbcModel.hpp.

References presolve_.

void CbcModel::setTypePresolve ( int  value  )  [inline]

Tree method e.g. heap (which may be overridden by inheritance).

Definition at line 1087 of file CbcModel.hpp.

References presolve_.

CbcBranchDecision* CbcModel::branchingMethod (  )  const [inline]

Get the current branching decision method.

Definition at line 1098 of file CbcModel.hpp.

References branchingMethod_.

void CbcModel::setBranchingMethod ( CbcBranchDecision method  )  [inline]

Set the branching decision method.

Definition at line 1101 of file CbcModel.hpp.

References branchingMethod_.

void CbcModel::setBranchingMethod ( CbcBranchDecision method  )  [inline]

Set the branching method.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 1107 of file CbcModel.hpp.

References branchingMethod_.

int CbcModel::stateOfSearch (  )  const [inline]

State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no solution but many nodes.

Definition at line 1120 of file CbcModel.hpp.

References stateOfSearch_.

void CbcModel::setStateOfSearch ( int  state  )  [inline]

State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no solution but many nodes.

Definition at line 1122 of file CbcModel.hpp.

References stateOfSearch_.

int CbcModel::searchStrategy (  )  const [inline]

Strategy worked out - mainly at root node for use by CbcNode.

Definition at line 1125 of file CbcModel.hpp.

References searchStrategy_.

void CbcModel::setSearchStrategy ( int  value  )  [inline]

Set strategy worked out - mainly at root node for use by CbcNode.

Definition at line 1128 of file CbcModel.hpp.

References searchStrategy_.

int CbcModel::numberCutGenerators (  )  const [inline]

Get the number of cut generators.

Definition at line 1132 of file CbcModel.hpp.

References numberCutGenerators_.

CbcCutGenerator** CbcModel::cutGenerators (  )  const [inline]

Get the list of cut generators.

Definition at line 1135 of file CbcModel.hpp.

References generator_.

CbcCutGenerator* CbcModel::cutGenerator ( int  i  )  const [inline]

Get the specified cut generator.

Definition at line 1138 of file CbcModel.hpp.

References generator_.

CbcCutGenerator* CbcModel::virginCutGenerator ( int  i  )  const [inline]

Get the specified cut generator before any changes.

Definition at line 1141 of file CbcModel.hpp.

References virginGenerator_.

void CbcModel::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.

howoften affects how generator is used. 0 or 1 means always, >1 means every that number of nodes. Negative values have same meaning as positive but they may be switched off (-> -100) by code if not many cuts generated at continuous. -99 is just done at root. Name is just for printout. If depth >0 overrides how often generator is called (if howOften==-1 or >0).

CbcStrategy* CbcModel::strategy (  )  const [inline]

Get the current strategy.

Definition at line 1164 of file CbcModel.hpp.

References strategy_.

void CbcModel::setStrategy ( CbcStrategy strategy  ) 

Set the strategy. Clones.

CbcModel* CbcModel::parentModel (  )  const [inline]

Get the current parent model.

Definition at line 1169 of file CbcModel.hpp.

References parentModel_.

Referenced by setParentModel().

void CbcModel::setParentModel ( CbcModel parentModel  )  [inline]

Set the parent model.

Definition at line 1172 of file CbcModel.hpp.

References parentModel(), and parentModel_.

void CbcModel::addHeuristic ( CbcHeuristic generator  ) 

Add one heuristic - up to user to delete.

CbcHeuristic* CbcModel::heuristic ( int  i  )  const [inline]

Get the specified heuristic.

Definition at line 1182 of file CbcModel.hpp.

References heuristic_.

int CbcModel::numberHeuristics (  )  const [inline]

Get the number of heuristics.

Definition at line 1185 of file CbcModel.hpp.

References numberHeuristics_.

CbcHeuristic* CbcModel::lastHeuristic (  )  const [inline]

Pointer to heuristic solver which found last solution (or NULL).

Definition at line 1188 of file CbcModel.hpp.

References lastHeuristic_.

void CbcModel::setLastHeuristic ( CbcHeuristic last  )  [inline]

set last heuristic which found a solution

Definition at line 1191 of file CbcModel.hpp.

References lastHeuristic_.

void CbcModel::passInPriorities ( const int *  priorities,
bool  ifNotSimpleIntegers 
)

Pass in branching priorities.

If ifClique then priorities are on cliques otherwise priorities are on integer variables. Other type (if exists set to default) 1 is highest priority. (well actually -INT_MAX is but that's ugly) If hotstart > 0 then branches are created to force the variable to the value given by best solution. This enables a sort of hot start. The node choice should be greatest depth and hotstart should normally be switched off after a solution.

If ifNotSimpleIntegers true then appended to normal integers

This is now deprecated except for simple usage. If user creates Cbcobjects then set priority in them

int CbcModel::priority ( int  sequence  )  const [inline]

Returns priority level for an object (or 1000 if no priorities exist).

Definition at line 1215 of file CbcModel.hpp.

References object_, and CbcObject::priority().

void CbcModel::passInEventHandler ( const CbcEventHandler eventHandler  ) 

Set an event handler.

A clone of the handler passed as a parameter is stored in CbcModel.

CbcEventHandler* CbcModel::getEventHandler (  )  const [inline]

Retrieve a pointer to the event handler.

Definition at line 1225 of file CbcModel.hpp.

References eventHandler_.

void CbcModel::setApplicationData ( void *  appData  ) 

Set application data.

This is a pointer that the application can store into and retrieve from the solver interface. This field is available for the application to optionally define and use.

void* CbcModel::getApplicationData (  )  const

Get application data.

void CbcModel::passInSolverCharacteristics ( OsiBabSolver solverCharacteristics  ) 

For advanced applications you may wish to modify the behavior of Cbc e.g.

if the solver is a NLP solver then you may not have an exact optimum solution at each step. Information could be built into OsiSolverInterface but this is an alternative so that that interface does not have to be changed. If something similar is useful to enough solvers then it could be migrated You can also pass in by using solver->setAuxiliaryInfo. You should do that if solver is odd - if solver is normal simplex then use this. NOTE - characteristics are not cloned

const OsiBabSolver* CbcModel::solverCharacteristics (  )  const [inline]

Get solver characteristics.

Definition at line 1257 of file CbcModel.hpp.

References solverCharacteristics_.

void CbcModel::passInMessageHandler ( CoinMessageHandler handler  ) 

Pass in Message handler (not deleted at end).

void CbcModel::newLanguage ( CoinMessages::Language  language  ) 

Set language.

Referenced by setLanguage().

void CbcModel::setLanguage ( CoinMessages::Language  language  )  [inline]

Pass in Message handler (not deleted at end).

Definition at line 1269 of file CbcModel.hpp.

References newLanguage().

CoinMessageHandler* CbcModel::messageHandler (  )  const [inline]

Return handler.

Definition at line 1272 of file CbcModel.hpp.

References handler_.

CoinMessages CbcModel::messages (  )  [inline]

Return messages.

Definition at line 1275 of file CbcModel.hpp.

References messages_.

CoinMessages* CbcModel::messagesPointer (  )  [inline]

Return pointer to messages.

Definition at line 1278 of file CbcModel.hpp.

References messages_.

void CbcModel::setLogLevel ( int  value  ) 

Set log level.

int CbcModel::logLevel (  )  const [inline]

Get log level.

Definition at line 1283 of file CbcModel.hpp.

References handler_, and CoinMessageHandler::logLevel().

void CbcModel::setSpecialOptions ( int  value  )  [inline]

Set special options.

Definition at line 1300 of file CbcModel.hpp.

References specialOptions_.

int CbcModel::specialOptions (  )  const [inline]

Get special options.

Definition at line 1303 of file CbcModel.hpp.

References specialOptions_.

void CbcModel::assignSolver ( OsiSolverInterface *&  solver,
bool  deleteSolver = true 
)

Assign a solver to the model (model assumes ownership).

On return, solver will be NULL. If deleteSolver then current solver deleted (if model owned)

Note:
Parameter settings in the outgoing solver are not inherited by the incoming solver.

CbcModel& CbcModel::operator= ( const CbcModel rhs  ) 

Assignment operator.

OsiSolverInterface* CbcModel::solver (  )  const [inline]

Returns solver - has current state.

Definition at line 1338 of file CbcModel.hpp.

References solver_.

Referenced by OsiCbcSolverInterface::getRealSolverPtr().

OsiSolverInterface* CbcModel::continuousSolver (  )  const [inline]

Returns solver with continuous state.

Definition at line 1342 of file CbcModel.hpp.

References continuousSolver_.

OsiSolverInterface* CbcModel::referenceSolver (  )  const [inline]

A copy of the solver, taken at constructor or by saveReferenceSolver.

Definition at line 1346 of file CbcModel.hpp.

References referenceSolver_.

void CbcModel::saveReferenceSolver (  ) 

Save a copy of the current solver so can be reset to.

void CbcModel::resetToReferenceSolver (  ) 

Uses a copy of reference solver to be current solver.

Because of possible mismatches all exotic integer information is loat (apart from normal information in OsiSolverInterface) so SOS etc and priorities will have to be redone

void CbcModel::gutsOfDestructor (  ) 

Clears out as much as possible (except solver).

void CbcModel::gutsOfDestructor2 (  ) 

Clears out enough to reset CbcModel as if no branch and bound done.

int CbcModel::getNodeCount2 (  )  const [inline]

Get how many Nodes it took to solve the problem.

Definition at line 1369 of file CbcModel.hpp.

References numberNodes2_.

void CbcModel::setPointers ( const OsiSolverInterface solver  ) 

Set pointers for speed.

int CbcModel::reducedCostFix (  ) 

Perform reduced cost fixing.

Fixes integer variables at their current value based on reduced cost penalties. Returns number fixed

CoinWarmStartBasis* CbcModel::getEmptyBasis ( int  ns = 0,
int  na = 0 
) const

Return an empty basis object of the specified size.

A useful utility when constructing a basis for a subproblem from scratch. The object returned will be of the requested capacity and appropriate for the solver attached to the model.

void CbcModel::takeOffCuts ( OsiCuts cuts,
bool  allowResolve,
OsiCuts saveCuts 
)

Remove inactive cuts from the model.

An OsiSolverInterface is expected to maintain a valid basis, but not a valid solution, when loose cuts are deleted. Restoring a valid solution requires calling the solver to reoptimise. If it's certain the solution will not be required, set allowResolve to false to suppress reoptimisation. If saveCuts then slack cuts will be saved

int CbcModel::addCuts ( CbcNode node,
CoinWarmStartBasis *&  lastws,
bool  canFix 
)

Determine and install the active cuts that need to be added for the current subproblem.

The whole truth is a bit more complicated. The first action is a call to addCuts1(). addCuts() then sorts through the list, installs the tight cuts in the model, and does bookkeeping (adjusts reference counts). The basis returned from addCuts1() is adjusted accordingly.

If it turns out that the node should really be fathomed by bound, addCuts() simply treats all the cuts as loose as it does the bookkeeping.

canFix true if extra information being passed

void CbcModel::addCuts1 ( CbcNode node,
CoinWarmStartBasis *&  lastws 
)

Traverse the tree from node to root and prep the model.

addCuts1() begins the job of prepping the model to match the current subproblem. The model is stripped of all cuts, and the search tree is traversed from node to root to determine the changes required. Appropriate bounds changes are installed, a list of cuts is collected but not installed, and an appropriate basis (minus the cuts, but big enough to accommodate them) is constructed.

Todo:
addCuts1() is called in contexts where it's known in advance that all that's desired is to determine a list of cuts and do the bookkeeping (adjust the reference counts). The work of installing bounds and building a basis goes to waste.

void CbcModel::setObjectiveValue ( CbcNode thisNode,
const CbcNode parentNode 
) const

Set objective value in a node.

This is separated out so that odd solvers can use. It may look at extra information in solverCharacteriscs_ and will also use bound from parent node

void CbcModel::convertToDynamic (  ) 

If numberBeforeTrust >0 then we are going to use CbcBranchDynamic.

Scan and convert CbcSimpleInteger objects

int CbcModel::cliquePseudoCosts ( int  doStatistics  ) 

Use cliques for pseudocost information - return nonzero if infeasible.

void CbcModel::pseudoShadow ( double *  down,
double *  up 
)

Fill in useful estimates.

const double* CbcModel::hotstartSolution (  )  const [inline]

Get the hotstart solution.

Definition at line 1446 of file CbcModel.hpp.

References hotstartSolution_.

const int* CbcModel::hotstartPriorities (  )  const [inline]

Get the hotstart priorities.

Definition at line 1449 of file CbcModel.hpp.

References hotstartPriorities_.

CbcCountRowCut** CbcModel::addedCuts (  )  const [inline]

Return the list of cuts initially collected for this subproblem.

Definition at line 1453 of file CbcModel.hpp.

References addedCuts_.

int CbcModel::currentNumberCuts (  )  const [inline]

Number of entries in the list returned by addedCuts().

Definition at line 1456 of file CbcModel.hpp.

References currentNumberCuts_.

OsiCuts* CbcModel::globalCuts (  )  [inline]

Global cuts.

Definition at line 1459 of file CbcModel.hpp.

References globalCuts_.

void CbcModel::setNextRowCut ( const OsiRowCut cut  ) 

Copy and set a pointer to a row cut which will be added instead of normal branching.

CbcNode* CbcModel::currentNode (  )  const [inline]

Get a pointer to current node (be careful).

Definition at line 1464 of file CbcModel.hpp.

References currentNode_.

void CbcModel::setNumberStrongIterations ( int  number  )  [inline]

Set the number of iterations done in strong branching.

Definition at line 1467 of file CbcModel.hpp.

References numberStrongIterations_.

int CbcModel::numberStrongIterations (  )  const [inline]

Get the number of iterations done in strong branching.

Definition at line 1470 of file CbcModel.hpp.

References numberStrongIterations_.

void CbcModel::incrementStrongInfo ( int  numberTimes,
int  numberIterations,
int  numberFixed,
bool  ifInfeasible 
)

Increment strong info.

void CbcModel::generateCpp ( FILE *  fp,
int  options 
)

Create C++ lines to get to current state.


Member Data Documentation

OsiSolverInterface* CbcModel::solver_ [private]

The solver associated with this model.

Definition at line 1486 of file CbcModel.hpp.

Referenced by getColLower(), getColSolution(), getColUpper(), getInfinity(), getMatrixByCol(), getMatrixByRow(), getNumCols(), getNumElements(), getNumRows(), getObjCoefficients(), getObjValue(), getReducedCost(), getRightHandSide(), getRowActivity(), getRowLower(), getRowPrice(), getRowRange(), getRowSense(), getRowUpper(), isBinary(), isContinuous(), isFreeBinary(), isInteger(), isIntegerNonBinary(), setObjSense(), setObjValue(), and solver().

bool CbcModel::ourSolver_ [private]

Ownership of the solver object.

The convention is that CbcModel owns the null solver. Currently there is no public method to give CbcModel a solver without giving ownership, but the hook is here.

Definition at line 1494 of file CbcModel.hpp.

OsiSolverInterface* CbcModel::continuousSolver_ [private]

A copy of the solver, taken at the continuous (root) node.

Definition at line 1497 of file CbcModel.hpp.

Referenced by continuousSolver().

OsiSolverInterface* CbcModel::referenceSolver_ [private]

A copy of the solver, taken at constructor or by saveReferenceSolver.

Definition at line 1500 of file CbcModel.hpp.

Referenced by referenceSolver().

CoinMessageHandler* CbcModel::handler_ [private]

Message handler.

Definition at line 1503 of file CbcModel.hpp.

Referenced by logLevel(), and messageHandler().

bool CbcModel::defaultHandler_ [private]

Flag to say if handler_ is the default handler.

The default handler is deleted when the model is deleted. Other handlers (supplied by the client) will not be deleted.

Definition at line 1510 of file CbcModel.hpp.

CoinMessages CbcModel::messages_ [private]

Cbc messages.

Definition at line 1513 of file CbcModel.hpp.

Referenced by messages(), and messagesPointer().

int CbcModel::intParam_[CbcLastIntParam] [private]

Array for integer parameters.

Definition at line 1516 of file CbcModel.hpp.

Referenced by getIntParam(), and setIntParam().

double CbcModel::dblParam_[CbcLastDblParam] [private]

Array for double parameters.

Definition at line 1519 of file CbcModel.hpp.

Referenced by getCurrentMinimizationObjValue(), getCurrentObjValue(), getCutoff(), getDblParam(), getObjSense(), setDblParam(), and setObjSense().

CoinWarmStart* CbcModel::emptyWarmStart_ [mutable, private]

Pointer to an empty warm start object.

It turns out to be useful to have this available as a base from which to build custom warm start objects. This is typed as CoinWarmStart rather than CoinWarmStartBasis to allow for the possibility that a client might want to apply a solver that doesn't use a basis-based warm start. See getEmptyBasis for an example of how this field can be used.

Definition at line 1529 of file CbcModel.hpp.

double CbcModel::bestObjective_ [private]

Best objective.

Definition at line 1532 of file CbcModel.hpp.

Referenced by getMinimizationObjValue(), getObjValue(), setMinimizationObjValue(), and setObjValue().

double CbcModel::bestPossibleObjective_ [private]

Best possible objective.

Definition at line 1534 of file CbcModel.hpp.

double CbcModel::sumChangeObjective1_ [private]

Sum of Changes to objective by first solve.

Definition at line 1536 of file CbcModel.hpp.

Referenced by sumChangeObjective().

double CbcModel::sumChangeObjective2_ [private]

Sum of Changes to objective by subsequent solves.

Definition at line 1538 of file CbcModel.hpp.

double* CbcModel::bestSolution_ [private]

Array holding the incumbent (best) solution.

Definition at line 1541 of file CbcModel.hpp.

Referenced by bestSolution().

double* CbcModel::currentSolution_ [private]

Array holding the current solution.

This array is used more as a temporary.

Definition at line 1547 of file CbcModel.hpp.

Referenced by currentSolution().

const double* CbcModel::testSolution_ [mutable, private]

For testing infeasibilities - will point to currentSolution_ or solver-->getColSolution().

Definition at line 1551 of file CbcModel.hpp.

Referenced by setTestSolution(), and testSolution().

OsiCuts CbcModel::globalCuts_ [private]

Global cuts.

Definition at line 1553 of file CbcModel.hpp.

Referenced by globalCuts().

double CbcModel::minimumDrop_ [private]

Minimum degradation in objective value to continue cut generation.

Definition at line 1556 of file CbcModel.hpp.

Referenced by getMinimumDrop(), and setMinimumDrop().

int CbcModel::numberSolutions_ [private]

Number of solutions.

Definition at line 1558 of file CbcModel.hpp.

Referenced by getSolutionCount(), and setSolutionCount().

int CbcModel::stateOfSearch_ [private]

State of search 0 - no solution 1 - only heuristic solutions 2 - branched to a solution 3 - no solution but many nodes.

Definition at line 1565 of file CbcModel.hpp.

Referenced by setStateOfSearch(), and stateOfSearch().

double* CbcModel::hotstartSolution_ [private]

Hotstart solution.

Definition at line 1567 of file CbcModel.hpp.

Referenced by hotstartSolution().

int* CbcModel::hotstartPriorities_ [private]

Hotstart priorities.

Definition at line 1569 of file CbcModel.hpp.

Referenced by hotstartPriorities().

int CbcModel::numberHeuristicSolutions_ [private]

Number of heuristic solutions.

Definition at line 1571 of file CbcModel.hpp.

Referenced by getNumberHeuristicSolutions().

int CbcModel::numberNodes_ [private]

Cumulative number of nodes.

Definition at line 1573 of file CbcModel.hpp.

Referenced by getNodeCount().

int CbcModel::numberNodes2_ [private]

Cumulative number of nodes for statistics.

Must fix to match up

Definition at line 1577 of file CbcModel.hpp.

Referenced by getNodeCount2().

int CbcModel::numberIterations_ [private]

Cumulative number of iterations.

Definition at line 1579 of file CbcModel.hpp.

Referenced by getIterationCount().

int CbcModel::status_ [private]

Status of problem - 0 finished, 1 stopped, 2 difficulties.

Definition at line 1581 of file CbcModel.hpp.

Referenced by status().

int CbcModel::secondaryStatus_ [private]

Secondary status of problem -1 unset (status_ will also be -1) 0 search completed with solution 1 linear relaxation not feasible (or worse than cutoff) 2 stopped on gap 3 stopped on nodes 4 stopped on time 5 stopped on user event 6 stopped on solutions.

Definition at line 1592 of file CbcModel.hpp.

Referenced by secondaryStatus().

int CbcModel::numberIntegers_ [private]

Number of integers in problem.

Definition at line 1594 of file CbcModel.hpp.

Referenced by numberIntegers().

int CbcModel::numberRowsAtContinuous_ [private]

Number of rows at continuous.

Definition at line 1596 of file CbcModel.hpp.

Referenced by numberRowsAtContinuous().

int CbcModel::maximumNumberCuts_ [private]

Maximum number of cuts.

Definition at line 1598 of file CbcModel.hpp.

int CbcModel::phase_ [private]

Current phase (so heuristics etc etc can find out).

0 - initial solve 1 - solve with cuts at root 2 - solve with cuts 3 - other e.g. strong branching 4 - trying to validate a solution 5 - at end of search

Definition at line 1607 of file CbcModel.hpp.

Referenced by phase().

int CbcModel::currentNumberCuts_ [private]

Number of entries in addedCuts_.

Definition at line 1610 of file CbcModel.hpp.

Referenced by currentNumberCuts().

int CbcModel::maximumDepth_ [private]

Current limit on search tree depth.

The allocated size of walkback_. Increased as needed.

Definition at line 1616 of file CbcModel.hpp.

CbcNodeInfo** CbcModel::walkback_ [private]

Array used to assemble the path between a node and the search tree root.

The array is resized when necessary. maximumDepth_ is the current allocated size.

Definition at line 1622 of file CbcModel.hpp.

CbcCountRowCut** CbcModel::addedCuts_ [private]

The list of cuts initially collected for this subproblem.

When the subproblem at this node is rebuilt, a set of cuts is collected for inclusion in the constraint system. If any of these cuts are subsequently removed because they have become loose, the corresponding entry is set to NULL.

Definition at line 1631 of file CbcModel.hpp.

Referenced by addedCuts().

OsiRowCut* CbcModel::nextRowCut_ [private]

A pointer to a row cut which will be added instead of normal branching.

After use it should be set to NULL.

Definition at line 1636 of file CbcModel.hpp.

CbcNode* CbcModel::currentNode_ [private]

Current node so can be used elsewhere.

Definition at line 1639 of file CbcModel.hpp.

Referenced by currentNode().

int* CbcModel::integerVariable_ [private]

Indices of integer variables.

Definition at line 1642 of file CbcModel.hpp.

Referenced by integerVariable().

char* CbcModel::integerInfo_ [private]

Whether of not integer.

Definition at line 1644 of file CbcModel.hpp.

Referenced by integerType().

double* CbcModel::continuousSolution_ [private]

Holds solution at continuous (after cuts).

Definition at line 1646 of file CbcModel.hpp.

Referenced by continuousSolution().

int* CbcModel::usedInSolution_ [private]

Array marked whenever a solution is found if non-zero.

Definition at line 1648 of file CbcModel.hpp.

Referenced by usedInSolution().

int CbcModel::specialOptions_ [private]

0 bit (1) - check if cuts valid (if on debugger list) 1 bit (2) - use current basis to check integer solution (rather than all slack) 2 bit (4) - don't check integer solution 3 bit (8) - Strong is doing well - keep on

Definition at line 1655 of file CbcModel.hpp.

Referenced by setSpecialOptions(), and specialOptions().

CbcCompareBase* CbcModel::nodeCompare_ [private]

User node comparison function.

Definition at line 1657 of file CbcModel.hpp.

Referenced by nodeComparison().

CbcFeasibilityBase* CbcModel::problemFeasibility_ [private]

User feasibility function (see CbcFeasibleBase.hpp).

Definition at line 1659 of file CbcModel.hpp.

Referenced by problemFeasibility().

CbcTree* CbcModel::tree_ [private]

Tree.

Definition at line 1661 of file CbcModel.hpp.

Referenced by tree().

CbcModel* CbcModel::subTreeModel_ [private]

A pointer to model to be used for subtrees.

Definition at line 1663 of file CbcModel.hpp.

int CbcModel::numberStoppedSubTrees_ [private]

Number of times any subtree stopped on nodes, time etc.

Definition at line 1665 of file CbcModel.hpp.

Referenced by incrementSubTreeStopped(), and numberStoppedSubTrees().

CbcBranchDecision* CbcModel::branchingMethod_ [private]

Variable selection function.

Definition at line 1667 of file CbcModel.hpp.

Referenced by branchingMethod(), and setBranchingMethod().

CbcStrategy* CbcModel::strategy_ [private]

Strategy.

Definition at line 1669 of file CbcModel.hpp.

Referenced by strategy().

CbcModel* CbcModel::parentModel_ [private]

Parent model.

Definition at line 1671 of file CbcModel.hpp.

Referenced by parentModel(), and setParentModel().

const double* CbcModel::cbcColLower_ [private]

Pointer to array[getNumCols()] (for speed) of column lower bounds.

0 - no 1 - ordinary presolve 2 - integer presolve (dodgy)

Definition at line 1678 of file CbcModel.hpp.

Referenced by getCbcColLower().

const double* CbcModel::cbcColUpper_ [private]

Pointer to array[getNumCols()] (for speed) of column upper bounds.

Definition at line 1680 of file CbcModel.hpp.

Referenced by getCbcColUpper().

const double* CbcModel::cbcRowLower_ [private]

Pointer to array[getNumRows()] (for speed) of row lower bounds.

Definition at line 1682 of file CbcModel.hpp.

Referenced by getCbcRowLower().

const double* CbcModel::cbcRowUpper_ [private]

Pointer to array[getNumRows()] (for speed) of row upper bounds.

Definition at line 1684 of file CbcModel.hpp.

Referenced by getCbcRowUpper().

const double* CbcModel::cbcColSolution_ [private]

Pointer to array[getNumCols()] (for speed) of primal solution vector.

Definition at line 1686 of file CbcModel.hpp.

Referenced by getCbcColSolution().

const double* CbcModel::cbcRowPrice_ [private]

Pointer to array[getNumRows()] (for speed) of dual prices.

Definition at line 1688 of file CbcModel.hpp.

Referenced by getCbcRowPrice().

const double* CbcModel::cbcReducedCost_ [private]

Get a pointer to array[getNumCols()] (for speed) of reduced costs.

Definition at line 1690 of file CbcModel.hpp.

Referenced by getCbcReducedCost().

const double* CbcModel::cbcRowActivity_ [private]

Pointer to array[getNumRows()] (for speed) of row activity levels.

Definition at line 1692 of file CbcModel.hpp.

Referenced by getCbcRowActivity().

void* CbcModel::appData_ [private]

Pointer to user-defined data structure.

Definition at line 1694 of file CbcModel.hpp.

int CbcModel::presolve_ [private]

Pointer to.

Definition at line 1696 of file CbcModel.hpp.

Referenced by setTypePresolve(), and typePresolve().

int CbcModel::numberStrong_ [private]

Maximum number of candidates to consider for strong branching.

To disable strong branching, set this to 0.

Definition at line 1700 of file CbcModel.hpp.

Referenced by numberStrong().

int CbcModel::numberBeforeTrust_ [private]

The number of branches before pseudo costs believed in dynamic strong branching.

(0 off)

Definition at line 1703 of file CbcModel.hpp.

Referenced by numberBeforeTrust().

int CbcModel::numberPenalties_ [private]

The number of variable sfor which to compute penalties in dynamic strong branching.

(0 off)

Definition at line 1706 of file CbcModel.hpp.

Referenced by numberPenalties().

double CbcModel::penaltyScaleFactor_ [private]

Scale factor to make penalties match strong.

Should/will be computed

Definition at line 1709 of file CbcModel.hpp.

Referenced by penaltyScaleFactor().

int CbcModel::numberAnalyzeIterations_ [private]

Number of analyze iterations to do.

Definition at line 1711 of file CbcModel.hpp.

Referenced by numberAnalyzeIterations(), and setNumberAnalyzeIterations().

double* CbcModel::analyzeResults_ [private]

Arrays with analysis results.

Definition at line 1713 of file CbcModel.hpp.

int CbcModel::numberInfeasibleNodes_ [private]

Number of nodes infeasible by normal branching (before cuts).

Definition at line 1715 of file CbcModel.hpp.

int CbcModel::problemType_ [private]

Problem type as set by user or found by analysis.

This will be extended 0 - not known 1 - Set partitioning <= 2 - Set partitioning == 3 - Set covering

Definition at line 1722 of file CbcModel.hpp.

Referenced by problemType(), and setProblemType().

int CbcModel::printFrequency_ [private]

Print frequency.

Definition at line 1724 of file CbcModel.hpp.

Referenced by printFrequency(), and setPrintFrequency().

int CbcModel::numberCutGenerators_ [private]

Number of cut generators.

Definition at line 1726 of file CbcModel.hpp.

Referenced by numberCutGenerators().

CbcCutGenerator** CbcModel::generator_ [private]

The solver associated with this model.

Definition at line 1728 of file CbcModel.hpp.

Referenced by cutGenerator(), and cutGenerators().

CbcCutGenerator** CbcModel::virginGenerator_ [private]

The solver associated with this model.

Definition at line 1730 of file CbcModel.hpp.

Referenced by virginCutGenerator().

int CbcModel::numberHeuristics_ [private]

Number of heuristics.

Definition at line 1732 of file CbcModel.hpp.

Referenced by numberHeuristics().

CbcHeuristic** CbcModel::heuristic_ [private]

Heuristic solvers.

Definition at line 1734 of file CbcModel.hpp.

Referenced by heuristic().

CbcHeuristic* CbcModel::lastHeuristic_ [private]

Pointer to heuristic solver which found last solution (or NULL).

Definition at line 1736 of file CbcModel.hpp.

Referenced by lastHeuristic(), and setLastHeuristic().

CbcEventHandler* CbcModel::eventHandler_ [private]

Pointer to the event handler

Definition at line 1741 of file CbcModel.hpp.

Referenced by getEventHandler().

int CbcModel::numberObjects_ [private]

Total number of objects.

Definition at line 1745 of file CbcModel.hpp.

Referenced by numberObjects(), and setNumberObjects().

CbcObject** CbcModel::object_ [private]

Integer and Clique and .

.. information

Note:
The code assumes that the first objects on the list will be SimpleInteger objects for each integer variable, followed by Clique objects. Portions of the code that understand Clique objects will fail if they do not immediately follow the SimpleIntegers. Large chunks of the code will fail if the first objects are not SimpleInteger. As of 2003.08, SimpleIntegers and Cliques are the only objects.

Definition at line 1757 of file CbcModel.hpp.

Referenced by modifiableObject(), object(), objects(), and priority().

int* CbcModel::originalColumns_ [private]

Original columns as created by integerPresolve.

Definition at line 1761 of file CbcModel.hpp.

Referenced by originalColumns().

int CbcModel::howOftenGlobalScan_ [private]

How often to scan global cuts.

Definition at line 1763 of file CbcModel.hpp.

Referenced by howOftenGlobalScan().

int CbcModel::numberGlobalViolations_ [private]

Number of times global cuts violated.

When global cut pool then this should be kept for each cut and type of cut

Definition at line 1766 of file CbcModel.hpp.

Referenced by clearNumberGlobalViolations(), and numberGlobalViolations().

double CbcModel::continuousObjective_ [private]

Value of objective at continuous (Well actually after initial round of cuts).

Definition at line 1770 of file CbcModel.hpp.

Referenced by rootObjectiveAfterCuts().

double CbcModel::originalContinuousObjective_ [private]

Value of objective before root node cuts added.

Definition at line 1773 of file CbcModel.hpp.

Referenced by getContinuousObjective(), and setContinuousObjective().

int CbcModel::continuousInfeasibilities_ [private]

Number of infeasibilities at continuous.

Definition at line 1775 of file CbcModel.hpp.

Referenced by getContinuousInfeasibilities(), and setContinuousInfeasibilities().

int CbcModel::maximumCutPassesAtRoot_ [private]

Maximum number of cut passes at root.

Definition at line 1777 of file CbcModel.hpp.

Referenced by getMaximumCutPassesAtRoot(), and setMaximumCutPassesAtRoot().

int CbcModel::maximumCutPasses_ [private]

Maximum number of cut passes.

Definition at line 1779 of file CbcModel.hpp.

Referenced by getMaximumCutPasses(), and setMaximumCutPasses().

int CbcModel::currentPassNumber_ [private]

Current cut pass number.

Definition at line 1781 of file CbcModel.hpp.

Referenced by getCurrentPassNumber().

int CbcModel::maximumWhich_ [private]

Maximum number of cuts (for whichGenerator_).

Definition at line 1783 of file CbcModel.hpp.

int* CbcModel::whichGenerator_ [private]

Which cut generator generated this cut.

Definition at line 1785 of file CbcModel.hpp.

int CbcModel::maximumStatistics_ [private]

Maximum number of statistics.

Definition at line 1787 of file CbcModel.hpp.

CbcStatistics** CbcModel::statistics_ [private]

statistics

Definition at line 1789 of file CbcModel.hpp.

int CbcModel::numberFixedAtRoot_ [private]

Number of fixed by analyze at root.

Definition at line 1791 of file CbcModel.hpp.

int CbcModel::numberFixedNow_ [private]

Number fixed by analyze so far.

Definition at line 1793 of file CbcModel.hpp.

bool CbcModel::stoppedOnGap_ [private]

Whether stopping on gap.

Definition at line 1795 of file CbcModel.hpp.

bool CbcModel::eventHappened_ [private]

Whether event happened.

Definition at line 1797 of file CbcModel.hpp.

int CbcModel::numberLongStrong_ [private]

Number of long strong goes.

Definition at line 1799 of file CbcModel.hpp.

int CbcModel::numberOldActiveCuts_ [private]

Number of old active cuts.

Definition at line 1801 of file CbcModel.hpp.

int CbcModel::numberNewCuts_ [private]

Number of new cuts.

Definition at line 1803 of file CbcModel.hpp.

int CbcModel::sizeMiniTree_ [private]

Size of mini - tree.

Definition at line 1805 of file CbcModel.hpp.

Referenced by setSizeMiniTree(), and sizeMiniTree().

int CbcModel::searchStrategy_ [private]

Strategy worked out - mainly at root node.

Definition at line 1807 of file CbcModel.hpp.

Referenced by searchStrategy(), and setSearchStrategy().

int CbcModel::numberStrongIterations_ [private]

Number of iterations in strong branching.

Definition at line 1809 of file CbcModel.hpp.

Referenced by numberStrongIterations(), and setNumberStrongIterations().

int CbcModel::strongInfo_[3] [private]

0 - number times strong branching done, 1 - number fixed, 2 - number infeasible

Definition at line 1811 of file CbcModel.hpp.

OsiBabSolver* CbcModel::solverCharacteristics_ [private]

For advanced applications you may wish to modify the behavior of Cbc e.g.

if the solver is a NLP solver then you may not have an exact optimum solution at each step. This gives characteristics - just for one BAB. For actually saving/restoring a solution you need the actual solver one.

Definition at line 1818 of file CbcModel.hpp.

Referenced by solverCharacteristics().

bool CbcModel::resolveAfterTakeOffCuts_ [private]

Whether to force a resolve after takeOffCuts.

Definition at line 1820 of file CbcModel.hpp.

Referenced by resolveAfterTakeOffCuts(), and setResolveAfterTakeOffCuts().


The documentation for this class was generated from the following file:
Generated on Thu May 15 22:00:01 2008 by  doxygen 1.4.7