13#ifndef MINOTAURNLPRESHANDLER_H
14#define MINOTAURNLPRESHANDLER_H
25typedef CGraph* CGraphPtr;
26typedef PreAuxVars* PreAuxVarsPtr;
101 ModVector &, BrVarCandSet &, BrCandVector &,
112 {
return Branches();};
119 ModVector &p_mods, ModVector &rmods);
145 double *u,
double *l2);
167 VariableSet qfvars, VariableSet linear_terms,
double cl,
double cu,
int &change);
187 VariableSet qfvars, VariableSet linear_terms,
double cl,
double cu,
251 static const std::string me_;
253 void bin2Lin_(
ProblemPtr p, PreModQ *mods,
bool *changed);
259 const UInt *jcol,
const double *values);
260 void chkRed_(
ProblemPtr p,
bool apply_to_prob,
bool *changed,
262 void coeffImpr_(
bool *changed);
264 double zval,
double *lb,
double *ub);
273 void fixedNl_(
ProblemPtr p,
bool purge_cons,
bool *changed,
279 void fixObjBins_(
ProblemPtr p,
double ub,
bool *changed, ModQ *mods,
283 void perspRef_(
ProblemPtr p, PreModQ *mods,
bool *changed);
284 void quadConeRef_(
ProblemPtr p, PreModQ *mods,
bool *changed);
285 void varBndsFromCons_(
ProblemPtr p,
bool apply_to_prob,
bool *changed,
288typedef NlPresHandler* NlPresHandlerPtr;
Define abstract base class for handlers of various kinds.
Construct and manage quadratic functions.
Declare the class VarBoundMod. It is used to save modifications in a bound of a variable....
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: NlPresHandler.h:61
void relaxNodeInc(NodePtr, RelaxationPtr, bool *)
Create an incremental relaxation for a node.
Definition: NlPresHandler.h:83
~NlPresHandler()
Destroy.
Definition: NlPresHandler.cpp:91
void get_other_quad_var_bounds(VariablePtr v, double *qflb, double *qfub, VariableSet qfvars, QuadraticFunctionPtr qf, LinearFunctionPtr lf)
Definition: NlPresHandler.cpp:1404
void getBranchingCandidates(RelaxationPtr, const DoubleVector &, ModVector &, BrVarCandSet &, BrCandVector &, bool &)
Does nothing.
Definition: NlPresHandler.h:100
void linear_var_set(VariableSet lfvars, FunctionPtr f, VariableSet *linear_terms)
Definition: NlPresHandler.cpp:1363
ModificationPtr getBrMod(BrCandPtr, DoubleVector &, RelaxationPtr, BranchDirection)
Does nothing.
Definition: NlPresHandler.h:105
SolveStatus presolve(PreModQ *pre_mods, bool *changed, Solution **sol)
Initial presolve.
Definition: NlPresHandler.cpp:982
void writeStats(std::ostream &out) const
Write statistics to ostream out.
Definition: NlPresHandler.cpp:1798
bool isFeasible(ConstSolutionPtr, RelaxationPtr, bool &, double &)
Definition: NlPresHandler.h:89
bool presolveNode(RelaxationPtr p, NodePtr node, SolutionPoolPtr s_pool, ModVector &p_mods, ModVector &rmods)
Presolve the problem and its relaxation at a node.
Definition: NlPresHandler.cpp:1029
void relaxInitInc(RelaxationPtr, SolutionPool *, bool *)
Create root relaxation if doing incremental node relaxations.
Definition: NlPresHandler.h:77
void get_other_linear_var_bounds(VariablePtr v, double *lflb, double *lfub, VariableSet linear_tSerms, LinearFunctionPtr lf)
Definition: NlPresHandler.cpp:1377
Branches getBranches(BrCandPtr, DoubleVector &, RelaxationPtr, SolutionPoolPtr)
Does nothing.
Definition: NlPresHandler.h:110
void bilinear_bounds(VariablePtr v, double *qflb1, double *qfub1, VariableSet qfvars, QuadraticFunctionPtr qf)
Definition: NlPresHandler.cpp:1432
void separate(ConstSolutionPtr, NodePtr, RelaxationPtr, CutManager *, SolutionPoolPtr, ModVector &, ModVector &, bool *, SeparationStatus *)
Definition: NlPresHandler.h:95
std::string getName() const
Return the name of the handler.
Definition: NlPresHandler.cpp:852
NlPresHandler()
Default constructor.
Definition: NlPresHandler.cpp:46
void quad_bound_range(VariablePtr v, double a, double blb, double bub, double *l, double *u)
Definition: NlPresHandler.cpp:1263
void x_bound_with_c(double a, double b, double c, double *l, double *u, double *l2)
Definition: NlPresHandler.cpp:1277
void simplePresolve(ProblemPtr p, SolutionPoolPtr s_pool, ModVector &t_mods, SolveStatus &status)
Definition: NlPresHandler.cpp:1041
void quad_bound(VariablePtr v, double a, double b, double *l, double *u)
Definition: NlPresHandler.cpp:1225
void lin_var_bound(VarBoundModVector lfmod, LinearFunctionPtr lf, QuadraticFunctionPtr qf, VariableSet qfvars, VariableSet linear_terms, double cl, double cu, int &change)
Definition: NlPresHandler.cpp:1459
void relaxNodeFull(NodePtr, RelaxationPtr, bool *)
Create a relaxation for a node, building from scratch.
Definition: NlPresHandler.h:80
void quad_var_bound(VarBoundModVector qfmod, LinearFunctionPtr lf, QuadraticFunctionPtr qf, VariableSet qfvars, VariableSet linear_terms, double cl, double cu, int &change)
Definition: NlPresHandler.cpp:1532
void relaxInitFull(RelaxationPtr, SolutionPool *, bool *)
Create root relaxation if doing full node relaxations.
Definition: NlPresHandler.h:74
void writePreStats(std::ostream &out) const
Write statistics about presolve.
Definition: NlPresHandler.cpp:1777
Definition: PreAuxVars.h:22
Definition: QuadraticFunction.h:38
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
SolveStatus
Different states an algorithm like branch-and-bound can be in.
Definition: Types.h:158
Options for presolve.
Definition: NlPresHandler.h:50
bool showStats
True if presolve is enabled, false otherwise.
Definition: NlPresHandler.h:52
bool coeffImp
Maximum number of iterations.
Definition: NlPresHandler.h:54
int maxIters
True if stats are displayed, false otherwise.
Definition: NlPresHandler.h:53
Store statistics of presolving.
Definition: NlPresHandler.h:31
int varDel
Total time used in node presolves.
Definition: NlPresHandler.h:35
int cImp
Number of times constraint-bounds were tightened.
Definition: NlPresHandler.h:42
int vBnd
Number of perspective reformulations.
Definition: NlPresHandler.h:40
double timeN
Total time used in initial presolve.
Definition: NlPresHandler.h:34
int pRefs
No. of times infeasible implied bounds detected.
Definition: NlPresHandler.h:39
int conDel
Number of variables marked for deletion.
Definition: NlPresHandler.h:36
int cBnd
Number of times variable-bounds were tightened.
Definition: NlPresHandler.h:41
int conRel
Number of constraints marked for deletion.
Definition: NlPresHandler.h:37
int qCone
Number of changes in nodes.
Definition: NlPresHandler.h:44
double time
Number of iterations (main cycle).
Definition: NlPresHandler.h:33
int infBnds
Number of times constraint bounds relaxed.
Definition: NlPresHandler.h:38
int nMods
Number of times coefficient in a constraint was improved.
Definition: NlPresHandler.h:43