Cut Generator for linear convexifications.
More...
#include <CouenneDisjCuts.hpp>
|
| 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 More...
|
|
| CouenneDisjCuts (const CouenneDisjCuts &) |
| copy constructor More...
|
|
| ~CouenneDisjCuts () |
| destructor More...
|
|
CouenneDisjCuts * | clone () const |
| clone method (necessary for the abstract CglCutGenerator class) More...
|
|
CouenneCutGenerator * | couenneCG () const |
| return pointer to symbolic problem More...
|
|
void | generateCuts (const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const |
| the main CglCutGenerator More...
|
|
ConstJnlstPtr | Jnlst () const |
| Provide Journalist. More...
|
|
int | getDisjunctions (std::vector< std::pair< OsiCuts *, OsiCuts * > > &disjunctions, OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo &info) const |
| get all disjunctions More...
|
|
int | separateWithDisjunction (OsiCuts *cuts, OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo &info) const |
| separate couenne cuts on both sides of single disjunction More...
|
|
int | generateDisjCuts (std::vector< std::pair< OsiCuts *, OsiCuts * > > &disjs, OsiSolverInterface &si, OsiCuts &cs, const CglTreeInfo &info) const |
| generate one disjunctive cut from one CGLP More...
|
|
int | checkDisjSide (OsiSolverInterface &si, OsiCuts *cuts) const |
| check if (column!) cuts compatible with solver interface More...
|
|
int | getBoxUnion (OsiSolverInterface &si, OsiCuts *left, OsiCuts *right, CoinPackedVector &lower, CoinPackedVector &upper) const |
| compute smallest box containing both left and right boxes. More...
|
|
|
OsiCuts * | getSingleDisjunction (OsiSolverInterface &si) const |
| create single osicolcut disjunction More...
|
|
void | mergeBoxes (int dir, CoinPackedVector &left, CoinPackedVector &right, CoinPackedVector merged) const |
| utility to merge vectors into one More...
|
|
void | applyColCuts (OsiSolverInterface &si, OsiCuts *cuts) const |
| our own applyColCuts More...
|
|
void | applyColCuts (OsiSolverInterface &si, OsiColCut *cut) const |
| our own applyColCut, single cut More...
|
|
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) More...
|
|
Cut Generator for linear convexifications.
Definition at line 34 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 |
|
) |
| |
Couenne::CouenneDisjCuts::~CouenneDisjCuts |
( |
| ) |
|
void Couenne::CouenneDisjCuts::generateCuts |
( |
const OsiSolverInterface & |
, |
|
|
OsiCuts & |
, |
|
|
const CglTreeInfo |
= CglTreeInfo() |
|
) |
| const |
static void Couenne::CouenneDisjCuts::registerOptions |
( |
Ipopt::SmartPtr< Bonmin::RegisteredOptions > |
roptions | ) |
|
|
static |
Add list of options to be read from file.
int Couenne::CouenneDisjCuts::getDisjunctions |
( |
std::vector< std::pair< OsiCuts *, OsiCuts * > > & |
disjunctions, |
|
|
OsiSolverInterface & |
si, |
|
|
OsiCuts & |
cs, |
|
|
const CglTreeInfo & |
info |
|
) |
| const |
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 |
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)
int Couenne::CouenneDisjCuts::nrootcuts_ |
|
mutableprotected |
int Couenne::CouenneDisjCuts::ntotalcuts_ |
|
mutableprotected |
double Couenne::CouenneDisjCuts::septime_ |
|
mutableprotected |
double Couenne::CouenneDisjCuts::objValue_ |
|
mutableprotected |
Bonmin::OsiTMINLPInterface* Couenne::CouenneDisjCuts::minlp_ |
|
protected |
OsiChooseVariable* Couenne::CouenneDisjCuts::branchingMethod_ |
|
protected |
Branching scheme (if strong, we can use SB candidates)
Definition at line 58 of file CouenneDisjCuts.hpp.
bool Couenne::CouenneDisjCuts::isBranchingStrong_ |
|
protected |
Is branchMethod_ referred to a strong branching scheme?
Definition at line 61 of file CouenneDisjCuts.hpp.
JnlstPtr Couenne::CouenneDisjCuts::jnlst_ |
|
protected |
int Couenne::CouenneDisjCuts::numDisjunctions_ |
|
mutableprotected |
double Couenne::CouenneDisjCuts::initDisjPercentage_ |
|
protected |
Initial percentage of objects to use for generating cuts, in [0,1].
Definition at line 70 of file CouenneDisjCuts.hpp.
int Couenne::CouenneDisjCuts::initDisjNumber_ |
|
protected |
int Couenne::CouenneDisjCuts::depthLevelling_ |
|
protected |
Depth of the BB tree where start decreasing number of objects.
Definition at line 76 of file CouenneDisjCuts.hpp.
int Couenne::CouenneDisjCuts::depthStopSeparate_ |
|
protected |
bool Couenne::CouenneDisjCuts::activeRows_ |
|
protected |
bool Couenne::CouenneDisjCuts::activeCols_ |
|
protected |
bool Couenne::CouenneDisjCuts::addPreviousCut_ |
|
protected |
double Couenne::CouenneDisjCuts::cpuTime_ |
|
protected |
The documentation for this class was generated from the following file: