Minotaur 0.4.1
Docs for developers
Public Member Functions | List of all members
Minotaur::BranchAndBound Class Reference

Implement a generic branch-and-bound algorithm on a single cpu. More...

#include <BranchAndBound.h>

Public Member Functions

 BranchAndBound ()
 Default constructor.
 
 BranchAndBound (EnvPtr env, ProblemPtr problem)
 Constructor for a given Problem and Environment.
 
virtual ~BranchAndBound ()
 Destroy.
 
void addPreRootHeur (HeurPtr h)
 Add a heuristic that will be called before root node. More...
 
double getPerGap ()
 Return the percentage gap between the lower and upper bounds. More...
 
double getLb ()
 Return the lower bound from the search tree. More...
 
NodeProcessorPtr getNodeProcessor ()
 Return a pointer to NodeProcessor used in branch-and-bound.
 
NodeRelaxerPtr getNodeRelaxer ()
 Return a pointer to NodeRelaxer used in branch-and-bound.
 
SolutionPtr getSolution ()
 
SolveStatus getStatus ()
 Return the final status.
 
TreeManagerPtr getTreeManager ()
 Return a pointer to the tree manager. The client can then directly query the TreeManager for its size and other attributes.
 
double getUb ()
 Return the upper bound for the solution value from the search tree. More...
 
UInt numProcNodes ()
 Return number of nodes processed while solving.
 
void setLogLevel (LogLevel level)
 Set log level. More...
 
void setNodeProcessor (NodeProcessorPtr p)
 Set the NodeProcessor that processes each node. More...
 
void setNodeRelaxer (NodeRelaxerPtr nr)
 Set the NodeRelaxer for setting-up relaxations at each node. More...
 
void shouldCreateRoot (bool b)
 Switch to turn on/off root-node creation. More...
 
void solve ()
 Start solving the Problem using branch-and-bound.
 
double totalTime ()
 Return total time taken.
 
void writeStats (std::ostream &out)
 Write statistics to the ostream out.
 
void writeStats ()
 Write statistics to the logger.
 

Detailed Description

Implement a generic branch-and-bound algorithm on a single cpu.

Member Function Documentation

◆ addPreRootHeur()

void BranchAndBound::addPreRootHeur ( HeurPtr  h)

Add a heuristic that will be called before root node.

Parameters
[in]hThe heuristic that should be called. This heuristic will be called after all previously added heuristic.

◆ getLb()

double BranchAndBound::getLb ( )

Return the lower bound from the search tree.

This bound is defined as the minimum of the bounds from all active nodes. It may not be a bound on the optimal solution value.

◆ getPerGap()

double BranchAndBound::getPerGap ( )

Return the percentage gap between the lower and upper bounds.

Gap percentage is calculated as $\frac{u - l}{\left|u\right|+\epsilon} \times 100$, where $u$ is the upper bound, $l$ is the lower bound and $\epsilon$ is a small constant to avoid division by zero.

◆ getUb()

double BranchAndBound::getUb ( )

Return the upper bound for the solution value from the search tree.

This bound may or may not correspond to a feasible solution of the problem. It may be obtained from a feasible solution of a relaxation of the problem.

◆ setLogLevel()

void BranchAndBound::setLogLevel ( LogLevel  level)

Set log level.

Parameters
[in]levelThe desired log level for this class.

◆ setNodeProcessor()

void BranchAndBound::setNodeProcessor ( NodeProcessorPtr  p)

Set the NodeProcessor that processes each node.

Parameters
[in]pThe desired node-processor.

◆ setNodeRelaxer()

void BranchAndBound::setNodeRelaxer ( NodeRelaxerPtr  nr)

Set the NodeRelaxer for setting-up relaxations at each node.

Parameters
[in]nrThe desired node-relaxer.

◆ shouldCreateRoot()

void BranchAndBound::shouldCreateRoot ( bool  b)

Switch to turn on/off root-node creation.

Sometimes a client may set up a root node on its own and may not want the default root node.

Parameters
[in]bTrue if root node should be created, false otherwise.

The documentation for this class was generated from the following files:

Minotaur source code documented by Doxygen 1.9.4 on Sat May 17 2025