00001 00032 #ifndef ABA_BOUNDBRANCHRULE_H 00033 #define ABA_BOUNDBRANCHRULE_H 00034 00035 #include "abacus/branchrule.h" 00036 00037 #ifdef ABACUS_PARALLEL 00038 class MESSAGE; 00039 #endif 00040 class ABA_BOUNDBRANCHRULE : public ABA_BRANCHRULE { 00041 public: 00042 00050 ABA_BOUNDBRANCHRULE(ABA_MASTER *master, int variable, 00051 double lBound, double uBound); 00052 00055 virtual ~ABA_BOUNDBRANCHRULE(); 00056 #ifdef ABACUS_PARALLEL 00057 00063 ABA_BOUNDBRANCHRULE(ABA_MASTER *master, ABA_MESSAGE &msg); 00064 00071 virtual void pack(ABA_MESSAGE &msg) const; 00072 00079 virtual int classId() const; 00080 #endif 00081 00091 friend ostream &operator<<(ostream &out, const ABA_BOUNDBRANCHRULE &rhs); 00092 00102 virtual int extract(ABA_SUB *sub); 00103 00110 virtual void extract(ABA_LPSUB *lp); 00111 virtual void unExtract(ABA_LPSUB *lp); 00112 00115 int variable() const; 00116 00119 double lBound() const; 00120 00123 double uBound() const; 00124 00125 private: 00126 int variable_; 00127 double lBound_; 00128 double uBound_; 00129 double oldLpLBound_; 00130 double oldLpUBound_; 00131 }; 00132 00133 00134 inline int ABA_BOUNDBRANCHRULE::variable() const 00135 { 00136 return variable_; 00137 } 00138 00139 inline double ABA_BOUNDBRANCHRULE::lBound() const 00140 { 00141 return lBound_; 00142 } 00143 00144 inline double ABA_BOUNDBRANCHRULE::uBound() const 00145 { 00146 return uBound_; 00147 } 00148 00149 00150 #endif // !ABA_BOUNDBRANCHRULE_H 00151