00001 /* $Id: CouenneThreeWayBranchObj.hpp 560 2011-04-17 10:01:15Z stefan $ 00002 * 00003 * Name: CouenneThreeWayBranchObj.hpp 00004 * Authors: Pierre Bonami, IBM Corp. 00005 * Pietro Belotti, Carnegie Mellon University 00006 * Purpose: Three way branching object for auxiliary variables 00007 * 00008 * (C) Carnegie-Mellon University, 2006-10. 00009 * This file is licensed under the Eclipse Public License (EPL) 00010 */ 00011 00012 #ifndef COUENNETHREEWAYBRANCHOBJ_HPP 00013 #define COUENNETHREEWAYBRANCHOBJ_HPP 00014 00015 #include "OsiBranchingObject.hpp" 00016 00017 #include "CouenneExprAux.hpp" 00018 #include "CouenneObject.hpp" 00019 00020 namespace Couenne { 00021 00027 00028 class CouenneThreeWayBranchObj: public OsiBranchingObject { 00029 00030 public: 00031 00033 CouenneThreeWayBranchObj (JnlstPtr jnlst, 00034 expression *, 00035 CouNumber, 00036 CouNumber, 00037 int = THREE_CENTER 00038 //bool = false 00039 ); 00040 00042 CouenneThreeWayBranchObj (const CouenneThreeWayBranchObj &src): 00043 OsiBranchingObject (src), 00044 brVar_ (src.brVar_), 00045 lcrop_ (src.lcrop_), 00046 rcrop_ (src.rcrop_), 00047 firstBranch_ (src.firstBranch_), 00048 jnlst_ (src.jnlst_){} 00049 00051 virtual OsiBranchingObject * clone () const 00052 {return new CouenneThreeWayBranchObj (*this);} 00053 00060 virtual double branch (OsiSolverInterface * solver = NULL); 00061 00062 protected: 00063 00067 expression *brVar_; 00068 00069 CouNumber lcrop_; 00070 CouNumber rcrop_; 00071 00073 int firstBranch_; 00074 00076 // bool integer_; 00077 00079 JnlstPtr jnlst_; 00080 }; 00081 00082 } 00083 00084 #endif