00001
00002
00003
00004 #ifndef CoinPresolveImpliedFree_H
00005 #define CoinPresolveInpliedFree_H
00006 #define IMPLIED_FREE 9
00007
00008 class implied_free_action : public CoinPresolveAction {
00009 struct action {
00010 int row, col;
00011 double clo, cup;
00012 double rlo, rup;
00013 const double *rowels;
00014 const int *rowcols;
00015 const double *costs;
00016 int ninrow;
00017 };
00018
00019 const int nactions_;
00020 const action *const actions_;
00021
00022 implied_free_action(int nactions,
00023 const action *actions,
00024 const CoinPresolveAction *next) :
00025 CoinPresolveAction(next),
00026 nactions_(nactions), actions_(actions) {}
00027
00028 public:
00029 const char *name() const;
00030
00031 static const CoinPresolveAction *presolve(CoinPresolveMatrix * prob,
00032 const CoinPresolveAction *next,
00033 int & fillLevel);
00034
00035 void postsolve(CoinPostsolveMatrix *prob) const;
00036
00037 ~implied_free_action();
00038 };
00039
00040 #endif