14#ifndef MINOTAURPARPCBPROCESSOR_H
15#define MINOTAURPARPCBPROCESSOR_H
19#include "ParReliabilityBrancher.h"
20#include "ParTreeManager.h"
28 typedef const Solution* ConstSolutionPtr;
93 UIntVector timesDown, DoubleVector pseudoUp,
94 DoubleVector pseudoDown,
UInt nodesProc);
138 static const std::string
me_;
198 virtual void tightenBounds_();
Define the NodeProcessor class for processing nodes in the branch-and-bound algorithm.
Manages storage, addition and deletion of cuts to problem.
Declare important 'types' used in Minotaur.
Abstract base class to manage cuts in the relaxation.
Definition: CutManager.h:42
Definition: Environment.h:28
Definition: Heuristic.h:30
Definition: NodeProcessor.h:49
Implement a generic parallel branch-and-bound algorithm on a multicore cpu.
Definition: ParBranchAndBound.h:48
Default node processor used in solver for now.
Definition: ParPCBProcessor.h:47
bool contOnErr_
Definition: ParPCBProcessor.h:114
double cutOff_
If lb is greater than cutOff_, we can prune this node.
Definition: ParPCBProcessor.h:120
double oATol_
Absolute tolerance for pruning a node on basis of bounds.
Definition: ParPCBProcessor.h:157
void process(NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool)
Definition: ParPCBProcessor.cpp:225
void writeStats() const
Write statistics to our own logger.
Definition: ParPCBProcessor.cpp:589
UInt numSolutions_
How many new solutions were found by the processor.
Definition: ParPCBProcessor.h:145
EnginePtr engine_
Engine used to process the relaxation.
Definition: ParPCBProcessor.h:123
WarmStartPtr getWarmStart()
Definition: ParPCBProcessor.cpp:140
virtual bool isFeasible_(NodePtr node, ConstSolutionPtr sol, SolutionPoolPtr s_pool, bool &should_prune)
Definition: ParPCBProcessor.cpp:146
HandlerVector handlers_
All the handlers that are used for this processor.
Definition: ParPCBProcessor.h:129
double oRTol_
Relative tolerance for pruning a node on basis of bounds.
Definition: ParPCBProcessor.h:160
~ParPCBProcessor()
Destroy.
Definition: ParPCBProcessor.cpp:93
Branches getBranches()
Find branches that will be used to branch at this node.
Definition: ParPCBProcessor.cpp:126
CutManager * cutMan_
The cut manager.
Definition: ParPCBProcessor.h:117
virtual bool shouldPrune_(NodePtr node, double solval, SolutionPoolPtr s_pool)
Definition: ParPCBProcessor.cpp:425
void separate_(ConstSolutionPtr sol, NodePtr node, SolutionPoolPtr s_pool, SeparationStatus *status)
Separate the given point from the node relaxation.
Definition: ParPCBProcessor.cpp:381
bool foundNewSolution()
Definition: ParPCBProcessor.cpp:120
RelaxationPtr relaxation_
Relaxation that is processed by this processor.
Definition: ParPCBProcessor.h:148
EngineStatus engineStatus_
Status of the engine.
Definition: ParPCBProcessor.h:126
ParNodeStats stats_
Statistics.
Definition: ParPCBProcessor.h:151
virtual void solveRelaxation_()
Solve the relaxation.
Definition: ParPCBProcessor.cpp:558
WarmStartPtr ws_
Warm-start information for start processing the children.
Definition: ParPCBProcessor.h:154
HeurVector heurs_
Heuristics that can be called at each node.
Definition: ParPCBProcessor.h:132
Branches branches_
Branches found by this processor for this node.
Definition: ParPCBProcessor.h:108
virtual bool presolveNode_(NodePtr node, SolutionPoolPtr s_pool)
Presolve a node.
Definition: ParPCBProcessor.cpp:176
static const std::string me_
For logging.
Definition: ParPCBProcessor.h:138
ParPCBProcessor()
Default constructor.
LoggerPtr logger_
Log.
Definition: ParPCBProcessor.h:135
int presFreq_
Definition: ParPCBProcessor.h:142
Implement a generic parallel branch-and-bound algorithm on a multicore cpu.
Definition: ParQGBranchAndBound.h:48
Definition: Relaxation.h:53
Definition: SolutionPool.h:28
Definition: Solution.h:30
Definition: WarmStart.h:45
Definition: ActiveNodeStore.h:20
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
SeparationStatus
Status from separation routine:
Definition: Types.h:217
EngineStatus
Different status that an external engine may report.
Definition: Types.h:176
Definition: ParPCBProcessor.h:30
UInt ub
Number of nodes processed.
Definition: ParPCBProcessor.h:36
UInt proc
Number of times problem ocurred in solving.
Definition: ParPCBProcessor.h:35
UInt inf
Number of times relaxation became infeasible.
Definition: ParPCBProcessor.h:32
UInt prob
Number of times relaxation gave optimal feasible solution.
Definition: ParPCBProcessor.h:34
UInt opt
Number of times relaxation became infeasible.
Definition: ParPCBProcessor.h:33