Cut Generator for linear convexifications. More...
#include <CouenneCutGenerator.hpp>

Public Member Functions | |
| CouenneCutGenerator (Bonmin::OsiTMINLPInterface *=NULL, Bonmin::BabSetupBase *base=NULL, CouenneProblem *=NULL, struct ASL *=NULL) | |
| constructor | |
| CouenneCutGenerator (const CouenneCutGenerator &) | |
| copy constructor | |
| ~CouenneCutGenerator () | |
| destructor | |
| CouenneCutGenerator * | clone () const |
| clone method (necessary for the abstract CglCutGenerator class) | |
| CouenneProblem * | Problem () const |
| return pointer to symbolic problem | |
| void | setProblem (CouenneProblem *p) |
| return pointer to symbolic problem | |
| int | getnvars () const |
| total number of variables (original + auxiliary) | |
| bool | isFirst () const |
| has generateCuts been called yet? | |
| bool | addViolated () const |
| should we add the violated cuts only (true), or all of them (false)? | |
| enum conv_type | ConvType () const |
| get convexification type (see CouenneTypes.h) | |
| int | nSamples () const |
| get number of convexification samples | |
| void | generateCuts (const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const |
| the main CglCutGenerator | |
| int | createCut (OsiCuts &, CouNumber, CouNumber, int, CouNumber, int=-1, CouNumber=0., int=-1, CouNumber=0., bool=false) const |
| create cut and check violation. Insert and return status | |
| int | createCut (OsiCuts &, CouNumber, int, int, CouNumber, int=-1, CouNumber=0., int=-1, CouNumber=0., bool=false) const |
| create cut and check violation. Other version with only one bound | |
| void | addEnvelope (OsiCuts &, int, unary_function, unary_function, int, int, CouNumber, CouNumber, CouNumber, t_chg_bounds *=NULL, bool=false) const |
| Add general linear envelope to convex function, given its variables' indices, the (univariate) function and its first derivative. | |
| void | addEnvelope (OsiCuts &, int, funtriplet *, int, int, CouNumber, CouNumber, CouNumber, t_chg_bounds *=NULL, bool=false) const |
| Add general linear envelope to convex function, given its variables' indices, the (univariate) function and its first derivative. | |
| int | addSegment (OsiCuts &, int, int, CouNumber, CouNumber, CouNumber, CouNumber, int) const |
| Add half-plane through (x1,y1) and (x2,y2) -- resp. | |
| int | addTangent (OsiCuts &, int, int, CouNumber, CouNumber, CouNumber, int) const |
| add tangent at given poing (x,w) with given slope | |
| void | setBabPtr (Bonmin::Bab *p) |
| Method to set the Bab pointer. | |
| void | getStats (int &nrc, int &ntc, double &st) |
| Get statistics. | |
| bool & | infeasNode () const |
| Allow to get and set the infeasNode_ flag (used only in generateCuts()). | |
| void | genRowCuts (const OsiSolverInterface &, OsiCuts &cs, int, int *, t_chg_bounds *=NULL) const |
| generate OsiRowCuts for current convexification | |
| void | genColCuts (const OsiSolverInterface &, OsiCuts &, int, int *) const |
| generate OsiColCuts for improved (implied and propagated) bounds | |
| void | printLineInfo () const |
| print node, depth, LB/UB/LP info | |
| ConstJnlstPtr | Jnlst () const |
| Provide Journalist. | |
| void | setJnlst (JnlstPtr jnlst__) |
| double & | rootTime () |
| Time spent at root node. | |
| bool | check_lp () const |
| return check_lp flag (used in CouenneSolverInterface) | |
| bool | enableLpImpliedBounds () const |
| returns value of enable_lp_implied_bounds_ | |
Static Public Member Functions | |
| static void | registerOptions (Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions) |
| Add list of options to be read from file. | |
Protected Attributes | |
| bool | firstcall_ |
| True if no convexification cuts have been generated yet for this problem. | |
| bool | addviolated_ |
| True if we should add the violated cuts only, false if all of them should be added. | |
| enum conv_type | convtype_ |
| what kind of sampling should be performed? | |
| int | nSamples_ |
| how many cuts should be added for each function? | |
| CouenneProblem * | problem_ |
| pointer to symbolic repr. of constraint, variables, and bounds | |
| int | nrootcuts_ |
| number of cuts generated at the first call | |
| int | ntotalcuts_ |
| total number of cuts generated | |
| double | septime_ |
| separation time (includes generation of problem) | |
| double | objValue_ |
| Record obj value at final point of CouenneConv. | |
| Bonmin::OsiTMINLPInterface * | nlp_ |
| nonlinear solver interface as used within Bonmin (used at first Couenne pass of each b&b node | |
| Bonmin::Bab * | BabPtr_ |
| pointer to the Bab object (used to retrieve the current primal bound through bestObj()) | |
| bool | infeasNode_ |
| signal infeasibility of current node (found through bound tightening) | |
| JnlstPtr | jnlst_ |
| SmartPointer to the Journalist. | |
| double | rootTime_ |
| Time spent at the root node. | |
| bool | check_lp_ |
| Check all generated LPs through an independent call to OsiClpSolverInterface::initialSolve(). | |
| bool | enable_lp_implied_bounds_ |
| Take advantage of OsiClpSolverInterface::tightenBounds (), known to have caused some problems some time ago. | |
| int | lastPrintLine |
| Running count of printed info lines. | |
Cut Generator for linear convexifications.
Definition at line 48 of file CouenneCutGenerator.hpp.
| CouenneCutGenerator::CouenneCutGenerator | ( | Bonmin::OsiTMINLPInterface * | nlp = NULL, |
|
| Bonmin::BabSetupBase * | base = NULL, |
|||
| CouenneProblem * | problem = NULL, |
|||
| struct ASL * | asl = NULL | |||
| ) |
constructor
Definition at line 27 of file CouenneCutGenerator.cpp.
| CouenneCutGenerator::CouenneCutGenerator | ( | const CouenneCutGenerator & | src | ) |
copy constructor
Definition at line 88 of file CouenneCutGenerator.cpp.
| CouenneCutGenerator::~CouenneCutGenerator | ( | ) |
destructor
Definition at line 83 of file CouenneCutGenerator.cpp.
| CouenneCutGenerator* Couenne::CouenneCutGenerator::clone | ( | ) | const [inline] |
clone method (necessary for the abstract CglCutGenerator class)
Definition at line 124 of file CouenneCutGenerator.hpp.
| CouenneProblem* Couenne::CouenneCutGenerator::Problem | ( | ) | const [inline] |
return pointer to symbolic problem
Definition at line 128 of file CouenneCutGenerator.hpp.
| void Couenne::CouenneCutGenerator::setProblem | ( | CouenneProblem * | p | ) | [inline] |
return pointer to symbolic problem
Definition at line 132 of file CouenneCutGenerator.hpp.
| int CouenneCutGenerator::getnvars | ( | ) | const |
total number of variables (original + auxiliary)
total number of variables (original + auxiliary) of the problem
Definition at line 141 of file CouenneCutGenerator.cpp.
| bool Couenne::CouenneCutGenerator::isFirst | ( | ) | const [inline] |
has generateCuts been called yet?
Definition at line 139 of file CouenneCutGenerator.hpp.
| bool Couenne::CouenneCutGenerator::addViolated | ( | ) | const [inline] |
should we add the violated cuts only (true), or all of them (false)?
Definition at line 143 of file CouenneCutGenerator.hpp.
| enum conv_type Couenne::CouenneCutGenerator::ConvType | ( | ) | const [inline] |
get convexification type (see CouenneTypes.h)
Definition at line 147 of file CouenneCutGenerator.hpp.
| int Couenne::CouenneCutGenerator::nSamples | ( | ) | const [inline] |
get number of convexification samples
Definition at line 151 of file CouenneCutGenerator.hpp.
| void Couenne::CouenneCutGenerator::generateCuts | ( | const OsiSolverInterface & | si, | |
| OsiCuts & | cs, | |||
| const CglTreeInfo | info = CglTreeInfo () | |||
| ) | const |
the main CglCutGenerator
a convexifier cut generator
Definition at line 92 of file generateCuts.cpp.
| int CouenneCutGenerator::createCut | ( | OsiCuts & | cs, | |
| CouNumber | lb, | |||
| CouNumber | ub, | |||
| int | i1, | |||
| CouNumber | c1, | |||
| int | i2 = -1, |
|||
| CouNumber | c2 = 0., |
|||
| int | i3 = -1, |
|||
| CouNumber | c3 = 0., |
|||
| bool | is_global = false | |||
| ) | const |
create cut and check violation. Insert and return status
general procedure for inserting a linear cut with up to three variables.
Return 1 if cut inserted, 0 if none, <0 if error
Definition at line 32 of file createCuts.cpp.
| int CouenneCutGenerator::createCut | ( | OsiCuts & | cs, | |
| CouNumber | rhs, | |||
| int | sign, | |||
| int | i1, | |||
| CouNumber | c1, | |||
| int | i2 = -1, |
|||
| CouNumber | c2 = 0., |
|||
| int | i3 = -1, |
|||
| CouNumber | c3 = 0., |
|||
| bool | is_global = false | |||
| ) | const |
create cut and check violation. Other version with only one bound
general procedure for inserting a linear cut with up to three variables.
Return 1 if cut inserted, 0 if none, <0 if error
Definition at line 212 of file createCuts.cpp.
| void CouenneCutGenerator::addEnvelope | ( | OsiCuts & | cs, | |
| int | sign, | |||
| unary_function | f, | |||
| unary_function | fprime, | |||
| int | w_ind, | |||
| int | x_ind, | |||
| CouNumber | x, | |||
| CouNumber | l, | |||
| CouNumber | u, | |||
| t_chg_bounds * | chg = NULL, |
|||
| bool | is_global = false | |||
| ) | const |
Add general linear envelope to convex function, given its variables' indices, the (univariate) function and its first derivative.
Definition at line 22 of file addEnvelope.cpp.
| void CouenneCutGenerator::addEnvelope | ( | OsiCuts & | cs, | |
| int | sign, | |||
| funtriplet * | ft, | |||
| int | w_ind, | |||
| int | x_ind, | |||
| CouNumber | x, | |||
| CouNumber | l, | |||
| CouNumber | u, | |||
| t_chg_bounds * | chg = NULL, |
|||
| bool | is_global = false | |||
| ) | const |
Add general linear envelope to convex function, given its variables' indices, the (univariate) function and its first derivative.
Definition at line 35 of file addEnvelope.cpp.
| int CouenneCutGenerator::addSegment | ( | OsiCuts & | cs, | |
| int | wi, | |||
| int | xi, | |||
| CouNumber | x1, | |||
| CouNumber | y1, | |||
| CouNumber | x2, | |||
| CouNumber | y2, | |||
| int | sign | |||
| ) | const |
Add half-plane through (x1,y1) and (x2,y2) -- resp.
add half-space through two points (x1,y1) and (x2,y2)
4th, 5th, 6th, and 7th argument
Definition at line 115 of file CouenneCutGenerator.cpp.
| int CouenneCutGenerator::addTangent | ( | OsiCuts & | cs, | |
| int | wi, | |||
| int | xi, | |||
| CouNumber | x, | |||
| CouNumber | w, | |||
| CouNumber | slope, | |||
| int | sign | |||
| ) | const |
add tangent at given poing (x,w) with given slope
add tangent at (x,w) with given slope
Definition at line 134 of file CouenneCutGenerator.cpp.
| void Couenne::CouenneCutGenerator::setBabPtr | ( | Bonmin::Bab * | p | ) | [inline] |
Method to set the Bab pointer.
Definition at line 213 of file CouenneCutGenerator.hpp.
| void Couenne::CouenneCutGenerator::getStats | ( | int & | nrc, | |
| int & | ntc, | |||
| double & | st | |||
| ) | [inline] |
Get statistics.
Definition at line 217 of file CouenneCutGenerator.hpp.
| bool& Couenne::CouenneCutGenerator::infeasNode | ( | ) | const [inline] |
Allow to get and set the infeasNode_ flag (used only in generateCuts()).
Definition at line 224 of file CouenneCutGenerator.hpp.
| void CouenneCutGenerator::genRowCuts | ( | const OsiSolverInterface & | si, | |
| OsiCuts & | cs, | |||
| int | nchanged, | |||
| int * | changed, | |||
| t_chg_bounds * | chg = NULL | |||
| ) | const |
generate OsiRowCuts for current convexification
Definition at line 19 of file genRowCuts.cpp.
| void CouenneCutGenerator::genColCuts | ( | const OsiSolverInterface & | si, | |
| OsiCuts & | cs, | |||
| int | nchanged, | |||
| int * | changed | |||
| ) | const |
generate OsiColCuts for improved (implied and propagated) bounds
Definition at line 21 of file genColCuts.cpp.
| void CouenneCutGenerator::registerOptions | ( | Ipopt::SmartPtr< Bonmin::RegisteredOptions > | roptions | ) | [static] |
Add list of options to be read from file.
Definition at line 146 of file CouenneCutGenerator.cpp.
| void CouenneCutGenerator::printLineInfo | ( | ) | const |
print node, depth, LB/UB/LP info
Definition at line 208 of file CouenneCutGenerator.cpp.
| ConstJnlstPtr Couenne::CouenneCutGenerator::Jnlst | ( | ) | const [inline] |
Provide Journalist.
Definition at line 241 of file CouenneCutGenerator.hpp.
| void Couenne::CouenneCutGenerator::setJnlst | ( | JnlstPtr | jnlst__ | ) | [inline] |
Definition at line 244 of file CouenneCutGenerator.hpp.
| double& Couenne::CouenneCutGenerator::rootTime | ( | ) | [inline] |
Time spent at root node.
Definition at line 248 of file CouenneCutGenerator.hpp.
| bool Couenne::CouenneCutGenerator::check_lp | ( | ) | const [inline] |
return check_lp flag (used in CouenneSolverInterface)
Definition at line 252 of file CouenneCutGenerator.hpp.
| bool Couenne::CouenneCutGenerator::enableLpImpliedBounds | ( | ) | const [inline] |
returns value of enable_lp_implied_bounds_
Definition at line 256 of file CouenneCutGenerator.hpp.
bool Couenne::CouenneCutGenerator::firstcall_ [mutable, protected] |
True if no convexification cuts have been generated yet for this problem.
Definition at line 54 of file CouenneCutGenerator.hpp.
bool Couenne::CouenneCutGenerator::addviolated_ [mutable, protected] |
True if we should add the violated cuts only, false if all of them should be added.
Definition at line 58 of file CouenneCutGenerator.hpp.
enum conv_type Couenne::CouenneCutGenerator::convtype_ [protected] |
what kind of sampling should be performed?
Definition at line 61 of file CouenneCutGenerator.hpp.
int Couenne::CouenneCutGenerator::nSamples_ [protected] |
how many cuts should be added for each function?
Definition at line 64 of file CouenneCutGenerator.hpp.
CouenneProblem* Couenne::CouenneCutGenerator::problem_ [protected] |
pointer to symbolic repr. of constraint, variables, and bounds
Definition at line 67 of file CouenneCutGenerator.hpp.
int Couenne::CouenneCutGenerator::nrootcuts_ [mutable, protected] |
number of cuts generated at the first call
Definition at line 70 of file CouenneCutGenerator.hpp.
int Couenne::CouenneCutGenerator::ntotalcuts_ [mutable, protected] |
total number of cuts generated
Definition at line 73 of file CouenneCutGenerator.hpp.
double Couenne::CouenneCutGenerator::septime_ [mutable, protected] |
separation time (includes generation of problem)
Definition at line 76 of file CouenneCutGenerator.hpp.
double Couenne::CouenneCutGenerator::objValue_ [mutable, protected] |
Record obj value at final point of CouenneConv.
Definition at line 79 of file CouenneCutGenerator.hpp.
nonlinear solver interface as used within Bonmin (used at first Couenne pass of each b&b node
Definition at line 83 of file CouenneCutGenerator.hpp.
Bonmin::Bab* Couenne::CouenneCutGenerator::BabPtr_ [protected] |
pointer to the Bab object (used to retrieve the current primal bound through bestObj())
Definition at line 87 of file CouenneCutGenerator.hpp.
bool Couenne::CouenneCutGenerator::infeasNode_ [mutable, protected] |
signal infeasibility of current node (found through bound tightening)
Definition at line 90 of file CouenneCutGenerator.hpp.
JnlstPtr Couenne::CouenneCutGenerator::jnlst_ [protected] |
SmartPointer to the Journalist.
Definition at line 93 of file CouenneCutGenerator.hpp.
double Couenne::CouenneCutGenerator::rootTime_ [mutable, protected] |
Time spent at the root node.
Definition at line 96 of file CouenneCutGenerator.hpp.
bool Couenne::CouenneCutGenerator::check_lp_ [protected] |
Check all generated LPs through an independent call to OsiClpSolverInterface::initialSolve().
Definition at line 100 of file CouenneCutGenerator.hpp.
bool Couenne::CouenneCutGenerator::enable_lp_implied_bounds_ [protected] |
Take advantage of OsiClpSolverInterface::tightenBounds (), known to have caused some problems some time ago.
Definition at line 104 of file CouenneCutGenerator.hpp.
int Couenne::CouenneCutGenerator::lastPrintLine [mutable, protected] |
Running count of printed info lines.
Definition at line 107 of file CouenneCutGenerator.hpp.
1.6.1