00001 /* $Id: CouenneOrbitBranchingObj.hpp 258 2009-09-05 15:54:35Z pbelotti $ 00002 * 00003 * Name: CouenneOrbitBranchingObj.hpp 00004 * Authors: Jim Ostrowski, University of Waterloo 00005 * Pietro Belotti, Lehigh University 00006 * Purpose: Branching object for auxiliary variables 00007 * 00008 * This file is licensed under the Common Public License (CPL) 00009 */ 00010 00011 #ifndef COUENNEORBITBRANCHINGOBJ_HPP 00012 #define COUENNEORBITBRANCHINGOBJ_HPP 00013 00014 #include "CoinFinite.hpp" 00015 #include "exprAux.hpp" 00016 #include "CouenneJournalist.hpp" 00017 #include "OsiBranchingObject.hpp" 00018 #include "CouenneBranchingObject.hpp" 00019 00020 //class CouenneCutGenerator; 00021 //class CouenneProblem; 00022 00023 //#define COUENNE_CROP 1 00024 //#define COUENNE_LCROP (1e2*COUENNE_CROP) 00025 00026 //#define COUENNE_LARGE_INTERVAL 1e4 00027 //#define COUENNE_NEAR_BOUND 1e-2 00028 00029 00035 class CouenneOrbitBranchingObj: public CouenneBranchingObject { 00036 00037 public: 00038 00040 CouenneOrbitBranchingObj (OsiSolverInterface *solver, 00041 const OsiObject *originalObject, 00042 JnlstPtr jnlst, 00043 CouenneCutGenerator *c, 00044 CouenneProblem *p, 00045 expression *var, 00046 int way, 00047 CouNumber brpoint, 00048 bool doFBBT, 00049 bool doConvCuts); 00050 00052 CouenneOrbitBranchingObj (const CouenneOrbitBranchingObj &src): 00053 CouenneBranchingObject (src) {} 00054 00055 00057 virtual OsiBranchingObject * clone () const 00058 {return new CouenneOrbitBranchingObj (*this);} 00059 00065 virtual double branch (OsiSolverInterface * solver = NULL); 00066 00068 virtual bool boundBranch () const 00069 {return !doConvCuts_;} // iff it does not add convexification cuts 00070 00072 void setSimulate (bool s) 00073 {simulate_ = s;} 00074 00075 protected: 00076 00077 }; 00078 00079 #endif