CouenneObject Class Reference

OsiObject for auxiliary variables $w=f(x)$. More...

#include <CouenneObject.hpp>

Inheritance diagram for CouenneObject:

Inheritance graph
[legend]
Collaboration diagram for CouenneObject:

Collaboration graph
[legend]
List of all members.

Public Types

 INFEASIBILITY
 INTERVAL_LP
 INTERVAL_LP_REV
 INTERVAL_BR
 INTERVAL_BR_REV
 PROJECTDIST
 EXPR_OBJ
 VAR_OBJ
 VT_OBJ
 NO_STRATEGY
 NO_BRANCH
 MID_INTERVAL
 MIN_AREA
 BALANCED
 LP_CENTRAL
 LP_CLAMPED
enum  pseudocostMult {
  INFEASIBILITY, INTERVAL_LP, INTERVAL_LP_REV, INTERVAL_BR,
  INTERVAL_BR_REV, PROJECTDIST
}
 type of up/down estimate to return for pseudocosts More...
enum  branch_obj { EXPR_OBJ, VAR_OBJ, VT_OBJ }
 type of object (for branching variable selection) More...
enum  brSelStrat {
  NO_STRATEGY, NO_BRANCH, MID_INTERVAL, MIN_AREA,
  BALANCED, LP_CENTRAL, LP_CLAMPED
}
 strategy names More...

Public Member Functions

 CouenneObject ()
 empty constructor (for unused objects)
 CouenneObject (CouenneCutGenerator *cutgen, CouenneProblem *p, exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst)
 Constructor with information for branching point selection strategy.
 CouenneObject (exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst)
 Constructor with lesser information, used for infeasibility only.
 ~CouenneObject ()
 Destructor.
 CouenneObject (const CouenneObject &src)
 Copy constructor.
virtual CouenneObjectclone () const
 Cloning method.
void setParameters (Bonmin::BabSetupBase *base)
 set object parameters by reading from command line
virtual double infeasibility (const OsiBranchingInformation *info, int &way) const
 compute infeasibility of this variable, |w - f(x)| (where w is the auxiliary variable defined as 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 double feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const
 fix (one of the) arguments of reference auxiliary variable
virtual OsiBranchingObject * createBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) const
 create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object
exprVarReference () const
 return reference auxiliary variable
enum brSelStrat Strategy () const
 return branching point selection strategy
CouNumber getBrPoint (funtriplet *ft, CouNumber x0, CouNumber l, CouNumber u) const
 pick branching point based on current strategy
CouNumber midInterval (CouNumber x, CouNumber l, CouNumber u) const
 returns a point "inside enough" a given interval, or x if it already is
virtual double downEstimate () const
 Return "down" estimate (for non-convex, distance old <--> new LP point).
virtual double upEstimate () const
 Return "up" estimate (for non-convex, distance old <--> new LP point).
void setEstimate (double est, int direction)
 set up/down estimate (0 for down, 1 for up).
void setEstimates (const OsiBranchingInformation *info, CouNumber *infeasibility, CouNumber *brpt) const
 set up/down estimates based on branching information
virtual bool isCuttable () const
 are we on the bad or good side of the expression?
virtual double intInfeasibility (double value) const
 integer infeasibility: min {value - floor(value), ceil(value) - value}

Protected Attributes

CouenneCutGeneratorcutGen_
 pointer to cut generator (not necessary, can be NULL)
CouenneProblemproblem_
 pointer to Couenne problem
exprVarreference_
 The (auxiliary) variable this branching object refers to.
enum brSelStrat strategy_
 Branching point selection strategy.
JnlstPtr jnlst_
 SmartPointer to the Journalist.
CouNumber alpha_
 Combination parameter for the mid-point branching point selection strategy.
CouNumber lp_clamp_
 Defines safe interval percentage for using LP point as a branching point.
CouNumber feas_tolerance_
 feasibility tolerance (equal to that of CouenneProblem)
bool doFBBT_
 shall we do Feasibility based Bound Tightening (FBBT) at branching?
bool doConvCuts_
 shall we add convexification cuts at branching?
double downEstimate_
 down estimate (to be used in pseudocost)
double upEstimate_
 up estimate (to be used in pseudocost)
enum pseudocostMult pseudoMultType_
 multiplier type for pseudocost

Detailed Description

OsiObject for auxiliary variables $w=f(x)$.

Associated with a multi-variate function $f(x)$ and a related infeasibility $|w-f(x)|$, creates branches to help restoring feasibility

Definition at line 49 of file CouenneObject.hpp.


Member Enumeration Documentation

enum CouenneObject::pseudocostMult

type of up/down estimate to return for pseudocosts

