13#ifndef MINOTAURPERSPCUTGENERATOR_H
14#define MINOTAURPERSPCUTGENERATOR_H
27 class PerspCutGenerator;
28 typedef PerspCutGenerator* PerspCutGeneratorPtr;
29 typedef const PerspCutGenerator* ConstPerspCutGeneratorPtr;
52 const double *ptToCut,
const double *prPt,
bool isObj,
58 UInt getNumCuts() {
return stats_->
cuts;}
60 void fixedValue(
double * prPt,
bool isObj,
UInt i);
88 double *c,
int *error);
146 bool isObj,
double relVal);
150 bool changeVarForm(
VariablePtr v,
double xc,
double sb,
UInt itn,
double *newPt,
bool isObj,
bool nlin);
159 prObj getPRObj() {
return prObj_;};
173 bool prVars(
const double *y,
double *prPt,
UInt itn,
bool isObj);
177 bool uniDirZSearch(
double *y,
double * newPt,
UInt i,
double zdir);
186 bool lineSearchAC(
double *y,
double * newPt,
UInt i,
bool isObj,
double relVal);
197 bool lineSearch_(
double *y,
double * newPt,
UInt i,
bool isObj,
double relVal);
231 static const std::string me_;
234 std::vector<prCons> prCons_;
Manages addition and deletion of cuts to problem.
Define the base class Engine.
Get information about a Function.
Declare the class LinearFunction for storing and modifying a linear function.
Declare a base class PerspCon for identifying structures amenable to perspective reformulation (PR) (...
Declare the base class Modification.
Declare a container for storing solutions and their qualities.
Abstract base class to manage cuts in the relaxation.
Definition: CutManager.h:42
Definition: Environment.h:28
The base class linear function is of the form c'x.
Definition: LinearFunction.h:31
Definition: PerspCutGenerator.h:37
bool addPC(RelaxationPtr rel, const double *y, UInt i, const double *ptToCut, const double *prPt, bool isObj, VariablePtr objVar, CutManagerPtr cutMan, double relVal)
Added perspective cut to a constraint at a given point.
Definition: PerspCutGenerator.cpp:1224
bool addCutToRel(RelaxationPtr rel, const double *ptToCut, LinearFunctionPtr lf, double c, VariablePtr objVar, double relVal, CutManagerPtr)
Add PCut torelaxation.
Definition: PerspCutGenerator.cpp:886
PerspCutGenerator()
Default constructor.
Definition: PerspCutGenerator.cpp:43
bool bisecPt(double *x, double *newPt, UInt i, bool isObj, double relVal)
Definition: PerspCutGenerator.cpp:1080
void atPtx(RelaxationPtr rel, const double *x)
~PerspCutGenerator()
Destructor.
Definition: PerspCutGenerator.cpp:1284
void getCutFun(RelaxationPtr rel, LinearFunctionPtr *lf, UInt it, const double *x, double *c, int *error)
bool getStatus()
Return 1 if there are PR amenable constraints in the problem.
Definition: PerspCutGenerator.cpp:264
std::string getName() const
Returns name of the handler.
Definition: PerspCutGenerator.cpp:1278
void writeStats(std::ostream &out) const
Writes statistics.
Definition: PerspCutGenerator.cpp:1266
bool lineSearchAC(double *y, double *newPt, UInt i, bool isObj, double relVal)
Perform line search using analytical center solC_. This search happens.
Definition: PerspCutGenerator.cpp:1148
void oriFeasPt(RelaxationPtr rel, const double *x)
Iterate over PR amenable constraints to add PCut;.
void atIntPt(RelaxationPtr rel, const double *nlpx, const double *lpx, SeparationStatus *pcStatus, CutManager *)
bool prVars(const double *y, double *prPt, UInt itn, bool isObj)
Generate variables for PR reformulation. Case in which z = 0 fixes x.
Definition: PerspCutGenerator.cpp:631
UInt isFeasible(const double *x, UInt i, bool isObj, double relVal)
Check feasibility of PR amenable constraints at the given solution.
Definition: PerspCutGenerator.cpp:535
void addCut(RelaxationPtr rel, const double *nlpx, const double *lpx, UInt it, SeparationStatus *pcStatus)
void linearAt(RelaxationPtr rel, const double *x, const double *prPt, double *c, LinearFunctionPtr *lf, UInt itn, int *error, bool isObj)
Definition: PerspCutGenerator.cpp:274
std::vector< prCons > getPRCons()
Return vector of perspective amenable constraint.
Definition: PerspCutGenerator.h:157
Definition: Relaxation.h:53
Definition: Variable.h:31
Definition: ActiveNodeStore.h:20
unsigned int UInt
Unsigned integer.
Definition: Types.h:30
SeparationStatus
Status from separation routine:
Definition: Types.h:217
Definition: PerspCutGenerator.h:31
size_t cuts
Number of points infeasible to original constraint.
Definition: PerspCutGenerator.h:34
size_t infPt
Number of points feasible to original nonlinear constraint but not the PR constraint.
Definition: PerspCutGenerator.h:33
Definition: PerspCon.h:72