#include <CouenneVarObject.hpp>
Inheritance diagram for Couenne::CouenneVarObject:
Public Member Functions | |
CouenneVarObject (CouenneCutGenerator *c, CouenneProblem *p, exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst, int varSelection) | |
Constructor with information for branching point selection strategy. | |
CouenneVarObject (const CouenneVarObject &src) | |
Copy constructor. | |
~CouenneVarObject () | |
Destructor. | |
virtual CouenneObject * | clone () const |
Cloning method. | |
virtual double | infeasibility (const OsiBranchingInformation *info, int &way) const |
compute infeasibility of this variable x as the sum/min/max of all infeasibilities of auxiliaries w whose defining function depends on x |w - f(x)| | |
virtual double | checkInfeasibility (const OsiBranchingInformation *info) const |
compute infeasibility of this variable, |w - f(x)|, where w is the auxiliary variable defined as w = f(x) | |
virtual OsiBranchingObject * | createBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) const |
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object | |
virtual double | feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const |
fix nonlinear coordinates of current integer-nonlinear feasible solution | |
virtual bool | isCuttable () const |
are we on the bad or good side of the expression? | |
Protected Member Functions | |
CouNumber | computeBranchingPoint (const OsiBranchingInformation *info, int &bestWay, const CouenneObject *&criticalObject) const |
Method computing the branching point. | |
Protected Attributes | |
int | varSelection_ |
branching scheme used. |
Definition at line 22 of file CouenneVarObject.hpp.
CouenneVarObject::CouenneVarObject | ( | CouenneCutGenerator * | c, | |
CouenneProblem * | p, | |||
exprVar * | ref, | |||
Bonmin::BabSetupBase * | base, | |||
JnlstPtr | jnlst, | |||
int | varSelection | |||
) |
Constructor with information for branching point selection strategy.
Definition at line 25 of file CouenneVarObject.cpp.
References Couenne::CouenneObject::alpha_, Couenne::CouenneObject::BALANCED, Couenne::J_BRANCHING(), Couenne::CouenneObject::jnlst_, Couenne::CouenneObject::LP_CENTRAL, Couenne::CouenneObject::lp_clamp_, Couenne::CouenneObject::LP_CLAMPED, Couenne::CouenneObject::MID_INTERVAL, Couenne::CouenneObject::MIN_AREA, Couenne::CouenneObject::NO_BRANCH, print(), Couenne::CouenneObject::reference_, and Couenne::CouenneObject::strategy_.
Referenced by clone().
Couenne::CouenneVarObject::CouenneVarObject | ( | const CouenneVarObject & | src | ) | [inline] |
Couenne::CouenneVarObject::~CouenneVarObject | ( | ) | [inline] |
virtual CouenneObject* Couenne::CouenneVarObject::clone | ( | ) | const [inline, virtual] |
Cloning method.
Reimplemented from Couenne::CouenneObject.
Reimplemented in Couenne::CouenneVTObject.
Definition at line 43 of file CouenneVarObject.hpp.
References CouenneVarObject().
double CouenneVarObject::infeasibility | ( | const OsiBranchingInformation * | info, | |
int & | way | |||
) | const [virtual] |
compute infeasibility of this variable x as the sum/min/max of all infeasibilities of auxiliaries w whose defining function depends on x |w - f(x)|
TODO: suggest way
Reimplemented from Couenne::CouenneObject.
Reimplemented in Couenne::CouenneVTObject.
Definition at line 29 of file infeasibility.cpp.
References checkInfeasibility(), computeBranchingPoint(), COUENNE_EPS, Couenne::CouenneObject::downEstimate_, Couenne::CouenneObject::feas_tolerance_, Couenne::CouenneObject::intInfeasibility(), Couenne::isInteger(), Couenne::J_BRANCHING(), Couenne::CouenneObject::jnlst_, print(), Couenne::CouenneObject::problem_, Couenne::CouenneObject::PROJECTDIST, Couenne::CouenneObject::pseudoMultType_, Couenne::CouenneObject::reference_, Couenne::CouenneObject::setEstimates(), and Couenne::CouenneObject::upEstimate_.
double CouenneVarObject::checkInfeasibility | ( | const OsiBranchingInformation * | info | ) | const [virtual] |
compute infeasibility of this variable, |w - f(x)|, where w is the auxiliary variable defined as w = f(x)
Reimplemented from Couenne::CouenneObject.
Definition at line 128 of file infeasibility.cpp.
References COUENNE_EPS, Couenne::CouenneObject::problem_, Couenne::CouenneObject::Reference(), Couenne::CouenneObject::reference_, weiAvg, weiMax, weiMin, and weiSum.
Referenced by Couenne::CouenneVTObject::infeasibility(), and infeasibility().
OsiBranchingObject * CouenneVarObject::createBranch | ( | OsiSolverInterface * | , | |
const OsiBranchingInformation * | , | |||
int | ||||
) | const [virtual] |
create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object
Reimplemented from Couenne::CouenneObject.
Definition at line 54 of file CouenneVarObject.cpp.
References computeBranchingPoint(), COUENNE_INFINITY, Couenne::CouenneObject::cutGen_, Couenne::CouenneObject::doConvCuts_, Couenne::CouenneObject::doFBBT_, Couenne::J_BRANCHING(), Couenne::CouenneObject::jnlst_, LARGE_VALUE, Couenne::CouenneObject::LP_CENTRAL, Couenne::CouenneObject::lp_clamp_, Couenne::CouenneObject::LP_CLAMPED, Couenne::CouenneObject::MID_INTERVAL, Couenne::CouenneObject::midInterval(), Bonmin::BabSetupBase::OSI_SIMPLE, Couenne::CouenneObject::problem_, Couenne::CouenneObject::reference_, Couenne::CouenneObject::strategy_, Couenne::TWO_LEFT, and varSelection_.
double CouenneVarObject::feasibleRegion | ( | OsiSolverInterface * | , | |
const OsiBranchingInformation * | ||||
) | const [virtual] |
fix nonlinear coordinates of current integer-nonlinear feasible solution
Reimplemented from Couenne::CouenneObject.
Definition at line 340 of file CouenneVarObject.cpp.
References Couenne::CouenneObject::reference_, and TOL.
bool CouenneVarObject::isCuttable | ( | ) | const [virtual] |
are we on the bad or good side of the expression?
Reimplemented from Couenne::CouenneObject.
Definition at line 357 of file CouenneVarObject.cpp.
References Couenne::isInteger(), Couenne::CouenneObject::problem_, and Couenne::CouenneObject::reference_.
CouNumber CouenneVarObject::computeBranchingPoint | ( | const OsiBranchingInformation * | info, | |
int & | bestWay, | |||
const CouenneObject *& | criticalObject | |||
) | const [protected] |
Method computing the branching point.
Definition at line 154 of file CouenneVarObject.cpp.
References COU_MAX_COEFF, Couenne::CouenneObject::downEstimate_, e, Couenne::J_BRANCHING(), Couenne::CouenneObject::jnlst_, Couenne::large_bound, Couenne::CouenneObject::LP_CENTRAL, Couenne::CouenneObject::lp_clamp_, Couenne::CouenneObject::LP_CLAMPED, Couenne::CouenneObject::MID_INTERVAL, Couenne::CouenneObject::midInterval(), print(), Couenne::CouenneObject::problem_, Couenne::CouenneObject::PROJECTDIST, Couenne::CouenneObject::pseudoMultType_, Couenne::CouenneObject::Reference(), Couenne::CouenneObject::reference_, Couenne::CouenneObject::strategy_, Couenne::TWO_LEFT, Couenne::TWO_RAND, Couenne::TWO_RIGHT, and Couenne::CouenneObject::upEstimate_.
Referenced by createBranch(), and infeasibility().
int Couenne::CouenneVarObject::varSelection_ [protected] |
branching scheme used.
Experimental: still figuring out why plain LP branching doesn't work with strong/reliability branching
Definition at line 73 of file CouenneVarObject.hpp.
Referenced by createBranch().