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

#include <NodeProcessor.h>

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

Public Member Functions

 NodeProcessor ()
 Default constructor.
 
virtual ~NodeProcessor ()
 Destroy.
 
virtual void setBrancher (BrancherPtr brancher)
 Set the brancher that will be used with this node processor.
 
virtual void processRootNode (NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool)
 Process the root node. More...
 
virtual void process (NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool)=0
 
virtual Branches getBranches ()=0
 Find branches that will be used to branch at this node. More...
 
virtual bool foundNewSolution ()=0
 
virtual WarmStartPtr getWarmStart ()=0
 
virtual BrancherPtr getBrancher ()
 Return brancher.
 
virtual void writeStats (std::ostream &) const
 Write statistics to a given output stream. More...
 
virtual void writeStats () const
 Write statistics to our own logger. More...
 
virtual void setCutManager (CutManager *)
 

Protected Attributes

BrancherPtr brancher_
 What brancher is used for this processor.
 

Detailed Description

NodeProcessor class is the place that does the most important tasks in branch-and-bound. It processes a given node. By processing a node, we mean:

  1. presolving
  2. solving the relaxation
  3. checking if the relaxation or the problem itself is infeasible
  4. adding cuts, tightening bounds
  5. branching decision.

The base class can be overridden with derived class for specific classes of problems. In the default class, we do no presolving, solve the relaxation by calling a continuous solver (lp_engine for LPs and nlp_engine for NLPs). We do not add any cuts or tighten bounds. We branch lexicographically.

Member Function Documentation

◆ foundNewSolution()

virtual bool Minotaur::NodeProcessor::foundNewSolution ( )
pure virtual

True if the node processor found at least one feasible solution while processing this node.

Implemented in Minotaur::BndProcessor, Minotaur::MsProcessor, Minotaur::ParBndProcessor, Minotaur::ParPCBProcessor, Minotaur::PCBProcessor, and Minotaur::QPDProcessor.

◆ getBranches()

virtual Branches Minotaur::NodeProcessor::getBranches ( )
pure virtual

◆ getWarmStart()

virtual WarmStartPtr Minotaur::NodeProcessor::getWarmStart ( )
pure virtual

Return the warm start information that will be used to start processing children.

Implemented in Minotaur::BndProcessor, Minotaur::MsProcessor, Minotaur::ParBndProcessor, Minotaur::ParPCBProcessor, Minotaur::PCBProcessor, and Minotaur::QPDProcessor.

◆ process()

virtual void Minotaur::NodeProcessor::process ( NodePtr  node,
RelaxationPtr  rel,
SolutionPoolPtr  s_pool 
)
pure virtual

Process relaxation at the given node. If a solution is found, it must be added to the solution pool.

Implemented in Minotaur::BndProcessor, Minotaur::MsProcessor, Minotaur::ParBndProcessor, Minotaur::ParPCBProcessor, Minotaur::PCBProcessor, and Minotaur::QPDProcessor.

◆ processRootNode()

void NodeProcessor::processRootNode ( NodePtr  node,
RelaxationPtr  rel,
SolutionPoolPtr  s_pool 
)
virtual

Process the root node.

Reimplemented in Minotaur::QPDProcessor.

◆ writeStats() [1/2]

virtual void Minotaur::NodeProcessor::writeStats ( ) const
inlinevirtual

◆ writeStats() [2/2]

virtual void Minotaur::NodeProcessor::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