00001 /* $Id: CouenneOrbitBranchingObj.hpp 560 2011-04-17 10:01:15Z stefan $ 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 Eclipse Public License (EPL) 00009 */ 00010 00011 #ifndef COUENNEORBITBRANCHINGOBJ_HPP 00012 #define COUENNEORBITBRANCHINGOBJ_HPP 00013 00014 #include "CouenneExprAux.hpp" 00015 #include "CouenneJournalist.hpp" 00016 #include "OsiBranchingObject.hpp" 00017 #include "CouenneBranchingObject.hpp" 00018 00019 namespace Couenne { 00020 00021 //class CouenneCutGenerator; 00022 //class CouenneProblem; 00023 00024 //#define COUENNE_CROP 1 00025 //#define COUENNE_LCROP (1e2*COUENNE_CROP) 00026 00027 //#define COUENNE_LARGE_INTERVAL 1e4 00028 //#define COUENNE_NEAR_BOUND 1e-2 00029 00030 00036 class CouenneOrbitBranchingObj: public CouenneBranchingObject { 00037 00038 public: 00039 00041 CouenneOrbitBranchingObj (OsiSolverInterface *solver, 00042 const OsiObject *originalObject, 00043 JnlstPtr jnlst, 00044 CouenneCutGenerator *c, 00045 CouenneProblem *p, 00046 expression *var, 00047 int way, 00048 CouNumber brpoint, 00049 bool doFBBT, 00050 bool doConvCuts); 00051 00053 CouenneOrbitBranchingObj (const CouenneOrbitBranchingObj &src): 00054 CouenneBranchingObject (src) {} 00055 00056 00058 virtual OsiBranchingObject * clone () const 00059 {return new CouenneOrbitBranchingObj (*this);} 00060 00066 virtual double branch (OsiSolverInterface * solver = NULL); 00067 00069 virtual bool boundBranch () const 00070 {return !doConvCuts_;} // iff it does not add convexification cuts 00071 00073 void setSimulate (bool s) 00074 {simulate_ = s;} 00075 00076 protected: 00077 00078 }; 00079 00080 } 00081 00082 #endif