Couenne 0.5.8
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
Couenne::CouenneSdpCuts Class Reference

These are cuts of the form. More...

#include <CouenneSdpCuts.hpp>

+ Inheritance diagram for Couenne::CouenneSdpCuts:
+ Collaboration diagram for Couenne::CouenneSdpCuts:

Public Member Functions

 CouenneSdpCuts (CouenneProblem *, JnlstPtr, const Ipopt::SmartPtr< Ipopt::OptionsList >)
 Constructor.
 
 ~CouenneSdpCuts ()
 Destructor.
 
CouenneSdpCutsoperator= (const CouenneSdpCuts &)
 Assignment.
 
 CouenneSdpCuts (const CouenneSdpCuts &)
 Copy constructor.
 
virtual CglCutGeneratorclone () const
 Cloning constructor.
 
const bool doNotUse () const
 
virtual void generateCuts (const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
 The main CglCutGenerator.
 
void updateSol ()
 
- Public Member Functions inherited from CglCutGenerator
virtual void generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())=0
 
 CglCutGenerator ()
 
 CglCutGenerator (const CglCutGenerator &)
 
virtual CglCutGeneratorclone () const=0
 
CglCutGeneratoroperator= (const CglCutGenerator &rhs)
 
virtual ~CglCutGenerator ()
 
virtual std::string generateCpp (FILE *)
 
virtual void refreshSolver (OsiSolverInterface *)
 
int getAggressiveness () const
 
void setAggressiveness (int value)
 
void setGlobalCuts (bool trueOrFalse)
 
bool canDoGlobalCuts () const
 
virtual bool mayGenerateRowCutsInTree () const
 
virtual bool needsOptimalBasis () const
 
virtual int maximumLengthOfCutInTree () const
 
virtual void generateCuts (const OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo info=CglTreeInfo())=0
 
 CglCutGenerator ()
 
 CglCutGenerator (const CglCutGenerator &)
 
virtual CglCutGeneratorclone () const=0
 
CglCutGeneratoroperator= (const CglCutGenerator &rhs)
 
virtual ~CglCutGenerator ()
 
virtual std::string generateCpp (FILE *)
 
virtual void refreshSolver (OsiSolverInterface *)
 

Static Public Member Functions

static void registerOptions (Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
 Add list of options to be read from file.
 

Protected Attributes

CouenneProblemproblem_
 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

- Public Attributes inherited from CglCutGenerator
int aggressive_
 
bool canDoGlobalCuts_
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ CouenneSdpCuts() [1/2]

Couenne::CouenneSdpCuts::CouenneSdpCuts ( CouenneProblem ,
JnlstPtr  ,
const Ipopt::SmartPtr< Ipopt::OptionsList  
)

Constructor.

◆ ~CouenneSdpCuts()

Couenne::CouenneSdpCuts::~CouenneSdpCuts ( )

Destructor.

◆ CouenneSdpCuts() [2/2]

Couenne::CouenneSdpCuts::CouenneSdpCuts ( const CouenneSdpCuts )

Copy constructor.

Member Function Documentation

◆ operator=()

CouenneSdpCuts & Couenne::CouenneSdpCuts::operator= ( const CouenneSdpCuts )

Assignment.

◆ clone()

virtual CglCutGenerator * Couenne::CouenneSdpCuts::clone ( ) const
virtual

Cloning constructor.

Implements CglCutGenerator.

◆ doNotUse()

const bool Couenne::CouenneSdpCuts::doNotUse ( ) const
inline

Definition at line 76 of file CouenneSdpCuts.hpp.

◆ generateCuts()

virtual void Couenne::CouenneSdpCuts::generateCuts ( const OsiSolverInterface ,
OsiCuts ,
const CglTreeInfo  = CglTreeInfo() 
) const
virtual

The main CglCutGenerator.

◆ registerOptions()

static void Couenne::CouenneSdpCuts::registerOptions ( Ipopt::SmartPtr< Bonmin::RegisteredOptions roptions)
static

Add list of options to be read from file.

◆ updateSol()

void Couenne::CouenneSdpCuts::updateSol ( )

Member Data Documentation

◆ problem_

CouenneProblem* Couenne::CouenneSdpCuts::problem_
protected

pointer to problem info

Definition at line 47 of file CouenneSdpCuts.hpp.

◆ doNotUse_

bool Couenne::CouenneSdpCuts::doNotUse_
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.

◆ minors_

std::vector<CouenneExprMatrix *> Couenne::CouenneSdpCuts::minors_
protected

minors on which to apply cuts

Definition at line 53 of file CouenneSdpCuts.hpp.

◆ numEigVec_

int Couenne::CouenneSdpCuts::numEigVec_
protected

number of eigenvectors to be used (default: n)

Definition at line 55 of file CouenneSdpCuts.hpp.

◆ onlyNegEV_

bool Couenne::CouenneSdpCuts::onlyNegEV_
protected

only use negative eigenvalues (default: yes)

Definition at line 57 of file CouenneSdpCuts.hpp.

◆ useSparsity_

bool Couenne::CouenneSdpCuts::useSparsity_
protected

Sparsify eigenvalues before writing inequality (default: no)

Definition at line 59 of file CouenneSdpCuts.hpp.

◆ fillMissingTerms_

bool Couenne::CouenneSdpCuts::fillMissingTerms_
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.


The documentation for this class was generated from the following file: