00001
00002
00003
00004 #ifndef CoinPresolveForcing_H
00005 #define CoinPresolveForcing_H
00006 #define IMPLIED_BOUND 7
00007
00008 class forcing_constraint_action : public CoinPresolveAction {
00009 struct action {
00010 const int *rowcols;
00011 const double *bounds;
00012 int row;
00013 int nlo;
00014 int nup;
00015 };
00016
00017 const int nactions_;
00018 const action *const actions_;
00019
00020 forcing_constraint_action(int nactions,
00021 const action *actions,
00022 const CoinPresolveAction *next) :
00023 CoinPresolveAction(next),
00024 nactions_(nactions), actions_(actions) {};
00025
00026 public:
00027 const char *name() const;
00028
00029 static const CoinPresolveAction *presolve(CoinPresolveMatrix * prob,
00030 const CoinPresolveAction *next);
00031
00032 void postsolve(CoinPostsolveMatrix *prob) const;
00033
00034 ~forcing_constraint_action();
00035 };
00036
00037
00038
00039
00040
00041 void compact_rep(double *elems, int *indices, CoinBigIndex *starts, const int *lengths, int n,
00042 const presolvehlink *link);
00043
00044 #endif