Minotaur 0.4.1
Docs for developers
Public Member Functions | Protected Attributes | List of all members
Minotaur::Brancher Class Referenceabstract

A brancher is used to find suitable branches for a given node. e.g. LexicoBrancher. This class is abstract. More...

#include <Brancher.h>

Inheritance diagram for Minotaur::Brancher:
Inheritance graph
[legend]
Collaboration diagram for Minotaur::Brancher:
Collaboration graph
[legend]

Public Member Functions

 Brancher ()
 Default constructor.
 
virtual ~Brancher ()
 Destroy.
 
virtual Branches findBranches (RelaxationPtr rel, NodePtr node, ConstSolutionPtr sol, SolutionPoolPtr s_pool, BrancherStatus &br_status, ModVector &mods)=0
 Find a branching candidate. More...
 
virtual std::string getName () const =0
 Return the name of this brancher. More...
 
virtual void updateAfterSolve (NodePtr node, ConstSolutionPtr sol)
 Update pseudo-costs after LP is solved. More...
 
virtual void writeStats (std::ostream &) const
 Write statistics to the given out stream. More...
 

Protected Attributes

LoggerPtr logger_
 Log manager.
 

Detailed Description

A brancher is used to find suitable branches for a given node. e.g. LexicoBrancher. This class is abstract.

Member Function Documentation

◆ findBranches()

virtual Branches Minotaur::Brancher::findBranches ( RelaxationPtr  rel,
NodePtr  node,
ConstSolutionPtr  sol,
SolutionPoolPtr  s_pool,
BrancherStatus br_status,
ModVector &  mods 
)
pure virtual

Find a branching candidate.

Returns
NULL if x does not have any fractional values for integer constrained variables or if no branching candidates are found (e.g. when we realize that problem is infeasible).
Parameters
[in]relRelaxation at the current node.
[in]nodeThe current node.
[in]solThe solution at the current node.
[in]s_poolSolution pool containing known feasible solutions.
[out]br_statusStatus returned by this brancher.
[out]modsModification returned by this brancher. NULL if none found.

Implemented in Minotaur::HybridBrancher, Minotaur::LexicoBrancher, Minotaur::MaxFreqBrancher, Minotaur::MaxInfBrancher, Minotaur::MaxVioBrancher, Minotaur::RandomBrancher, Minotaur::ReliabilityBrancher, Minotaur::UnambRelBrancher, Minotaur::WeakBrancher, and Minotaur::ParReliabilityBrancher.

◆ getName()

virtual std::string Minotaur::Brancher::getName ( ) const
pure virtual

◆ updateAfterSolve()

void Brancher::updateAfterSolve ( NodePtr  node,
ConstSolutionPtr  sol 
)
virtual

Update pseudo-costs after LP is solved.

Parameters
[in]nodeThe node for which relaxation is solved. The pseudo cost of branching candidate used in node->parent is updated.
[in]solThe solution of the relaxation at this node (not the parent).

Reimplemented in Minotaur::HybridBrancher, Minotaur::MaxInfBrancher, Minotaur::ParReliabilityBrancher, Minotaur::ReliabilityBrancher, Minotaur::UnambRelBrancher, Minotaur::WeakBrancher, Minotaur::MaxFreqBrancher, and Minotaur::MaxVioBrancher.

◆ writeStats()

virtual void Minotaur::Brancher::writeStats ( std::ostream &  ) const
inlinevirtual

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

Minotaur source code documented by Doxygen 1.9.4 on Thu Apr 24 2025