variable.h

Go to the documentation of this file.
00001 
00035 #ifndef ABA_VARIABLE_H
00036 #define ABA_VARIABLE_H
00037 #include <iostream>
00038 using namespace std;
00039 
00040 #include "abacus/convar.h"
00041 #include "abacus/fsvarstat.h"
00042 #include "abacus/vartype.h"
00043 
00044 class ABA_MASTER;
00045 class ABA_SUB;
00046 class ABA_VARTYPE;
00047 class ABA_COLUMN;
00048 template<class BaseType, class CoType> class ABA_ACTIVE;
00049 
00050 #ifdef ABACUS_PARALLEL
00051 #include "abacus/message.h"
00052 #endif
00053 
00054 
00055   class  ABA_VARIABLE :  public ABA_CONVAR  { 
00056     public: 
00057 
00083       ABA_VARIABLE(ABA_MASTER *master, const ABA_SUB *sub,
00084                    bool dynamic, bool local, 
00085                    double obj, double lBound, double uBound,
00086                    ABA_VARTYPE::TYPE type);
00087 
00089       virtual ~ABA_VARIABLE();
00090 #ifdef ABACUS_PARALLEL
00091 
00097       ABA_VARIABLE(ABA_MASTER *master, ABA_MESSAGE &msg);
00098 
00108       virtual void pack(ABA_MESSAGE &msg) const;
00109 #endif
00110 
00111 
00114       ABA_VARTYPE::TYPE varType() const;
00115 
00119       bool discrete();
00120 
00124       bool binary();
00125 
00129       bool integer();
00130 
00133       virtual double obj();
00134 
00137       double uBound() const;
00138 
00143       void uBound(double newValue);
00144 
00147       double lBound() const;
00148 
00154       void lBound(double newValue);
00155 
00161       ABA_FSVARSTAT *fsVarStat();
00162 
00172       virtual bool valid(ABA_SUB *sub);
00173 
00187       virtual int genColumn(ABA_ACTIVE<ABA_CONSTRAINT, ABA_VARIABLE> *actCon,
00188                             ABA_COLUMN &col);
00189 
00200       virtual double coeff(ABA_CONSTRAINT *con);
00201 
00212       virtual bool violated(double rc) const;
00213 
00231       virtual bool violated(ABA_ACTIVE<ABA_CONSTRAINT, ABA_VARIABLE> *constraints,
00232                             double *y, double *slack = 0);
00233 
00247       virtual double redCost(ABA_ACTIVE<ABA_CONSTRAINT, ABA_VARIABLE> *actCon, 
00248                              double *y);
00249 
00264       virtual bool useful(ABA_ACTIVE<ABA_CONSTRAINT, ABA_VARIABLE> *actCon, 
00265                           double *y,
00266                           double lpVal);
00267 
00275       void printCol(ostream &out, 
00276                     ABA_ACTIVE<ABA_CONSTRAINT, ABA_VARIABLE> *constraints);
00277 
00278     protected: 
00279 
00282       ABA_FSVARSTAT fsVarStat_;
00283 
00286       double obj_;
00287 
00290       double lBound_;
00291 
00294       double uBound_;
00295 
00298       ABA_VARTYPE type_;
00299   };
00300 
00301 
00302 inline ABA_VARTYPE::TYPE ABA_VARIABLE::varType() const
00303   {
00304     return type_.type();
00305   }
00306 
00307 inline bool ABA_VARIABLE::discrete()
00308   {
00309     return type_.discrete();
00310   }
00311 
00312 inline bool ABA_VARIABLE::binary()
00313   {
00314     return type_.binary();
00315   }
00316 
00317 inline bool ABA_VARIABLE::integer()
00318   {
00319     return type_.integer();
00320   }
00321 
00322 inline double ABA_VARIABLE::lBound() const
00323   {
00324     return lBound_;
00325   }
00326 
00327 inline void ABA_VARIABLE::lBound(double newBound)
00328   {
00329     lBound_ = newBound;
00330   }
00331 
00332 inline double ABA_VARIABLE::uBound() const
00333   {
00334     return uBound_;
00335   }
00336 
00337 inline void ABA_VARIABLE::uBound(double newBound)
00338   {
00339     uBound_ = newBound;
00340   }
00341 
00342 inline ABA_FSVARSTAT *ABA_VARIABLE::fsVarStat()
00343   {
00344     return &fsVarStat_;
00345   }
00346 
00347 
00348 #endif  // ABA_VARIABLE_H
00349 

Generated on Tue Aug 14 18:09:54 2007 for ABACUS by  doxygen 1.5.1