00001
00002
00003
00004
00005
00006
00007
00008 #ifndef CbcPartialNodeInfo_H
00009 #define CbcPartialNodeInfo_H
00010
00011 #include <string>
00012 #include <vector>
00013
00014 #include "CoinWarmStartBasis.hpp"
00015 #include "CoinSearchTree.hpp"
00016 #include "CbcBranchBase.hpp"
00017 #include "CbcNodeInfo.hpp"
00018
00019 class OsiSolverInterface;
00020 class OsiSolverBranch;
00021
00022 class OsiCuts;
00023 class OsiRowCut;
00024 class OsiRowCutDebugger;
00025 class CoinWarmStartBasis;
00026 class CbcCountRowCut;
00027 class CbcModel;
00028 class CbcNode;
00029 class CbcSubProblem;
00030 class CbcGeneralBranchingObject;
00039 class CbcPartialNodeInfo : public CbcNodeInfo {
00040
00041 public:
00042
00048 virtual void applyToModel (CbcModel *model, CoinWarmStartBasis *&basis,
00049 CbcCountRowCut **addCuts,
00050 int ¤tNumberCuts) const ;
00051
00053 virtual int applyBounds(int iColumn, double & lower, double & upper, int force) ;
00058 virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis & basis ) const ;
00059
00060 CbcPartialNodeInfo ();
00061
00062
00063 CbcPartialNodeInfo (CbcNodeInfo * parent, CbcNode * owner,
00064 int numberChangedBounds, const int * variables,
00065 const double * boundChanges,
00066 const CoinWarmStartDiff *basisDiff) ;
00067
00068
00069 CbcPartialNodeInfo ( const CbcPartialNodeInfo &);
00070
00071
00072 ~CbcPartialNodeInfo ();
00073
00075 virtual CbcNodeInfo * clone() const;
00077 inline const CoinWarmStartDiff *basisDiff() const {
00078 return basisDiff_ ;
00079 }
00081 inline const int * variables() const {
00082 return variables_;
00083 }
00084
00085 inline const double * newBounds() const {
00086 return newBounds_;
00087 }
00089 inline int numberChangedBounds() const {
00090 return numberChangedBounds_;
00091 }
00092 protected:
00093
00094
00096 CoinWarmStartDiff *basisDiff_ ;
00098 int * variables_;
00099
00100 double * newBounds_;
00102 int numberChangedBounds_;
00103 private:
00104
00106 CbcPartialNodeInfo & operator=(const CbcPartialNodeInfo& rhs);
00107 };
00108
00109 #endif //CbcPartialNodeInfo_H
00110