00001 // Edwin 11/13/2009-- carved out of CbcBranchCut 00002 #ifndef CbcBranchAllDifferent_H 00003 #define CbcBranchAllDifferent_H 00004 00005 #include "CbcBranchBase.hpp" 00006 #include "OsiRowCut.hpp" 00007 #include "CoinPackedMatrix.hpp" 00008 #include "CbcBranchCut.hpp" 00009 00016 class CbcBranchAllDifferent : public CbcBranchCut { 00017 00018 public: 00019 00020 // Default Constructor 00021 CbcBranchAllDifferent (); 00022 00025 CbcBranchAllDifferent (CbcModel * model, int number, const int * which); 00026 00027 // Copy constructor 00028 CbcBranchAllDifferent ( const CbcBranchAllDifferent &); 00029 00031 virtual CbcObject * clone() const; 00032 00033 // Assignment operator 00034 CbcBranchAllDifferent & operator=( const CbcBranchAllDifferent& rhs); 00035 00036 // Destructor 00037 ~CbcBranchAllDifferent (); 00038 00040 virtual double infeasibility(const OsiBranchingInformation * info, 00041 int &preferredWay) const; 00042 00044 virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ; 00045 00046 00047 protected: 00049 00051 int numberInSet_; 00053 int * which_; 00054 }; 00055 #endif 00056