CouenneVarObject.hpp

Go to the documentation of this file.
00001 /* $Id: CouenneVarObject.hpp 522 2011-03-07 21:13:46Z pbelotti $
00002  *
00003  * Name:    CouenneVarObject.hpp
00004  * Authors: Pietro Belotti, Carnegie Mellon University
00005  * Purpose: Object for branching on variables
00006  *
00007  * (C) Carnegie-Mellon University, 2008-11.
00008  * This file is licensed under the Eclipse Public License (EPL)
00009  */
00010 
00011 #ifndef COUENNEVAROBJECT_HPP
00012 #define COUENNEVAROBJECT_HPP
00013 
00014 #include "CouenneObject.hpp"
00015 
00016 namespace Couenne {
00017 
00018 class CouenneProblem;
00019 
00020 
00022 class CouenneVarObject: public CouenneObject {
00023 
00024 public:
00025 
00027   CouenneVarObject (CouenneCutGenerator *c,
00028                     CouenneProblem *p, 
00029                     exprVar *ref, 
00030                     Bonmin::BabSetupBase *base, 
00031                     JnlstPtr jnlst,
00032                     int varSelection); //< either OSI_SIMPLE or OSI_STRONG
00033 
00035   CouenneVarObject (const CouenneVarObject &src):
00036     CouenneObject (src),
00037     varSelection_ (src.varSelection_) {}
00038 
00040   ~CouenneVarObject () {}
00041 
00043   virtual CouenneObject *clone () const
00044   {return new CouenneVarObject (*this);}
00045 
00051   virtual double infeasibility (const OsiBranchingInformation *info, int &way) const;
00052 
00055   virtual double checkInfeasibility (const OsiBranchingInformation * info) const;
00056 
00059   virtual OsiBranchingObject *createBranch (OsiSolverInterface*, 
00060                                             const OsiBranchingInformation*, int) const;
00061 
00063   virtual double feasibleRegion (OsiSolverInterface *, const OsiBranchingInformation *) const;
00064 
00066   virtual bool isCuttable () const;
00067 
00068 protected:
00069 
00073   int varSelection_;
00074 
00076   CouNumber computeBranchingPoint (const OsiBranchingInformation *info, 
00077                                    int& bestWay, 
00078                                    const CouenneObject *&criticalObject) const;
00079 };
00080 
00081 }
00082 
00083 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 2 Aug 2012 for Couenne by  doxygen 1.6.1