Couenne 0.5.8
|
These are cuts of the form. More...
#include <CouenneSdpCuts.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 info | |
bool | doNotUse_ |
after construction, true if there are enough product terms to justify application. | |
std::vector< CouenneExprMatrix * > | minors_ |
minors on which to apply cuts | |
int | numEigVec_ |
number of eigenvectors to be used (default: n) | |
bool | onlyNegEV_ |
only use negative eigenvalues (default: yes) | |
bool | useSparsity_ |
Sparsify eigenvalues before writing inequality (default: no) | |
bool | fillMissingTerms_ |
If minor not fully dense, create fictitious auxiliary variables that will be used in sdp cuts only (tighter than sdp cuts without) | |
Additional Inherited Members | |
![]() | |
int | aggressive_ |
bool | canDoGlobalCuts_ |
These are cuts of the form.
a' X a >= 0
where X is a matrix constrained to be PSD.
Typical application is in problems with products forming a matrix of auxiliary variables X0 = (x_ij)_{i,j in N}, and x_ij is the auxiliary variable for x_i * x_j. After reformulation, matrices like X0 arise naturally and can be used to separate cuts that help strengthen the lower bound. See Sherali and Fraticelli for the base idea, and Qualizza, Belotti and Margot for an efficient rework and its implementation. Andrea Qualizza's code has been made open source and is used here (thanks Andrea!).
Definition at line 43 of file CouenneSdpCuts.hpp.
Couenne::CouenneSdpCuts::CouenneSdpCuts | ( | CouenneProblem * | , |
JnlstPtr | , | ||
const Ipopt::SmartPtr< Ipopt::OptionsList > | |||
) |
Constructor.
Couenne::CouenneSdpCuts::~CouenneSdpCuts | ( | ) |
Destructor.
Couenne::CouenneSdpCuts::CouenneSdpCuts | ( | const CouenneSdpCuts & | ) |
Copy constructor.
CouenneSdpCuts & Couenne::CouenneSdpCuts::operator= | ( | const CouenneSdpCuts & | ) |
Assignment.
|
virtual |
Cloning constructor.
Implements CglCutGenerator.
|
inline |
Definition at line 76 of file CouenneSdpCuts.hpp.
|
virtual |
The main CglCutGenerator.
|
static |
Add list of options to be read from file.
void Couenne::CouenneSdpCuts::updateSol | ( | ) |
|
protected |
pointer to problem info
Definition at line 47 of file CouenneSdpCuts.hpp.
|
protected |
after construction, true if there are enough product terms to justify application.
If not, do not add this cut generator
Definition at line 49 of file CouenneSdpCuts.hpp.
|
protected |
minors on which to apply cuts
Definition at line 53 of file CouenneSdpCuts.hpp.
|
protected |
number of eigenvectors to be used (default: n)
Definition at line 55 of file CouenneSdpCuts.hpp.
|
protected |
only use negative eigenvalues (default: yes)
Definition at line 57 of file CouenneSdpCuts.hpp.
|
protected |
Sparsify eigenvalues before writing inequality (default: no)
Definition at line 59 of file CouenneSdpCuts.hpp.
|
protected |
If minor not fully dense, create fictitious auxiliary variables that will be used in sdp cuts only (tighter than sdp cuts without)
Definition at line 61 of file CouenneSdpCuts.hpp.