00001 /* $Id: CouenneVarObject.hpp 141 2009-06-03 04:19:19Z pbelotti $ */ 00002 /* 00003 * Name: CouenneVarObject.hpp 00004 * Authors: Pietro Belotti, Carnegie Mellon University 00005 * Purpose: Object for branching on variables 00006 * 00007 * (C) Carnegie-Mellon University, 2008. 00008 * This file is licensed under the Common Public License (CPL) 00009 */ 00010 00011 #ifndef COUENNEVAROBJECT_HPP 00012 #define COUENNEVAROBJECT_HPP 00013 00014 #include "CouenneObject.hpp" 00015 00016 class CouenneProblem; 00017 00018 00020 class CouenneVarObject: public CouenneObject { 00021 00022 public: 00023 00025 CouenneVarObject (CouenneProblem *p, 00026 exprVar *ref, 00027 Bonmin::BabSetupBase *base, 00028 JnlstPtr jnlst); 00029 00031 CouenneVarObject (const CouenneVarObject &src): 00032 CouenneObject (src) {} 00033 00035 ~CouenneVarObject () {} 00036 00038 virtual OsiObject *clone () const 00039 {return new CouenneVarObject (*this);} 00040 00046 virtual double infeasibility (const OsiBranchingInformation *info, int &way) const; 00047 00050 virtual double checkInfeasibility (const OsiBranchingInformation * info) const; 00051 00054 virtual OsiBranchingObject *createBranch (OsiSolverInterface*, 00055 const OsiBranchingInformation*, int) const; 00056 00058 virtual double feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const; 00059 00061 virtual bool isCuttable () const; 00062 00063 protected: 00064 00066 CouNumber computeBranchingPoint (const OsiBranchingInformation *info, 00067 int& bestWay, 00068 const CouenneObject *&criticalObject) const; 00069 }; 00070 00071 #endif