15#ifndef MINOTAURPARQGHANDLERADVANCE_H
16#define MINOTAURPARQGHANDLERADVANCE_H
60 static const std::string me_;
66 std::vector<ConstraintPtr> nlCons_;
72 std::stack<Modification *> nlpMods_;
115 std::vector<double > consDual_;
117 std::string cutMethod_;
149 {
return Branches();};
153 const DoubleVector &, ModVector &,
154 BrVarCandSet &, BrCandVector &,
bool &) {};
170 void loadProbToEngine();
172 void setRelaxation(RelaxationPtr rel);
176 bool isFeasible(ConstSolutionPtr sol, RelaxationPtr relaxation,
177 bool & should_prune,
double &inf_meas);
221 void addInitLinearX_(
const double *x);
227 void cutIntSol_(
const double *lpx,
CutManager *cutMan,
235 void fixInts_(
const double *x);
239 bool boundaryPtForCons_(
double* xnew,
const double *xOut,
240 std::vector<UInt > &vioCons);
242 void genLin_(
const double *x, std::vector<UInt> vioCons,
CutManager *cutMan);
246 void ESHTypeCut_(
const double *lpx,
CutManager *cutMan);
248 void objCutAtLpSol_(
const double *lpx,
CutManager *,
256 void initLinear_(
bool *isInf);
258 bool isIntFeas_(
const double* x);
270 void linearizeObj_();
276 void linearAt_(
FunctionPtr f,
double fval,
const double *x,
282 void cutToCons_(
const double *nlpx,
const double *lpx,
CutManager *,
286 void addCut_(
const double *nlpx,
const double *lpx,
ConstraintPtr con,
289 void consCutsAtLpSol_(
const double *lpx,
CutManager *cutman,
298 void cutToObj_(
const double *nlpx,
const double *lpx,
CutManager *,
305 void relax_(
bool *is_inf);
317 void updateUb_(
SolutionPoolPtr s_pool,
double nlpval,
bool *sol_found);
321 typedef ParQGHandlerAdvance* ParQGHandlerAdvancePtr;
Define the base class Engine.
Get information about a Function.
Define abstract base class for handlers of various kinds.
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: Linearizations.h:39
Definition: Modification.h:29
Handler for convex constraints, based on quesada-grossmann algorithm.
Definition: ParQGHandlerAdvance.h:47
bool isFeasible(ConstSolutionPtr sol, RelaxationPtr relaxation, bool &should_prune, double &inf_meas)
Check if a solution is feasible.
Definition: ParQGHandlerAdvance.cpp:334
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: ParQGHandlerAdvance.cpp:986
void writeStats(std::ostream &out) const
Show statistics.
Definition: ParQGHandlerAdvance.cpp:1428
void postsolveGetX(const double *, UInt, DoubleVector *)
Does nothing.
Definition: ParQGHandlerAdvance.h:188
bool presolveNode(RelaxationPtr, NodePtr, SolutionPoolPtr, ModVector &, ModVector &)
Does nothing.
Definition: ParQGHandlerAdvance.h:183
ParQGHandlerAdvance(EnvPtr env, ProblemPtr minlp, EnginePtr nlpe)
Default Constructor.
Definition: ParQGHandlerAdvance.cpp:55
~ParQGHandlerAdvance()
Destroy.
Definition: ParQGHandlerAdvance.cpp:93
void getBranchingCandidates(RelaxationPtr, const DoubleVector &, ModVector &, BrVarCandSet &, BrCandVector &, bool &)
Does nothing.
Definition: ParQGHandlerAdvance.h:152
void relaxNodeFull(NodePtr node, RelaxationPtr rel, bool *is_inf)
Base class method. Does nothing.
Definition: ParQGHandlerAdvance.cpp:683
void relaxNodeInc(NodePtr node, RelaxationPtr rel, bool *is_inf)
Base class method. Does nothing.
Definition: ParQGHandlerAdvance.cpp:689
std::string getName() const
Return the name of the handler.
Definition: ParQGHandlerAdvance.cpp:1450
SolveStatus presolve(PreModQ *, bool *, Solution **)
Does nothing.
Definition: ParQGHandlerAdvance.h:180
void relaxInitFull(RelaxationPtr rel, SolutionPool *, bool *is_inf)
Base class method. calls relax_().
Definition: ParQGHandlerAdvance.cpp:668
void relaxInitInc(RelaxationPtr rel, SolutionPool *, bool *is_inf)
Base class method. calls relax_().
Definition: ParQGHandlerAdvance.cpp:674
void setObjVar()
Set oNl_ to true and objVar_ when problem objective is nonlinear.
Definition: ParQGHandlerAdvance.cpp:377
ModificationPtr getBrMod(BrCandPtr, DoubleVector &, RelaxationPtr, BranchDirection)
Does nothing.
Definition: ParQGHandlerAdvance.h:157
Branches getBranches(BrCandPtr, DoubleVector &, RelaxationPtr, SolutionPoolPtr)
Does nothing.
Definition: ParQGHandlerAdvance.h:147
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: ParQGHandler.h:27
size_t cuts
Number of nlps hits engine iterations limit.
Definition: ParQGHandler.h:32
size_t nlpF
Number of nlps solved.
Definition: ParQGHandler.h:29
size_t rcuts
Number of cuts added to the LP.
Definition: ParQGHandlerAdvance.h:34
size_t nlpI
Number of nlps feasible.
Definition: ParQGHandler.h:30
size_t fracCuts
Number of extra root cuts.
Definition: ParQGHandlerAdvance.h:35
size_t nlpIL
Number of nlps infeasible.
Definition: ParQGHandler.h:31