Minotaur 0.4.1
Docs for developers
|
#include <NodeProcessor.h>
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. | |
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:
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.
|
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.
|
pure virtual |
Find branches that will be used to branch at this node.
Implemented in Minotaur::BndProcessor, Minotaur::MsProcessor, Minotaur::ParBndProcessor, Minotaur::ParPCBProcessor, Minotaur::PCBProcessor, and Minotaur::QPDProcessor.
|
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.
|
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.
|
virtual |
Process the root node.
Reimplemented in Minotaur::QPDProcessor.
|
inlinevirtual |
Write statistics to our own logger.
Reimplemented in Minotaur::BndProcessor, Minotaur::MsProcessor, Minotaur::ParBndProcessor, Minotaur::ParPCBProcessor, Minotaur::PCBProcessor, and Minotaur::QPDProcessor.
|
inlinevirtual |
Write statistics to a given output stream.
Reimplemented in Minotaur::BndProcessor, Minotaur::MsProcessor, Minotaur::ParBndProcessor, Minotaur::ParPCBProcessor, Minotaur::PCBProcessor, and Minotaur::QPDProcessor.