00001 // Copyright (C) 2002, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 00004 #ifndef CoinPresolveUseless_H 00005 #define CoinPresolveUseless_H 00006 #define USELESS 20 00007 00008 class useless_constraint_action : public CoinPresolveAction { 00009 struct action { 00010 double rlo; 00011 double rup; 00012 const int *rowcols; 00013 const double *rowels; 00014 int row; 00015 int ninrow; 00016 }; 00017 00018 const int nactions_; 00019 const action *const actions_; 00020 00021 useless_constraint_action(int nactions, 00022 const action *actions, 00023 const CoinPresolveAction *next); 00024 00025 public: 00026 const char *name() const; 00027 00028 // These rows are asserted to be useless, 00029 // that is, given a solution the row activity 00030 // must be in range. 00031 static const CoinPresolveAction *presolve(CoinPresolveMatrix * prob, 00032 const int *useless_rows, 00033 int nuseless_rows, 00034 const CoinPresolveAction *next); 00035 00036 void postsolve(CoinPostsolveMatrix *prob) const; 00037 00038 ~useless_constraint_action(); 00039 00040 }; 00041 00042 00043 #endif