• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/tmp/buildd/coinor-cbc-2.5.0/Cbc/src/CbcFollowOn.hpp

Go to the documentation of this file.
00001 // Edwin 11/10/2009-- carved out of CbcBranchActual
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     // Default Constructor
00022     CbcFollowOn ();
00023 
00026     CbcFollowOn (CbcModel * model);
00027 
00028     // Copy constructor
00029     CbcFollowOn ( const CbcFollowOn &);
00030 
00032     virtual CbcObject * clone() const;
00033 
00034     // Assignment operator
00035     CbcFollowOn & operator=( const CbcFollowOn& rhs);
00036 
00037     // Destructor
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     // Default Constructor
00071     CbcFixingBranchingObject ();
00072 
00073     // Useful constructor
00074     CbcFixingBranchingObject (CbcModel * model,
00075                               int way,
00076                               int numberOnDownSide, const int * down,
00077                               int numberOnUpSide, const int * up);
00078 
00079     // Copy constructor
00080     CbcFixingBranchingObject ( const CbcFixingBranchingObject &);
00081 
00082     // Assignment operator
00083     CbcFixingBranchingObject & operator=( const CbcFixingBranchingObject& rhs);
00084 
00086     virtual CbcBranchingObject * clone() const;
00087 
00088     // Destructor
00089     virtual ~CbcFixingBranchingObject ();
00090 
00091     using CbcBranchingObject::branch ;
00093     virtual double branch();
00094 
00095 #ifdef JJF_ZERO
00096     // No need to override. Default works fine.
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 

Generated on Tue Sep 7 2010 20:23:52 by  doxygen 1.7.1