15#ifndef MINOTAURCXUNIVARHANDLER_H
16#define MINOTAURCXUNIVARHANDLER_H
28 typedef LinearFunction* LinearFunctionPtr;
29 typedef Objective* ObjectivePtr;
82 bool isFeasible(
const double* x);
84 double getViol(
const std::vector< double > & x);
92 bool init, ModVector &mods);
99 DoubleVector& tmpX, DoubleVector& grad,
bool init,
105 ConstVariablePtr getROutVar()
const {
return rov_; } ;
107 ConstVariablePtr getRInputVar()
const {
return riv_; } ;
110 ConstraintIterator linConsBegin() {
return linCons_.begin(); }
111 ConstraintIterator linConsEnd() {
return linCons_.end(); }
114 char getSense() {
return sense_; } ;
118 ConstVariablePtr ivar,
char sense);
127 typedef std::vector<CxUnivarConstraintDataPtr> CxUnivarConstraintDataVector;
128 typedef CxUnivarConstraintDataVector::iterator CxUnivarConstraintIterator;
159 static const std::string
me_;
199 bool &should_prune,
double &inf_meas);
207 ModVector &r_mods,
bool *sol_found,
229 ModVector &mods, BrVarCandSet &cands,
230 BrCandVector &gencands,
bool & is_inf);
251 virtual std::string
getName()
const;
Define abstract base class for handlers of various kinds.
Declare important 'types' used in Minotaur.
Base class for describing candidates for branching on a node in branch-and-bound.
Definition: BrCand.h:32
Base class for storing branching modifications.
Definition: Branch.h:33
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: CxUnivarHandler.h:32
~CxUnivarConstraintData()
Destroy.
Definition: CxUnivarHandler.h:121
ConstraintPtr con_
This is the constraint of the orginal problem.
Definition: CxUnivarHandler.h:43
ConstVariablePtr iv_
Definition: CxUnivarHandler.h:48
void updateRelax(RelaxationPtr rel, DoubleVector &tmpX, DoubleVector &grad, ModVector &mods)
Update the current relaxation based on current variable bounds.
Definition: CxUnivarHandler.cpp:91
char sense_
Definition: CxUnivarHandler.h:65
void initRelax(RelaxationPtr rel, DoubleVector &tmpX, DoubleVector &grad)
Creates initial relaxations
Definition: CxUnivarHandler.cpp:66
ConstraintPtr secCon_
Secant constraint in the relaxation.
Definition: CxUnivarHandler.h:68
double eTol_
Tolerance for constraint violation.
Definition: CxUnivarHandler.h:37
ConstraintVector linCons_
Array of linearization constraints in the relaxation.
Definition: CxUnivarHandler.h:71
ConstVariablePtr ov_
Definition: CxUnivarHandler.h:56
double vTol_
Tolerance for when upper and lower bounds considered equal.
Definition: CxUnivarHandler.h:40
CxUnivarConstraintData(double eTol, double vTol, ConstraintPtr newcon, ConstVariablePtr ovar, ConstVariablePtr ivar, char sense)
Default constructor.
Definition: CxUnivarHandler.cpp:46
Definition: CxUnivarHandler.h:141
CxUnivarHandler(EnvPtr env, ProblemPtr problem)
Default constructor.
Definition: CxUnivarHandler.cpp:143
LoggerPtr logger_
Logger.
Definition: CxUnivarHandler.h:156
void separate(ConstSolutionPtr sol, NodePtr node, RelaxationPtr rel, CutManager *cutman, SolutionPoolPtr s_pool, ModVector &p_mods, ModVector &r_mods, bool *sol_found, SeparationStatus *status)
Definition: CxUnivarHandler.cpp:409
void relaxInitInc(RelaxationPtr rel, SolutionPool *, bool *is_inf)
Create root relaxation if doing incremental node relaxations.
Definition: CxUnivarHandler.cpp:161
double eTol_
Tolerance for constraint violation.
Definition: CxUnivarHandler.h:147
virtual SolveStatus presolve(PreModQ *pre_mods, bool *changed, Solution **sol)
Initial presolve.
Definition: CxUnivarHandler.cpp:659
virtual Branches getBranches(BrCandPtr cand, DoubleVector &x, RelaxationPtr rel, SolutionPoolPtr s_pool)
Return branches for branching.
Definition: CxUnivarHandler.cpp:516
ProblemPtr problem_
Original problem.
Definition: CxUnivarHandler.h:153
CxUnivarConstraintDataVector cons_data_
Internal data associated with each constraint.
Definition: CxUnivarHandler.h:162
virtual void relaxNodeInc(NodePtr node, RelaxationPtr rel, bool *isInfeasible)
Definition: CxUnivarHandler.cpp:178
virtual void relaxNodeFull(NodePtr, RelaxationPtr, bool *)
Definition: CxUnivarHandler.h:217
virtual std::string getName() const
Return the name of the handler.
Definition: CxUnivarHandler.cpp:674
void addConstraint(ConstraintPtr newcon, ConstVariablePtr ivar, ConstVariablePtr ovar, char sense='E')
Definition: CxUnivarHandler.cpp:378
DoubleVector grad_
A temporary vector of zeros, for getting gradients.
Definition: CxUnivarHandler.h:168
~CxUnivarHandler()
Destroy.
Definition: CxUnivarHandler.cpp:156
virtual void getBranchingCandidates(RelaxationPtr rel, const DoubleVector &x, ModVector &mods, BrVarCandSet &cands, BrCandVector &gencands, bool &is_inf)
find branching candidates.
Definition: CxUnivarHandler.cpp:416
DoubleVector tmpX_
A temporary vector of zeros, for evaluating functions.
Definition: CxUnivarHandler.h:165
virtual bool presolveNode(RelaxationPtr p, NodePtr node, SolutionPoolPtr s_pool, ModVector &p_mods, ModVector &r_mods)
Presolve the problem and its relaxation at a node.
Definition: CxUnivarHandler.cpp:666
void relaxInitFull(RelaxationPtr, SolutionPool *, bool *)
Definition: CxUnivarHandler.h:191
bool isFeasible(ConstSolutionPtr sol, RelaxationPtr relaxation, bool &should_prune, double &inf_meas)
Definition: CxUnivarHandler.cpp:389
void addConstraint(ConstraintPtr)
Add constraint to be handled by this handler.
Definition: CxUnivarHandler.h:185
double vTol_
Tolerance for when upper and lower bounds considered equal.
Definition: CxUnivarHandler.h:150
virtual ModificationPtr getBrMod(BrCandPtr cand, DoubleVector &x, RelaxationPtr rel, BranchDirection dir)
Get the modifcation that creates a given (up or down) branch.
Definition: CxUnivarHandler.cpp:458
static const std::string me_
For printing.
Definition: CxUnivarHandler.h:159
Definition: Environment.h:28
Definition: Function.h:37
Base class for handling specific types of constraints or objective.
Definition: Handler.h:49
Definition: Modification.h:29
Definition: Relaxation.h:53
Definition: SolutionPool.h:28
Definition: Solution.h:30
Definition: Variable.h:31
Definition: ActiveNodeStore.h:20
CxUnivarHandler * CxUnivarHandlerPtr
Shared pointer to CxUnivarHandler.
Definition: CxUnivarHandler.h:269
BranchDirection
Two directions for branching.
Definition: Types.h:201
const CxUnivarHandler * CxUnivarConstHandlerPtr
Shared pointer to const CxUnivarHandler.
Definition: CxUnivarHandler.h:272
CxUnivarConstraintData * CxUnivarConstraintDataPtr
Shared pointer to CxUnivarHandler.
Definition: CxUnivarHandler.h:126
const CxUnivarConstraintData * CxUnivarConstConstraintDataPtr
Shared pointer to const CxUnivarHandler.
Definition: CxUnivarHandler.h:266
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