Enumerator:
INFEASIBILITY 
INTERVAL_LP 
INTERVAL_LP_REV 
INTERVAL_BR 
INTERVAL_BR_REV 
PROJECTDIST 

Definition at line 54 of file CouenneObject.hpp.

enum CouenneObject::branch_obj

type of object (for branching variable selection)

Enumerator:
EXPR_OBJ 
VAR_OBJ 
VT_OBJ 

Definition at line 60 of file CouenneObject.hpp.

enum CouenneObject::brSelStrat

strategy names

Enumerator:
NO_STRATEGY 
NO_BRANCH 
MID_INTERVAL 
MIN_AREA 
BALANCED 
LP_CENTRAL 
LP_CLAMPED 

Definition at line 63 of file CouenneObject.hpp.


Constructor & Destructor Documentation

CouenneObject::CouenneObject (  ) 

empty constructor (for unused objects)

Definition at line 24 of file CouenneObject.cpp.

Referenced by clone().

CouenneObject::CouenneObject ( CouenneCutGenerator cutgen,
CouenneProblem p,
exprVar ref,
Bonmin::BabSetupBase base,
JnlstPtr  jnlst 
)

Constructor with information for branching point selection strategy.

Definition at line 43 of file CouenneObject.cpp.

References alpha_, AUX, BALANCED, J_BRANCHING(), jnlst_, LP_CENTRAL, lp_clamp_, LP_CLAMPED, MID_INTERVAL, MIN_AREA, NO_BRANCH, reference_, setParameters(), and strategy_.

CouenneObject::CouenneObject ( exprVar ref,
Bonmin::BabSetupBase base,
JnlstPtr  jnlst 
)

Constructor with lesser information, used for infeasibility only.

Definition at line 92 of file CouenneObject.cpp.

References setParameters().

CouenneObject::~CouenneObject (  )  [inline]

Destructor.

Definition at line 77 of file CouenneObject.hpp.

CouenneObject::CouenneObject ( const CouenneObject src  ) 

Copy constructor.

Definition at line 117 of file CouenneObject.cpp.


Member Function Documentation

virtual CouenneObject* CouenneObject::clone (  )  const [inline, virtual]

Cloning method.

Reimplemented in CouenneComplObject, CouenneOrbitObj, CouenneVarObject, and CouenneVTObject.

Definition at line 83 of file CouenneObject.hpp.

References CouenneObject().

void CouenneObject::setParameters ( Bonmin::BabSetupBase base  ) 

set object parameters by reading from command line

Reimplemented in CouenneOrbitObj.

Definition at line 393 of file CouenneObject.cpp.

References alpha_, AUX, BALANCED, COU_EXPRCOS, COU_EXPRDIV, COU_EXPREXP, COU_EXPRINV, COU_EXPRLOG, COU_EXPRMUL, COU_EXPRPOW, COU_EXPRSIN, COUENNE_EPS, doConvCuts_, doFBBT_, feas_tolerance_, INFEASIBILITY, INTERVAL_BR, INTERVAL_BR_REV, INTERVAL_LP, INTERVAL_LP_REV, LP_CENTRAL, lp_clamp_, LP_CLAMPED, MID_INTERVAL, MIN_AREA, NO_BRANCH, PROJECTDIST, pseudoMultType_, reference_, s, and strategy_.

Referenced by CouenneObject().

double CouenneObject::infeasibility ( const OsiBranchingInformation *  info,
int &  way 
) const [virtual]

