Couenne  0.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CouenneOrbitObj.hpp
Go to the documentation of this file.
1 /* $Id: CouenneOrbitObj.hpp 560 2011-04-17 10:01:15Z stefan $
2  *
3  * Name: CouenneOrbitObj.hpp
4  * Authors: Jim Ostrowski, University of Waterloo
5  * Pietro Belotti, Lehigh University
6  * Purpose: Object for orbital branching
7  *
8  * This file is licensed under the Eclipse Public License (EPL)
9  */
10 /*
11 #ifndef COUENNEORBITOBJ_HPP
12 #define COUENNEORBITOBJ_HPP
13 
14 #include "BonBabSetupBase.hpp"
15 
16 #include "CouenneExprVar.hpp"
17 #include "CouenneJournalist.hpp"
18 #include "OsiBranchingObject.hpp"
19 #include "CouenneObject.hpp"
20 #include "Nauty.h"
21 
22 namespace Couenne {
23 
24 class Node{
25  int index;
26  double coeff;
27  double lb;
28  double ub;
29  int color;
30  int code;
31 public:
32  void node(int, double, double, double, int);
33  void color_vertex(int);
34  int get_index () {return index;
35  };
36  double get_coeff () {return coeff;
37  };
38  double get_lb () {return lb;
39  };
40  double get_ub () {return ub ;
41  };
42  int get_color () {return color;
43  };
44  int get_code () {return code;
45  };
46  void bounds( double a, double b){ lb = a; ub = b;
47  };
48 };
49 
50  bool compare ( Node a, Node b);
51  bool node_sort ( Node a, Node b);
52  bool index_sort ( Node a, Node b);
53 
54 
56 class CouenneOrbitObj: public CouenneObject {
57 
58 public:
59 
61  CouenneOrbitObj ();
62 
64  CouenneOrbitObj (CouenneCutGenerator *cutgen,
65  CouenneProblem *p,
66  exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst);
67 
68 
69 
70 
72  CouenneOrbitObj (exprVar *ref, Bonmin::BabSetupBase *base, JnlstPtr jnlst);
73 
75  ~CouenneOrbitObj () {}
76 
78  CouenneOrbitObj (const CouenneOrbitObj &src);
79 
81  virtual CouenneObject * clone () const
82  {return new CouenneOrbitObj (*this);}
83 
84 
85 
87  void setParameters (Bonmin::BabSetupBase *base);
90  virtual double infeasibility (const OsiBranchingInformation *info, int &way) const;
91 
94  virtual double checkInfeasibility (const OsiBranchingInformation * info) const;
95 
97  virtual double feasibleRegion (OsiSolverInterface*, const OsiBranchingInformation*) const;
98 
101  virtual OsiBranchingObject *createBranch (OsiSolverInterface*,const OsiBranchingInformation*, int) const;
102 
103 
104 
105  void Compute_Symmetry();
106  void Print_Orbits();
107  void ChangeBounds (CouenneProblem *p);
108 
109 
110  std::vector<Node> node_info;
111 
112  Nauty *nauty_info;
113 
114 protected:
115 
116 };
117 
118 }
119 
120 #endif
121 */