00001 /* $Id: CouenneThreeWayBranchObj.hpp 141 2009-06-03 04:19:19Z pbelotti $ */ 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. 00009 * This file is licensed under the Common Public License (CPL) 00010 */ 00011 00012 #ifndef COUENNETHREEWAYBRANCHOBJ_HPP 00013 #define COUENNETHREEWAYBRANCHOBJ_HPP 00014 00015 #include "CoinFinite.hpp" 00016 #include "OsiBranchingObject.hpp" 00017 00018 #include "exprAux.hpp" 00019 #include "CouenneObject.hpp" 00020 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 #endif