14#ifndef MINOTAURQPDPROCESSOR_H
15#define MINOTAURQPDPROCESSOR_H
23 class NonlinearFunction;
26 typedef NonlinearFunction* NonlinearFunctionPtr;
27 typedef Solution* SolutionPtr;
28 typedef const Solution* ConstSolutionPtr;
56 HandlerVector &handlers);
102 HandlerVector handlers_;
115 static const std::string me_;
118 std::vector<ConstConstraintPtr> nlCons_;
132 const double solAbsTol_;
134 const double solRelTol_;
156 VariableConstIterator vbeg, VariableConstIterator vend,
160 UInt n, VariableConstIterator vbeg,
161 VariableConstIterator vend,
164 void fixInts_(
const double *x, std::stack<Modification *> *nlp_mods);
166 void chkObjVio_(
double vio,
double etaval,
bool &large_vio);
168 void chkVio_(
NodePtr node,
double *vio,
double &tvio,
double &maxvio,
174 void chkObjVio2_(
const double *qpx,
NodePtr node,
double best,
175 bool &hiobjd,
bool &hietavio);
177 bool isNLPFeasible2_(
const double *qpx,
double *vio,
NodePtr node,
bool
199 bool &should_resolve);
203 bool &should_resolve);
249 bool shouldSepObj_(
bool is_nec,
double vio,
double etaval);
258 void unfixInts_(std::stack<Modification *> *nlp_mods);
265 typedef QPDProcessor* QPDProcessorPtr;
Define the NodeProcessor class for processing nodes in the branch-and-bound algorithm.
Declare important 'types' used in Minotaur.
The Constraint class is used to manage a constraint.
Definition: Constraint.h:61
Definition: Environment.h:28
Definition: Function.h:37
Definition: Heuristic.h:30
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Definition: NodeProcessor.h:49
Base class for nonlinear functions.
Definition: NonlinearFunction.h:31
Definition: QPDProcessor.h:48
bool foundNewSolution()
Definition: QPDProcessor.cpp:262
~QPDProcessor()
Destroy.
Definition: QPDProcessor.cpp:116
void writeStats() const
Write statistics to our own logger.
Definition: QPDProcessor.h:85
QPDProcessor()
Default constructor.
Definition: QPDProcessor.cpp:45
void processRootNode(NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool)
Process the root node.
Definition: QPDProcessor.cpp:837
Branches getBranches()
Find branches that will be used to branch at this node.
Definition: QPDProcessor.cpp:268
WarmStartPtr getWarmStart()
Definition: QPDProcessor.cpp:275
void process(NodePtr node, RelaxationPtr rel, SolutionPoolPtr s_pool)
Definition: QPDProcessor.cpp:924
Definition: Relaxation.h:53
Definition: SolutionPool.h:28
Definition: Solution.h:30
Definition: Variable.h:31
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: QPDProcessor.h:30
UInt ub
Number of times qp-point separated.
Definition: QPDProcessor.h:41
UInt opt
Number of NLP-solves feasible.
Definition: QPDProcessor.h:37
UInt prob
Number of times relaxation gave optimal feasible solution.
Definition: QPDProcessor.h:38
UInt nlp
Number of times relaxation became infeasible.
Definition: QPDProcessor.h:34
UInt proc
Number of times problem ocurred in solving.
Definition: QPDProcessor.h:39
UInt inf
Number of cuts added.
Definition: QPDProcessor.h:33
UInt cuts
Number of times relaxation became infeasible.
Definition: QPDProcessor.h:32
UInt nlpU
Number of NLP-solves infeasible.
Definition: QPDProcessor.h:36
UInt sep
Number of nodes processed.
Definition: QPDProcessor.h:40
UInt nlpI
Number of NLPs solved.
Definition: QPDProcessor.h:35