00001 00046 #ifndef ABA_FIXCAND_H 00047 #define ABA_FIXCAND_H 00048 00049 #include "abacus/array.h" 00050 00051 class ABA_MASTER; 00052 class ABA_SUB; 00053 class ABA_FSVARSTAT; 00054 class ABA_VARIABLE; 00055 class ABA_CONSTRAINT; 00056 template<class BaseType, class CoType> class ABA_CUTBUFFER; 00057 template<class BaseType, class CoType> class ABA_POOLSLOTREF; 00058 00059 00060 class ABA_FIXCAND : public ABA_ABACUSROOT { 00061 friend class ABA_SUB; 00062 friend class ABA_MASTER; 00063 public: 00064 00069 ABA_FIXCAND(ABA_MASTER *master); 00070 00072 ~ABA_FIXCAND(); 00073 00074 private: 00075 00080 void saveCandidates(ABA_SUB *sub); 00081 00100 void fixByRedCost(ABA_CUTBUFFER<ABA_VARIABLE, ABA_CONSTRAINT> *addVarBuffer); 00101 00107 void deleteAll(); 00108 00111 void allocate(int nCand); 00112 00115 ABA_MASTER *master_; 00116 00119 ABA_BUFFER<ABA_POOLSLOTREF<ABA_VARIABLE, ABA_CONSTRAINT>*> *candidates_; 00120 00123 ABA_BUFFER<ABA_FSVARSTAT*> *fsVarStat_; 00124 00127 ABA_BUFFER<double> *lhs_; 00128 ABA_FIXCAND(const ABA_FIXCAND &rhs); 00129 const ABA_FIXCAND &operator=(const ABA_FIXCAND &rhs); 00130 }; 00131 #endif // ABA_FIXCAND_H 00132 00133