CouenneBranchingObject.hpp

Go to the documentation of this file.
00001 /* $Id: CouenneBranchingObject.hpp 141 2009-06-03 04:19:19Z pbelotti $ */
00002 /*
00003  * Name:    CouenneBranchingObject.hpp
00004  * Authors: Pierre Bonami, IBM Corp.
00005  *          Pietro Belotti, Carnegie Mellon University
00006  * Purpose: Branching object for auxiliary variables
00007  *
00008  * (C) Carnegie-Mellon University, 2006-08.
00009  * This file is licensed under the Common Public License (CPL)
00010  */
00011 
00012 #ifndef COUENNEBRANCHINGOBJECT_HPP
00013 #define COUENNEBRANCHINGOBJECT_HPP
00014 
00015 #include "CoinFinite.hpp"
00016 #include "exprAux.hpp"
00017 #include "CouenneJournalist.hpp"
00018 #include "OsiBranchingObject.hpp"
00019 
00020 #define COUENNE_CROP 1
00021 #define COUENNE_LCROP (1e2*COUENNE_CROP)
00022 
00023 #define COUENNE_LARGE_INTERVAL 1e4
00024 #define COUENNE_NEAR_BOUND 1e-2
00025 
00026 
00032 class CouenneBranchingObject: public OsiTwoWayBranchingObject {
00033 
00034 public:
00035 
00037   CouenneBranchingObject (OsiSolverInterface *solver,
00038                           const OsiObject *originalObject,
00039                           JnlstPtr jnlst, 
00040                           expression *var, 
00041                           int way, 
00042                           CouNumber brpoint, 
00043                           bool doFBBT, 
00044                           bool doConvCuts);
00045 
00047   CouenneBranchingObject (const CouenneBranchingObject &src):
00048 
00049     OsiTwoWayBranchingObject (src),
00050     variable_     (src.variable_),
00051     jnlst_        (src.jnlst_),
00052     doFBBT_       (src.doFBBT_),
00053     doConvCuts_   (src.doConvCuts_),
00054     downEstimate_ (src.downEstimate_),
00055     upEstimate_   (src.upEstimate_),
00056     simulate_     (src.simulate_) {}
00057 
00059   virtual OsiBranchingObject * clone () const
00060   {return new CouenneBranchingObject (*this);}
00061 
00067   virtual double branch (OsiSolverInterface * solver = NULL);
00068 
00070   virtual bool boundBranch () const
00071   {return !doConvCuts_;} // iff it does not add convexification cuts
00072 
00074   void setSimulate (bool s)
00075   {simulate_ = s;}
00076 
00078   expression *variable ()
00079   {return variable_;}
00080 
00081 protected:
00082 
00087   expression *variable_;
00088 
00090   JnlstPtr jnlst_;
00091 
00093   bool doFBBT_;
00094 
00096   bool doConvCuts_;
00097 
00099   double downEstimate_;
00100 
00102   double upEstimate_;
00103 
00105   bool simulate_;
00106 };
00107 
00108 #endif

Generated on Wed Jul 8 03:05:41 2009 for Couenne by  doxygen 1.4.7