|
Couenne 0.5.8
|
Cut Generator for implied bounds derived from pairs of linear (in)equalities. More...
#include <CouenneTwoImplied.hpp>
Inheritance diagram for Couenne::CouenneTwoImplied:
Collaboration diagram for Couenne::CouenneTwoImplied: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 | |
Public Attributes inherited from CglCutGenerator | |
| 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 



![$ [x^L_i, x^U_i] $](form_5.png)
(1) 
(2) 
(3) 
(4) 
Consider now two inequalities:


and their CONVEX combination using 

![$ \alpha \in [0,1] $](form_14.png)

with 




with ![$ x \in [0,4] $](form_21.png)
![$ y \in [0,1] $](form_22.png)


The key consideration here is that the 



if 


if 


Each lower/upper bound is therefore a piecewise rational function of 




![$ [0,1] $](form_36.png)
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 ![$ [0,1] $](form_36.png)








Sorting these values gives us something to do on every interval ![$ [c_j, c_{j+1}] $](form_42.png)




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 
![$ [0,1] $](form_36.png)
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.