compute infeasibility of this variable, |w - f(x)| (where w is the auxiliary variable defined as w = f(x)

Reimplemented in CouenneComplObject, CouenneOrbitObj, CouenneVarObject, and CouenneVTObject.

Definition at line 299 of file CouenneObject.cpp.

References checkInfeasibility(), downEstimate_, INFEASIBILITY, intInfeasibility(), isInteger(), NO_BRANCH, problem_, pseudoMultType_, reference_, setEstimates(), strategy_, and upEstimate_.

double CouenneObject::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 in CouenneComplObject, CouenneOrbitObj, and CouenneVarObject.

Definition at line 338 of file CouenneObject.cpp.

References COUENNE_EPS, COUENNE_INFINITY, feas_tolerance_, intInfeasibility(), isInteger(), J_BRANCHING(), jnlst_, ratio(), reference_, and VAR.

Referenced by infeasibility().

double CouenneObject::feasibleRegion ( OsiSolverInterface *  ,
const OsiBranchingInformation *   
) const [virtual]

fix (one of the) arguments of reference auxiliary variable

Reimplemented in CouenneOrbitObj, and CouenneVarObject.

Definition at line 26 of file feasibleRegion.cpp.

References COU_EXPRGROUP, COU_EXPRQUAD, e, N_ARY, reference_, TOL, and UNARY.

OsiBranchingObject * CouenneObject::createBranch ( OsiSolverInterface *  ,
const OsiBranchingInformation *  ,
int   
) const [virtual]

create CouenneBranchingObject or CouenneThreeWayBranchObj based on this object

Debug output

Reimplemented in CouenneComplObject, CouenneOrbitObj, and CouenneVarObject.

Definition at line 135 of file CouenneObject.cpp.

References COUENNE_EPS, cutGen_, doConvCuts_, doFBBT_, downEstimate_, J_BRANCHING(), jnlst_, problem_, PROJECTDIST, pseudoMultType_, reference_, setEstimates(), TWO_LEFT, TWO_RAND, TWO_RIGHT, and upEstimate_.

exprVar* CouenneObject::Reference (  )  const [inline]

return reference auxiliary variable

Definition at line 106 of file CouenneObject.hpp.

References reference_.

Referenced by CouenneVarObject::checkInfeasibility(), CouenneVarObject::computeBranchingPoint(), CouenneVTObject::infeasibility(), and exprDiv::selectBranch().

enum brSelStrat CouenneObject::Strategy (  )  const [inline]

return branching point selection strategy

Definition at line 110 of file CouenneObject.hpp.

References strategy_.

CouNumber CouenneObject::getBrPoint ( funtriplet ft,
CouNumber  x0,
CouNumber  l,
CouNumber  u 
) const

pick branching point based on current strategy

Definition at line 274 of file CouenneObject.cpp.

References BALANCED, COUENNE_EPS, LP_CENTRAL, lp_clamp_, LP_CLAMPED, maxHeight(), MID_INTERVAL, midInterval(), MIN_AREA, minMaxDelta(), strategy_, and THRES_ZERO_SYMM.

CouNumber CouenneObject::midInterval ( CouNumber  x,
CouNumber  l,
CouNumber  u 
) const

returns a point "inside enough" a given interval, or x if it already is

Definition at line 249 of file CouenneObject.cpp.

References AGGR_MUL, alpha_, closeToBounds, COUENNE_EPS, and COUENNE_INFINITY.

Referenced by CouenneVarObject::computeBranchingPoint(), getBrPoint(), and setEstimates().

virtual double CouenneObject::downEstimate (  )  const [inline, virtual]

Return "down" estimate (for non-convex, distance old <--> new LP point).

Definition at line 121 of file CouenneObject.hpp.

References downEstimate_.

virtual double CouenneObject::upEstimate (  )  const [inline, virtual]

Return "up" estimate (for non-convex, distance old <--> new LP point).

Definition at line 130 of file CouenneObject.hpp.

References upEstimate_.

void CouenneObject::setEstimate ( double  est,
int  direction 
) [inline]

set up/down estimate (0 for down, 1 for up).

This happens in CouenneChooseStrong, where a new LP point is available and we can measure distance from old LP point. This is the denominator we use in pseudocost

Definition at line 142 of file CouenneObject.hpp.

References downEstimate_, and upEstimate_.

void CouenneObject::setEstimates ( const OsiBranchingInformation *  info,
CouNumber infeasibility,
CouNumber brpt 
) const

set up/down estimates based on branching information

Definition at line 483 of file CouenneObject.cpp.

References closeToBounds, COUENNE_INFINITY, downEstimate_, INFEASIBILITY, INTERVAL_BR, INTERVAL_BR_REV, INTERVAL_LP, INTERVAL_LP_REV, isInteger(), max_pseudocost, midInterval(), PROJECTDIST, pseudoMultType_, reference_, and upEstimate_.

Referenced by createBranch(), CouenneVarObject::infeasibility(), and infeasibility().

virtual bool CouenneObject::isCuttable (  )  const [inline, virtual]

are we on the bad or good side of the expression?

Reimplemented in CouenneVarObject.

Definition at line 151 of file CouenneObject.hpp.

References isInteger(), problem_, and reference_.

virtual double CouenneObject::intInfeasibility ( double  value  )  const [inline, virtual]

integer infeasibility: min {value - floor(value), ceil(value) - value}

Definition at line 159 of file CouenneObject.hpp.

References COUENNE_EPS.

Referenced by checkInfeasibility(), CouenneVTObject::infeasibility(), CouenneVarObject::infeasibility(), and infeasibility().


Member Data Documentation

CouenneCutGenerator* CouenneObject::cutGen_ [protected]

pointer to cut generator (not necessary, can be NULL)

Definition at line 165 of file CouenneObject.hpp.

Referenced by CouenneVarObject::createBranch(), createBranch(), and CouenneComplObject::createBranch().

CouenneProblem* CouenneObject::problem_ [protected]

pointer to Couenne problem

Definition at line 168 of file CouenneObject.hpp.

Referenced by CouenneVarObject::checkInfeasibility(), CouenneVarObject::computeBranchingPoint(), CouenneVarObject::createBranch(), createBranch(), CouenneComplObject::createBranch(), CouenneVTObject::infeasibility(), CouenneVarObject::infeasibility(), infeasibility(), CouenneVarObject::isCuttable(), and isCuttable().

exprVar* CouenneObject::reference_ [protected]

The (auxiliary) variable this branching object refers to.

If the expression is w=f(x,y), this is w, as opposed to CouenneBranchingObject, where it would be either x or y.

Definition at line 173 of file CouenneObject.hpp.

Referenced by CouenneVarObject::checkInfeasibility(), checkInfeasibility(), CouenneComplObject::checkInfeasibility(), CouenneVarObject::computeBranchingPoint(), CouenneObject(), CouenneVarObject::CouenneVarObject(), CouenneVarObject::createBranch(), createBranch(), CouenneComplObject::createBranch(), feasibleRegion(), CouenneVarObject::feasibleRegion(), CouenneVTObject::infeasibility(), CouenneVarObject::infeasibility(), infeasibility(), CouenneComplObject::infeasibility(), CouenneVarObject::isCuttable(), isCuttable(), Reference(), setEstimates(), and setParameters().

enum brSelStrat CouenneObject::strategy_ [protected]

Branching point selection strategy.

Definition at line 176 of file CouenneObject.hpp.

Referenced by CouenneVarObject::computeBranchingPoint(), CouenneObject(), CouenneVarObject::CouenneVarObject(), getBrPoint(), infeasibility(), setParameters(), and Strategy().

JnlstPtr CouenneObject::jnlst_ [protected]

SmartPointer to the Journalist.

Definition at line 179 of file CouenneObject.hpp.

Referenced by checkInfeasibility(), CouenneVarObject::computeBranchingPoint(), CouenneObject(), CouenneVarObject::CouenneVarObject(), CouenneVarObject::createBranch(), createBranch(), CouenneComplObject::createBranch(), CouenneVTObject::infeasibility(), and CouenneVarObject::infeasibility().

CouNumber CouenneObject::alpha_ [protected]

Combination parameter for the mid-point branching point selection strategy.

Definition at line 183 of file CouenneObject.hpp.

Referenced by CouenneObject(), CouenneVarObject::CouenneVarObject(), midInterval(), and setParameters().

CouNumber CouenneObject::lp_clamp_ [protected]

Defines safe interval percentage for using LP point as a branching point.

Definition at line 186 of file CouenneObject.hpp.

Referenced by CouenneVarObject::computeBranchingPoint(), CouenneObject(), CouenneVarObject::CouenneVarObject(), getBrPoint(), and setParameters().

CouNumber CouenneObject::feas_tolerance_ [protected]

feasibility tolerance (equal to that of CouenneProblem)

Definition at line 189 of file CouenneObject.hpp.

Referenced by checkInfeasibility(), CouenneVTObject::infeasibility(), CouenneVarObject::infeasibility(), and setParameters().

bool CouenneObject::doFBBT_ [protected]

shall we do Feasibility based Bound Tightening (FBBT) at branching?

Definition at line 192 of file CouenneObject.hpp.

Referenced by CouenneVarObject::createBranch(), createBranch(), CouenneComplObject::createBranch(), and setParameters().

bool CouenneObject::doConvCuts_ [protected]

shall we add convexification cuts at branching?

Definition at line 195 of file CouenneObject.hpp.

Referenced by CouenneVarObject::createBranch(), createBranch(), CouenneComplObject::createBranch(), and setParameters().

double CouenneObject::downEstimate_ [mutable, protected]

down estimate (to be used in pseudocost)

Definition at line 198 of file CouenneObject.hpp.

Referenced by CouenneVarObject::computeBranchingPoint(), createBranch(), downEstimate(), CouenneVTObject::infeasibility(), CouenneVarObject::infeasibility(), infeasibility(), setEstimate(), and setEstimates().

double CouenneObject::upEstimate_ [mutable, protected]

up estimate (to be used in pseudocost)

Definition at line 201 of file CouenneObject.hpp.

Referenced by CouenneVarObject::computeBranchingPoint(), createBranch(), CouenneVTObject::infeasibility(), CouenneVarObject::infeasibility(), infeasibility(), setEstimate(), setEstimates(), and upEstimate().

enum pseudocostMult CouenneObject::pseudoMultType_ [protected]

multiplier type for pseudocost

Definition at line 204 of file CouenneObject.hpp.

Referenced by CouenneVarObject::computeBranchingPoint(), createBranch(), CouenneVarObject::infeasibility(), infeasibility(), setEstimates(), and setParameters().


The documentation for this class was generated from the following files:
Generated on Tue Mar 30 03:11:58 2010 by  doxygen 1.4.7