Go to the documentation of this file.00001
00002 #ifndef CbcFollowOn_H
00003 #define CbcFollowOn_H
00004
00005 #include "CbcBranchBase.hpp"
00006 #include "CoinPackedMatrix.hpp"
00007
00017 class CbcFollowOn : public CbcObject {
00018
00019 public:
00020
00021
00022 CbcFollowOn ();
00023
00026 CbcFollowOn (CbcModel * model);
00027
00028
00029 CbcFollowOn ( const CbcFollowOn &);
00030
00032 virtual CbcObject * clone() const;
00033
00034
00035 CbcFollowOn & operator=( const CbcFollowOn& rhs);
00036
00037
00038 ~CbcFollowOn ();
00039
00041 virtual double infeasibility(const OsiBranchingInformation * info,
00042 int &preferredWay) const;
00043
00044 using CbcObject::feasibleRegion ;
00046 virtual void feasibleRegion();
00047
00049 virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ;
00051 virtual int gutsOfFollowOn(int & otherRow, int & preferredWay) const;
00052
00053 protected:
00056 CoinPackedMatrix matrix_;
00058 CoinPackedMatrix matrixByRow_;
00060 int * rhs_;
00061 };
00062
00066 class CbcFixingBranchingObject : public CbcBranchingObject {
00067
00068 public:
00069
00070
00071 CbcFixingBranchingObject ();
00072
00073
00074 CbcFixingBranchingObject (CbcModel * model,
00075 int way,
00076 int numberOnDownSide, const int * down,
00077 int numberOnUpSide, const int * up);
00078
00079
00080 CbcFixingBranchingObject ( const CbcFixingBranchingObject &);
00081
00082
00083 CbcFixingBranchingObject & operator=( const CbcFixingBranchingObject& rhs);
00084
00086 virtual CbcBranchingObject * clone() const;
00087
00088
00089 virtual ~CbcFixingBranchingObject ();
00090
00091 using CbcBranchingObject::branch ;
00093 virtual double branch();
00094
00095 #ifdef JJF_ZERO
00096
00100 virtual void previousBranch();
00101 #endif
00102
00103 using CbcBranchingObject::print ;
00106 virtual void print();
00107
00109 virtual CbcBranchObjType type() const {
00110 return FollowOnBranchObj;
00111 }
00112
00120 virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
00121
00130 virtual CbcRangeCompare compareBranchingObject
00131 (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
00132
00133 private:
00136 int numberDown_;
00138 int numberUp_;
00140 int * downList_;
00142 int * upList_;
00143 };
00144
00145 #endif
00146