Cut Generator for linear convexifications. More...
#include <CouenneDisjCuts.hpp>
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 | |
CouenneDisjCuts * | clone () const |
clone method (necessary for the abstract CglCutGenerator class) | |
CouenneCutGenerator * | couenneCG () 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 | |
CouenneCutGenerator * | couenneCG_ |
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 |
Cut Generator for linear convexifications.
Definition at line 33 of file CouenneDisjCuts.hpp.
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
CouenneDisjCuts* Couenne::CouenneDisjCuts::clone | ( | ) | const [inline] |
clone method (necessary for the abstract CglCutGenerator class)
Definition at line 110 of file CouenneDisjCuts.hpp.
References CouenneDisjCuts().
CouenneCutGenerator* Couenne::CouenneDisjCuts::couenneCG | ( | ) | const [inline] |
return pointer to symbolic problem
Definition at line 114 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] |
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)
CouenneCutGenerator* Couenne::CouenneDisjCuts::couenneCG_ [protected] |
pointer to symbolic repr. of constraint, variables, and bounds
Definition at line 38 of file CouenneDisjCuts.hpp.
Referenced by couenneCG().
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.
bool Couenne::CouenneDisjCuts::isBranchingStrong_ [protected] |
Is branchMethod_ referred to a strong branching scheme?
Definition at line 60 of file CouenneDisjCuts.hpp.
JnlstPtr Couenne::CouenneDisjCuts::jnlst_ [protected] |
SmartPointer to the Journalist.
Definition at line 63 of file CouenneDisjCuts.hpp.
Referenced by Jnlst().
int Couenne::CouenneDisjCuts::numDisjunctions_ [mutable, protected] |
Number of disjunction to consider at each separation.
Definition at line 66 of file CouenneDisjCuts.hpp.
double Couenne::CouenneDisjCuts::initDisjPercentage_ [protected] |
Initial percentage of objects to use for generating cuts, in [0,1].
Definition at line 69 of file CouenneDisjCuts.hpp.
int Couenne::CouenneDisjCuts::initDisjNumber_ [protected] |
Initial number of objects to use for generating cuts.
Definition at line 72 of file CouenneDisjCuts.hpp.
int Couenne::CouenneDisjCuts::depthLevelling_ [protected] |
Depth of the BB tree where start decreasing number of objects.
Definition at line 75 of file CouenneDisjCuts.hpp.
int Couenne::CouenneDisjCuts::depthStopSeparate_ [protected] |
Depth of the BB tree where stop separation.
Definition at line 78 of file CouenneDisjCuts.hpp.
bool Couenne::CouenneDisjCuts::activeRows_ [protected] |
only include active rows in CGLP
Definition at line 81 of file CouenneDisjCuts.hpp.
bool Couenne::CouenneDisjCuts::activeCols_ [protected] |
only include active columns in CGLP
Definition at line 84 of file CouenneDisjCuts.hpp.
bool Couenne::CouenneDisjCuts::addPreviousCut_ [protected] |
add previous disj cut to current CGLP?
Definition at line 87 of file CouenneDisjCuts.hpp.
double Couenne::CouenneDisjCuts::cpuTime_ [protected] |
maximum CPU time
Definition at line 90 of file CouenneDisjCuts.hpp.