Couenne::CouenneDisjCuts Class Reference

Cut Generator for linear convexifications. More...

#include <CouenneDisjCuts.hpp>

List of all members.

Public Member Functions

 CouenneDisjCuts (Bonmin::OsiTMINLPInterface *minlp=NULL, Bonmin::BabSetupBase *base=NULL, CouenneCutGenerator *cg=NULL, OsiChooseVariable *bcv=NULL, bool is_strong=false, JnlstPtr journalist=NULL, const Ipopt::SmartPtr< Ipopt::OptionsList > options=NULL)
 constructor
 CouenneDisjCuts (const CouenneDisjCuts &)
 copy constructor
 ~CouenneDisjCuts ()
 destructor
CouenneDisjCutsclone () const
 clone method (necessary for the abstract CglCutGenerator class)
CouenneCutGeneratorcouenneCG () const
 return pointer to symbolic problem
void generateCuts (const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
 the main CglCutGenerator
ConstJnlstPtr Jnlst () const
 Provide Journalist.
int getDisjunctions (std::vector< std::pair< OsiCuts *, OsiCuts * > > &disjunctions, OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo &info) const
 get all disjunctions
int separateWithDisjunction (OsiCuts *cuts, OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo &info) const
 separate couenne cuts on both sides of single disjunction
int generateDisjCuts (std::vector< std::pair< OsiCuts *, OsiCuts * > > &disjs, OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo &info) const
 generate one disjunctive cut from one CGLP
int checkDisjSide (OsiSolverInterface &si, OsiCuts *cuts) const
 check if (column!) cuts compatible with solver interface
int getBoxUnion (OsiSolverInterface &si, OsiCuts *left, OsiCuts *right, CoinPackedVector &lower, CoinPackedVector &upper) const
 compute smallest box containing both left and right boxes.

Static Public Member Functions

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

Protected Member Functions

OsiCuts * getSingleDisjunction (OsiSolverInterface &si) const
 create single osicolcut disjunction
void mergeBoxes (int dir, CoinPackedVector &left, CoinPackedVector &right, CoinPackedVector merged) const
 utility to merge vectors into one
void applyColCuts (OsiSolverInterface &si, OsiCuts *cuts) const
 our own applyColCuts
void applyColCuts (OsiSolverInterface &si, OsiColCut *cut) const
 our own applyColCut, single cut
void OsiSI2MatrVec (CoinPackedMatrix &M, CoinPackedVector &r, OsiSolverInterface &si) const
int OsiCuts2MatrVec (OsiSolverInterface *cglp, OsiCuts *cuts, int displRow, int displRhs) const
 add CGLP columns to solver interface; return number of columns added (for later removal)

Protected Attributes

CouenneCutGeneratorcouenneCG_
 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 * minlp_
 nonlinear solver interface as used within Bonmin (used at first Couenne pass of each b&b node)
OsiChooseVariable * branchingMethod_
 Branching scheme (if strong, we can use SB candidates).
bool isBranchingStrong_
 Is branchMethod_ referred to a strong branching scheme?
JnlstPtr jnlst_
 SmartPointer to the Journalist.
int numDisjunctions_
 Number of disjunction to consider at each separation.
double initDisjPercentage_
 Initial percentage of objects to use for generating cuts, in [0,1].
int initDisjNumber_
 Initial number of objects to use for generating cuts.
int depthLevelling_
 Depth of the BB tree where start decreasing number of objects.
int depthStopSeparate_
 Depth of the BB tree where stop separation.
bool activeRows_
 only include active rows in CGLP
bool activeCols_
 only include active columns in CGLP
bool addPreviousCut_
 add previous disj cut to current CGLP?
double cpuTime_
 maximum CPU time

Detailed Description

Cut Generator for linear convexifications.

Definition at line 34 of file CouenneDisjCuts.hpp.


Constructor & Destructor Documentation

Couenne::CouenneDisjCuts::CouenneDisjCuts ( Bonmin::OsiTMINLPInterface *  minlp = NULL,
Bonmin::BabSetupBase *  base = NULL,
CouenneCutGenerator cg = NULL,
OsiChooseVariable *  bcv = NULL,
bool  is_strong = false,
JnlstPtr  journalist = NULL,
const Ipopt::SmartPtr< Ipopt::OptionsList >  options = NULL 
)

constructor

Referenced by clone().

Couenne::CouenneDisjCuts::CouenneDisjCuts ( const CouenneDisjCuts  ) 

copy constructor

Couenne::CouenneDisjCuts::~CouenneDisjCuts (  ) 

destructor


Member Function Documentation

CouenneDisjCuts* Couenne::CouenneDisjCuts::clone (  )  const [inline]

clone method (necessary for the abstract CglCutGenerator class)

Definition at line 111 of file CouenneDisjCuts.hpp.

References CouenneDisjCuts().

CouenneCutGenerator* Couenne::CouenneDisjCuts::couenneCG (  )  const [inline]

return pointer to symbolic problem

Definition at line 115 of file CouenneDisjCuts.hpp.

References couenneCG_.

void Couenne::CouenneDisjCuts::generateCuts ( const OsiSolverInterface &  ,
OsiCuts &  ,
const   CglTreeInfo = CglTreeInfo() 
) const

the main CglCutGenerator

static void Couenne::CouenneDisjCuts::registerOptions ( Ipopt::SmartPtr< Bonmin::RegisteredOptions >  roptions  )  [static]

Add list of options to be read from file.

ConstJnlstPtr Couenne::CouenneDisjCuts::Jnlst (  )  const [inline]

Provide Journalist.

Definition at line 131 of file CouenneDisjCuts.hpp.

References jnlst_.

int Couenne::CouenneDisjCuts::getDisjunctions ( std::vector< std::pair< OsiCuts *, OsiCuts * > > &  disjunctions,
OsiSolverInterface &  si,
OsiCuts &  cs,
const CglTreeInfo &  info 
) const

get all disjunctions

int Couenne::CouenneDisjCuts::separateWithDisjunction ( OsiCuts *  cuts,
OsiSolverInterface &  si,
OsiCuts &  cs,
const CglTreeInfo &  info 
) const

separate couenne cuts on both sides of single disjunction

int Couenne::CouenneDisjCuts::generateDisjCuts ( std::vector< std::pair< OsiCuts *, OsiCuts * > > &  disjs,
OsiSolverInterface &  si,
OsiCuts &  cs,
const CglTreeInfo &  info 
) const

generate one disjunctive cut from one CGLP

int Couenne::CouenneDisjCuts::checkDisjSide ( OsiSolverInterface &  si,
OsiCuts *  cuts 
) const

check if (column!) cuts compatible with solver interface

int Couenne::CouenneDisjCuts::getBoxUnion ( OsiSolverInterface &  si,
OsiCuts *  left,
OsiCuts *  right,
CoinPackedVector &  lower,
CoinPackedVector &  upper 
) const

compute smallest box containing both left and right boxes.

OsiCuts* Couenne::CouenneDisjCuts::getSingleDisjunction ( OsiSolverInterface &  si  )  const [protected]

create single osicolcut disjunction

void Couenne::CouenneDisjCuts::mergeBoxes ( int  dir,
CoinPackedVector &  left,
CoinPackedVector &  right,
CoinPackedVector  merged 
) const [protected]

utility to merge vectors into one

void Couenne::CouenneDisjCuts::applyColCuts ( OsiSolverInterface &  si,
OsiCuts *  cuts 
) const [protected]

our own applyColCuts

void Couenne::CouenneDisjCuts::applyColCuts ( OsiSolverInterface &  si,
OsiColCut *  cut 
) const [protected]

our own applyColCut, single cut

void Couenne::CouenneDisjCuts::OsiSI2MatrVec ( CoinPackedMatrix &  M,
CoinPackedVector &  r,
OsiSolverInterface &  si 
) const [protected]
int Couenne::CouenneDisjCuts::OsiCuts2MatrVec ( OsiSolverInterface *  cglp,
OsiCuts *  cuts,
int  displRow,
int  displRhs 
) const [protected]

add CGLP columns to solver interface; return number of columns added (for later removal)


Member Data Documentation

pointer to symbolic repr. of constraint, variables, and bounds

Definition at line 39 of file CouenneDisjCuts.hpp.

Referenced by couenneCG().

int Couenne::CouenneDisjCuts::nrootcuts_ [mutable, protected]

number of cuts generated at the first call

Definition at line 42 of file CouenneDisjCuts.hpp.

int Couenne::CouenneDisjCuts::ntotalcuts_ [mutable, protected]

total number of cuts generated

Definition at line 45 of file CouenneDisjCuts.hpp.

double Couenne::CouenneDisjCuts::septime_ [mutable, protected]

separation time (includes generation of problem)

Definition at line 48 of file CouenneDisjCuts.hpp.

double Couenne::CouenneDisjCuts::objValue_ [mutable, protected]

Record obj value at final point of CouenneConv.

Definition at line 51 of file CouenneDisjCuts.hpp.

Bonmin::OsiTMINLPInterface* Couenne::CouenneDisjCuts::minlp_ [protected]

nonlinear solver interface as used within Bonmin (used at first Couenne pass of each b&b node)

Definition at line 55 of file CouenneDisjCuts.hpp.

OsiChooseVariable* Couenne::CouenneDisjCuts::branchingMethod_ [protected]

Branching scheme (if strong, we can use SB candidates).

Definition at line 58 of file CouenneDisjCuts.hpp.

Is branchMethod_ referred to a strong branching scheme?

Definition at line 61 of file CouenneDisjCuts.hpp.

SmartPointer to the Journalist.

Definition at line 64 of file CouenneDisjCuts.hpp.

Referenced by Jnlst().

Number of disjunction to consider at each separation.

Definition at line 67 of file CouenneDisjCuts.hpp.

Initial percentage of objects to use for generating cuts, in [0,1].

Definition at line 70 of file CouenneDisjCuts.hpp.

Initial number of objects to use for generating cuts.

Definition at line 73 of file CouenneDisjCuts.hpp.

Depth of the BB tree where start decreasing number of objects.

Definition at line 76 of file CouenneDisjCuts.hpp.

Depth of the BB tree where stop separation.

Definition at line 79 of file CouenneDisjCuts.hpp.

only include active rows in CGLP

Definition at line 82 of file CouenneDisjCuts.hpp.

only include active columns in CGLP

Definition at line 85 of file CouenneDisjCuts.hpp.

add previous disj cut to current CGLP?

Definition at line 88 of file CouenneDisjCuts.hpp.

maximum CPU time

Definition at line 91 of file CouenneDisjCuts.hpp.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 17 Feb 2015 for Couenne by  doxygen 1.6.1