CbcFollowOn.hpp
Go to the documentation of this file.
1 // Edwin 11/10/2009-- carved out of CbcBranchActual
2 #ifndef CbcFollowOn_H
3 #define CbcFollowOn_H
4 
5 #include "CbcBranchBase.hpp"
6 #include "CoinPackedMatrix.hpp"
7 
17 class CbcFollowOn : public CbcObject {
18 
19 public:
20 
21  // Default Constructor
22  CbcFollowOn ();
23 
27 
28  // Copy constructor
29  CbcFollowOn ( const CbcFollowOn &);
30 
32  virtual CbcObject * clone() const;
33 
34  // Assignment operator
35  CbcFollowOn & operator=( const CbcFollowOn& rhs);
36 
37  // Destructor
38  ~CbcFollowOn ();
39 
41  virtual double infeasibility(const OsiBranchingInformation * info,
42  int &preferredWay) const;
43 
46  virtual void feasibleRegion();
47 
49  virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ;
51  virtual int gutsOfFollowOn(int & otherRow, int & preferredWay) const;
52 
53 protected:
56  CoinPackedMatrix matrix_;
58  CoinPackedMatrix matrixByRow_;
60  int * rhs_;
61 };
62 
67 
68 public:
69 
70  // Default Constructor
72 
73  // Useful constructor
75  int way,
76  int numberOnDownSide, const int * down,
77  int numberOnUpSide, const int * up);
78 
79  // Copy constructor
81 
82  // Assignment operator
84 
86  virtual CbcBranchingObject * clone() const;
87 
88  // Destructor
89  virtual ~CbcFixingBranchingObject ();
90 
93  virtual double branch();
94 
95 #ifdef JJF_ZERO
96  // No need to override. Default works fine.
100  virtual void previousBranch();
101 #endif
102 
106  virtual void print();
107 
109  virtual CbcBranchObjType type() const {
110  return FollowOnBranchObj;
111  }
112 
120  virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
121 
131  (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
132 
133 private:
136  int numberDown_;
138  int numberUp_;
140  int * downList_;
142  int * upList_;
143 };
144 
145 #endif
146