Couenne::CouenneVarObject Class Reference

OsiObject for variables in a MINLP. More...

#include <CouenneVarObject.hpp>

Inheritance diagram for Couenne::CouenneVarObject:

Inheritance graph
[legend]
Collaboration diagram for Couenne::CouenneVarObject:

Collaboration graph
[legend]
List of all members.

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 CouenneObjectclone () 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.

Detailed Description

OsiObject for variables in a MINLP.

Definition at line 22 of file CouenneVarObject.hpp.


Constructor & Destructor Documentation

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]

Copy constructor.

Definition at line 35 of file CouenneVarObject.hpp.

Couenne::CouenneVarObject::~CouenneVarObject (  )  [inline]

Destructor.

Definition at line 40 of file CouenneVarObject.hpp.


Member Function Documentation

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().


Member Data Documentation

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().


The documentation for this class was generated from the following files:
Generated on Thu Nov 10 03:13:54 2011 by  doxygen 1.4.7