Couenne 0.5.8
|
Cut Generator for implied bounds derived from pairs of linear (in)equalities. More...
#include <CouenneTwoImplied.hpp>
Static Public Member Functions | |
static void | registerOptions (Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions) |
Add list of options to be read from file. | |
Protected Attributes | |
CouenneProblem * | problem_ |
pointer to problem data structure (used for post-BT) | |
JnlstPtr | jnlst_ |
Journalist. | |
int | nMaxTrials_ |
maximum number of trials in every call | |
double | totalTime_ |
Total CPU time spent separating cuts. | |
double | totalInitTime_ |
CPU time spent columning the row formulation. | |
bool | firstCall_ |
first call indicator | |
int | depthLevelling_ |
Depth of the BB tree where to start decreasing chance of running this. | |
int | depthStopSeparate_ |
Depth of the BB tree where stop separation. | |
Additional Inherited Members | |
![]() | |
int | aggressive_ |
bool | canDoGlobalCuts_ |
Cut Generator for implied bounds derived from pairs of linear (in)equalities.
Implied bounds usually work on a SINGLE inequality of the form
where
(1)
(2)
(3)
(4)
Consider now two inequalities:
and their CONVEX combination using
with
with
The key consideration here is that the
if
if
Each lower/upper bound is therefore a piecewise rational function of
The purpose of this procedure is to find the maximum of the lower bounding function and the minimum of the upper bounding function.
Divide the interval
Sorting these values gives us something to do on every interval
0) if
1) else
update
2) if
3) else
update
if
compute internal maximum VI, update
Apply a similar procedure for the upper bound
This should be applied for any
a) same sign coefficient, constraints
b) opposite sign coefficient, constraints
as in those cases, no
Definition at line 174 of file CouenneTwoImplied.hpp.
Couenne::CouenneTwoImplied::CouenneTwoImplied | ( | CouenneProblem * | , |
JnlstPtr | , | ||
const Ipopt::SmartPtr< Ipopt::OptionsList > | ) |
constructor
Couenne::CouenneTwoImplied::CouenneTwoImplied | ( | const CouenneTwoImplied & | ) |
copy constructor
Couenne::CouenneTwoImplied::~CouenneTwoImplied | ( | ) |
destructor
|
inlinevirtual |
clone method (necessary for the abstract CglCutGenerator class)
Implements CglCutGenerator.
Definition at line 190 of file CouenneTwoImplied.hpp.
void Couenne::CouenneTwoImplied::generateCuts | ( | const OsiSolverInterface & | , |
OsiCuts & | , | ||
const CglTreeInfo | = CglTreeInfo() ) const |
the main CglCutGenerator
|
static |
Add list of options to be read from file.
|
protected |
pointer to problem data structure (used for post-BT)
Definition at line 208 of file CouenneTwoImplied.hpp.
|
protected |
Journalist.
Definition at line 211 of file CouenneTwoImplied.hpp.
|
protected |
maximum number of trials in every call
Definition at line 214 of file CouenneTwoImplied.hpp.
|
mutableprotected |
Total CPU time spent separating cuts.
Definition at line 217 of file CouenneTwoImplied.hpp.
|
mutableprotected |
CPU time spent columning the row formulation.
Definition at line 220 of file CouenneTwoImplied.hpp.
|
mutableprotected |
first call indicator
Definition at line 223 of file CouenneTwoImplied.hpp.
|
protected |
Depth of the BB tree where to start decreasing chance of running this.
Definition at line 226 of file CouenneTwoImplied.hpp.
|
protected |
Depth of the BB tree where stop separation.
Definition at line 229 of file CouenneTwoImplied.hpp.