00001
00002
00003
00004 #ifndef CoinPresolveDupcol_H
00005 #define CoinPresolveDupcol_H
00006 #define DUPCOL 10
00007
00008 class dupcol_action : public CoinPresolveAction {
00009 struct action {
00010 double thislo;
00011 double thisup;
00012 double lastlo;
00013 double lastup;
00014 int ithis;
00015 int ilast;
00016
00017 int *colrows;
00018 double *colels;
00019 int nincol;
00020 };
00021
00022 const int nactions_;
00023 const action *const actions_;
00024
00025 dupcol_action():CoinPresolveAction(NULL),nactions_(0),actions_(NULL) {};
00026 dupcol_action(int nactions,
00027 const action *actions,
00028 const CoinPresolveAction *next)
00029
00030 ;
00031
00032 public:
00033 const char *name() const;
00034
00035 static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
00036 const CoinPresolveAction *next);
00037
00038 void postsolve(CoinPostsolveMatrix *prob) const;
00039
00040
00041 };
00042
00043
00044 class duprow_action : public CoinPresolveAction {
00045 struct action {
00046 int row;
00047 double lbound;
00048 double ubound;
00049 };
00050
00051 const int nactions_;
00052 const action *const actions_;
00053
00054 duprow_action():CoinPresolveAction(NULL),nactions_(0),actions_(NULL) {};
00055 duprow_action(int nactions,
00056 const action *actions,
00057 const CoinPresolveAction *next) :
00058 CoinPresolveAction(next),
00059 nactions_(nactions), actions_(actions) {}
00060
00061 public:
00062 const char *name() const;
00063
00064 static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
00065 const CoinPresolveAction *next);
00066
00067 void postsolve(CoinPostsolveMatrix *prob) const;
00068
00069
00070 };
00071
00072 #endif
00073