15#ifndef MINOTAURQGADVHANDLER_H
16#define MINOTAURQGADVHANDLER_H
58 static const std::string me_;
64 std::vector<ConstraintPtr> nlCons_;
70 std::stack<Modification *> nlpMods_;
138 {
return Branches();};
142 const DoubleVector &, ModVector &,
143 BrVarCandSet &, BrCandVector &,
bool &) {};
156 bool & should_prune,
double &inf_meas);
194 void addInitLinearX_(
const double *x);
208 void fixInts_(
const double *x);
215 void initLinear_(
bool *isInf);
221 void linearAt_(
FunctionPtr f,
double fval,
const double *x,
228 void linearizeObj_();
234 void oaCutToCons_(
const double *nlpx,
const double *lpx,
CutManager *,
238 void addCut_(
const double *nlpx,
const double *lpx,
ConstraintPtr con,
245 void oaCutToObj_(
const double *nlpx,
const double *lpx,
CutManager *,
248 void oaCutEngLim_(
const double *lpx,
CutManager *cutman,
255 void relax_(
bool *is_inf);
267 void updateUb_(
SolutionPoolPtr s_pool,
double *nlp_val,
bool *sol_found);
271 typedef QGAdvHandler* QGAdvHandlerPtr;
Define the base class Engine.
Get information about a Function.
Define abstract base class for handlers of various kinds.
Declare PerspCutHandler class for perspective reformulation (PR). It detects constraints amenable to ...
Declare the base class Modification.
Base class for describing candidates for branching on a node in branch-and-bound.
Definition: BrCand.h:32
The Constraint class is used to manage a constraint.
Definition: Constraint.h:61
Abstract base class to manage cuts in the relaxation.
Definition: CutManager.h:42
Definition: Environment.h:28
Definition: Function.h:37
Base class for handling specific types of constraints or objective.
Definition: Handler.h:49
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Definition: Modification.h:29
Definition: PerspCutHandler.h:36
Handler for convex constraints, based on quesada-grossmann algorithm.
Definition: QGAdvHandler.h:45
~QGAdvHandler()
Destroy.
Definition: QGAdvHandler.cpp:127
std::string getName() const
Return the name of the handler.
Definition: QGAdvHandler.cpp:816
void separate(ConstSolutionPtr sol, NodePtr node, RelaxationPtr rel, CutManager *cutman, SolutionPoolPtr s_pool, ModVector &p_mods, ModVector &r_mods, bool *sol_found, SeparationStatus *status)
Base class method. Find cuts.
Definition: QGAdvHandler.cpp:721
void relaxInitInc(RelaxationPtr rel, bool *is_inf)
Base class method. calls relax_().
Definition: QGAdvHandler.cpp:653
void relaxNodeFull(NodePtr node, RelaxationPtr rel, bool *is_inf)
Base class method. Does nothing.
Definition: QGAdvHandler.cpp:661
bool isFeasible(ConstSolutionPtr sol, RelaxationPtr relaxation, bool &should_prune, double &inf_meas)
Check if a solution is feasible.
Definition: QGAdvHandler.cpp:387
void writeStats(std::ostream &out) const
Show statistics.
Definition: QGAdvHandler.cpp:799
void relaxInitFull(RelaxationPtr rel, bool *is_inf)
Base class method. calls relax_().
Definition: QGAdvHandler.cpp:647
ModificationPtr getBrMod(BrCandPtr, DoubleVector &, RelaxationPtr, BranchDirection)
Does nothing.
Definition: QGAdvHandler.h:146
SolveStatus presolve(PreModQ *, bool *, Solution **sol)
Does nothing.
Definition: QGAdvHandler.h:159
void relaxNodeInc(NodePtr node, RelaxationPtr rel, bool *is_inf)
Base class method. Does nothing.
Definition: QGAdvHandler.cpp:668
bool presolveNode(RelaxationPtr, NodePtr, SolutionPoolPtr, ModVector &, ModVector &)
Does nothing.
Definition: QGAdvHandler.h:162
void postsolveGetX(const double *, UInt, DoubleVector *)
Does nothing.
Definition: QGAdvHandler.h:167
Branches getBranches(BrCandPtr, DoubleVector &, RelaxationPtr, SolutionPoolPtr)
Does nothing.
Definition: QGAdvHandler.h:136
QGAdvHandler()
Empty constructor.
Definition: QGAdvHandler.cpp:48
void getBranchingCandidates(RelaxationPtr, const DoubleVector &, ModVector &, BrVarCandSet &, BrCandVector &, bool &)
Does nothing.
Definition: QGAdvHandler.h:141
Definition: Relaxation.h:53
Definition: SolutionPool.h:28
Definition: Solution.h:30
Definition: Variable.h:31
Definition: ActiveNodeStore.h:20
BranchDirection
Two directions for branching.
Definition: Types.h:201
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
SolveStatus
Different states an algorithm like branch-and-bound can be in.
Definition: Types.h:158
Definition: QGAdvHandler.h:28
size_t nlpI
Number of nlps feasible.
Definition: QGAdvHandler.h:31
size_t cuts
Number of nlps hits engine iterations limit.
Definition: QGAdvHandler.h:33
size_t nlpIL
Number of nlps infeasible.
Definition: QGAdvHandler.h:32
size_t nlpF
Number of nlps solved.
Definition: QGAdvHandler.h:30