00001
00002
00003
00004 #ifndef CoinPresolveDupcol_H
00005 #define CoinPresolveDupcol_H
00006
00011 #define DUPCOL 10
00012
00028 class dupcol_action : public CoinPresolveAction {
00029 struct action {
00030 double thislo;
00031 double thisup;
00032 double lastlo;
00033 double lastup;
00034 int ithis;
00035 int ilast;
00036
00037 double *colels;
00038 int nincol;
00039 };
00040
00041 const int nactions_;
00042 const action *const actions_;
00043
00044 dupcol_action():CoinPresolveAction(NULL),nactions_(0),actions_(NULL) {};
00045 dupcol_action(int nactions, const action *actions,
00046 const CoinPresolveAction *next) ;
00047
00048 public:
00049 const char *name() const;
00050
00051 static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
00052 const CoinPresolveAction *next);
00053
00054 void postsolve(CoinPostsolveMatrix *prob) const;
00055
00056 };
00057
00058
00073 class duprow_action : public CoinPresolveAction {
00074 struct action {
00075 int row;
00076 double lbound;
00077 double ubound;
00078 };
00079
00080 const int nactions_;
00081 const action *const actions_;
00082
00083 duprow_action():CoinPresolveAction(NULL),nactions_(0),actions_(NULL) {};
00084 duprow_action(int nactions,
00085 const action *actions,
00086 const CoinPresolveAction *next) :
00087 CoinPresolveAction(next),
00088 nactions_(nactions), actions_(actions) {}
00089
00090 public:
00091 const char *name() const;
00092
00093 static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
00094 const CoinPresolveAction *next);
00095
00096 void postsolve(CoinPostsolveMatrix *prob) const;
00097
00098
00099 };
00100
00101 #endif
00102