Couenne 0.5.8
Loading...
Searching...
No Matches
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
22namespace Couenne {
23
24class Node{
25 int index;
26 double coeff;
27 double lb;
28 double ub;
29 int color;
30 int code;
31public:
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
56class CouenneOrbitObj: public CouenneObject {
57
58public:
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
114protected:
115
116};
117
118}
119
120#endif
121*/