Couenne::CouenneDisjCuts Class Reference

Cut Generator for linear convexifications. More...

#include <CouenneDisjCuts.hpp>

Collaboration diagram for Couenne::CouenneDisjCuts:
Collaboration graph
[legend]

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 33 of file CouenneDisjCuts.hpp.


Constructor & Destructor Documentation

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

Definition at line 19 of file CouenneDisjCuts.cpp.

CouenneDisjCuts::CouenneDisjCuts ( const CouenneDisjCuts src  ) 

copy constructor

copy constructorProduceOutput

Definition at line 55 of file CouenneDisjCuts.cpp.

CouenneDisjCuts::~CouenneDisjCuts (  ) 

destructor

Definition at line 77 of file CouenneDisjCuts.cpp.


Member Function Documentation

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

clone method (necessary for the abstract CglCutGenerator class)

Definition at line 110 of file CouenneDisjCuts.hpp.

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

return pointer to symbolic problem

Definition at line 114 of file CouenneDisjCuts.hpp.

void CouenneDisjCuts::generateCuts ( const OsiSolverInterface &  si,
OsiCuts &  cs,
const CglTreeInfo  info = CglTreeInfo () 
) const

the main CglCutGenerator

generate disjunctive cuts

Definition at line 23 of file generateDisjCuts.cpp.

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

Add list of options to be read from file.

Definition at line 82 of file CouenneDisjCuts.cpp.

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

Provide Journalist.

Definition at line 126 of file CouenneDisjCuts.hpp.

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

get all disjunctions

generate all disjunctions given current point

Definition at line 27 of file getDisjunctions.cpp.

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

separate couenne cuts on both sides of single disjunction

generate row cuts for one side of the disjunction

Definition at line 20 of file separateWithDisjunction.cpp.

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

generate one disjunctive cut from one CGLP

Definition at line 47 of file disjCut.cpp.

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

check if (column!) cuts compatible with solver interface

Definition at line 55 of file singleDisjunctions.cpp.

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

compute smallest box containing both left and right boxes.

Definition at line 107 of file singleDisjunctions.cpp.

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

create single osicolcut disjunction

Definition at line 18 of file singleDisjunctions.cpp.

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

utility to merge vectors into one

Definition at line 143 of file singleDisjunctions.cpp.

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

our own applyColCuts

Definition at line 243 of file getDisjunctions.cpp.

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

our own applyColCut, single cut

Definition at line 260 of file getDisjunctions.cpp.

void CouenneDisjCuts::OsiSI2MatrVec ( CoinPackedMatrix &  M,
CoinPackedVector &  r,
OsiSolverInterface &  si 
) const [protected]

Definition at line 28 of file OsiLinear2MatrVec.cpp.

int 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)

Definition at line 30 of file OsiCuts2MatrVec.cpp.


Member Data Documentation

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

Definition at line 38 of file CouenneDisjCuts.hpp.

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

number of cuts generated at the first call

Definition at line 41 of file CouenneDisjCuts.hpp.

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

total number of cuts generated

Definition at line 44 of file CouenneDisjCuts.hpp.

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

separation time (includes generation of problem)

Definition at line 47 of file CouenneDisjCuts.hpp.

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

Record obj value at final point of CouenneConv.

Definition at line 50 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 54 of file CouenneDisjCuts.hpp.

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

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

Definition at line 57 of file CouenneDisjCuts.hpp.

Is branchMethod_ referred to a strong branching scheme?

Definition at line 60 of file CouenneDisjCuts.hpp.

SmartPointer to the Journalist.

Definition at line 63 of file CouenneDisjCuts.hpp.

Number of disjunction to consider at each separation.

Definition at line 66 of file CouenneDisjCuts.hpp.

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

Definition at line 69 of file CouenneDisjCuts.hpp.

Initial number of objects to use for generating cuts.

Definition at line 72 of file CouenneDisjCuts.hpp.

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

Definition at line 75 of file CouenneDisjCuts.hpp.

Depth of the BB tree where stop separation.

Definition at line 78 of file CouenneDisjCuts.hpp.

only include active rows in CGLP

Definition at line 81 of file CouenneDisjCuts.hpp.

only include active columns in CGLP

Definition at line 84 of file CouenneDisjCuts.hpp.

add previous disj cut to current CGLP?

Definition at line 87 of file CouenneDisjCuts.hpp.

maximum CPU time

Definition at line 90 of file CouenneDisjCuts.hpp.


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

Generated on 22 May 2012 by  doxygen 1.6.1