CbcClique.hpp
Go to the documentation of this file.
1 // Edwin 11/9/2009-- carved out of CbcBranchActual
2 #ifndef CbcClique_H
3 #define CbcClique_H
4 
34 
35 
36 class CbcClique : public CbcObject {
37 
38 public:
39 
40  // Default Constructor
41  CbcClique ();
42 
48  const int * which, const char * type,
49  int identifier, int slack = -1);
50 
51  // Copy constructor
52  CbcClique ( const CbcClique &);
53 
55  virtual CbcObject * clone() const;
56 
57  // Assignment operator
58  CbcClique & operator=( const CbcClique& rhs);
59 
60  // Destructor
61  virtual ~CbcClique ();
62 
64  virtual double infeasibility(const OsiBranchingInformation * info,
65  int &preferredWay) const;
66 
69  virtual void feasibleRegion();
70 
72  virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ;
74  inline int numberMembers() const {
75  return numberMembers_;
76  }
83  inline int numberNonSOSMembers() const {
84  return numberNonSOSMembers_;
85  }
86 
88  inline const int * members() const {
89  return members_;
90  }
91 
101  inline char type(int index) const {
102  if (type_) return type_[index];
103  else return 1;
104  }
105 
107  inline int cliqueType() const {
108  return cliqueType_;
109  }
111  virtual void redoSequenceEtc(CbcModel * model, int numberColumns, const int * originalColumns);
112 
113 protected:
117 
120 
122  int * members_;
123 
133  char * type_;
134 
141 
148  int slack_;
149 };
150 
160 
161 public:
162 
163  // Default Constructor
165 
166  // Useful constructor
168  int way,
169  int numberOnDownSide, const int * down,
170  int numberOnUpSide, const int * up);
171 
172  // Copy constructor
174 
175  // Assignment operator
177 
179  virtual CbcBranchingObject * clone() const;
180 
181  // Destructor
182  virtual ~CbcCliqueBranchingObject ();
183 
186  virtual double branch();
187 
191  virtual void print();
192 
194  virtual CbcBranchObjType type() const {
195  return CliqueBranchObj;
196  }
197 
205  virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
206 
216  (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
217 
218 private:
222  unsigned int downMask_[2];
224  unsigned int upMask_[2];
225 };
226 
232 
233 public:
234 
235  // Default Constructor
237 
238  // Useful constructor
240  int way,
241  int numberOnDownSide, const int * down,
242  int numberOnUpSide, const int * up);
243 
244  // Copy constructor
246 
247  // Assignment operator
249 
251  virtual CbcBranchingObject * clone() const;
252 
253  // Destructor
255 
258  virtual double branch();
259 
263  virtual void print();
264 
266  virtual CbcBranchObjType type() const {
267  return LongCliqueBranchObj;
268  }
269 
277  virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
278 
288  (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
289 
290 private:
294  unsigned int * downMask_;
296  unsigned int * upMask_;
297 };
298 
299 #endif
300