CouenneOrbitObj.hpp

Go to the documentation of this file.
00001 /* $Id: CouenneOrbitObj.hpp 560 2011-04-17 10:01:15Z stefan $
00002  *
00003  * Name:    CouenneOrbitObj.hpp
00004  * Authors: Jim Ostrowski, University of Waterloo
00005  *          Pietro Belotti, Lehigh University
00006  * Purpose: Object for orbital branching
00007  *
00008  * This file is licensed under the Eclipse Public License (EPL)
00009  */
00010 /*
00011 #ifndef COUENNEORBITOBJ_HPP
00012 #define COUENNEORBITOBJ_HPP
00013 
00014 #include "BonBabSetupBase.hpp"
00015 
00016 #include "CouenneExprVar.hpp"
00017 #include "CouenneJournalist.hpp"
00018 #include "OsiBranchingObject.hpp"
00019 #include "CouenneObject.hpp"
00020 #include "Nauty.h"
00021 
00022 namespace Couenne {
00023 
00024 class Node{
00025   int index;
00026   double coeff;
00027   double lb;
00028   double ub;
00029   int color;
00030   int code;
00031 public:
00032   void node(int, double, double, double, int);
00033   void color_vertex(int);
00034   int get_index () {return index; 
00035   };
00036   double get_coeff () {return coeff;      
00037   };
00038   double get_lb () {return lb;      
00039   };
00040   double get_ub () {return ub ;     
00041   };
00042   int get_color () {return color;     
00043   };
00044   int get_code () {return code;     
00045   };
00046   void bounds( double a, double b){ lb = a; ub = b;
00047   };
00048 };
00049 
00050   bool compare (  Node a, Node b);
00051   bool node_sort (  Node a, Node b);
00052   bool index_sort (  Node a, Node b);
00053 
00054 
00056 class CouenneOrbitObj: public CouenneObject {
00057 
00058 public:
00059 
00061   CouenneOrbitObj ();
00062 
00064   CouenneOrbitObj (CouenneCutGenerator *cutgen,
00065                    CouenneProblem *p, 
00066                    exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst);
00067 
00068 
00069                    
00070 
00072   CouenneOrbitObj (exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst);
00073 
00075   ~CouenneOrbitObj () {}
00076 
00078   CouenneOrbitObj (const CouenneOrbitObj &src);
00079 
00081   virtual CouenneObject * clone () const
00082   {return new CouenneOrbitObj (*this);}
00083 
00084 
00085   
00087   void setParameters (Bonmin::BabSetupBase *base);
00090   virtual double infeasibility (const OsiBranchingInformation *info, int &way) const;
00091 
00094   virtual double checkInfeasibility (const OsiBranchingInformation * info) const;
00095 
00097   virtual double feasibleRegion (OsiSolverInterface*, const OsiBranchingInformation*) const;
00098 
00101   virtual OsiBranchingObject *createBranch (OsiSolverInterface*,const OsiBranchingInformation*, int) const;
00102 
00103 
00104   
00105   void Compute_Symmetry();
00106   void Print_Orbits();
00107   void ChangeBounds (CouenneProblem *p);
00108     
00109 
00110   std::vector<Node> node_info;
00111   
00112   Nauty *nauty_info;
00113   
00114 protected:
00115 
00116 };
00117 
00118 }
00119 
00120 #endif
00121 */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 17 Nov 2013 for Couenne by  doxygen 1.6.1