00001 // Copyright (C) 2002, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 00004 #ifndef CoinPresolveForcing_H 00005 #define CoinPresolveForcing_H 00006 00007 #include "CoinPresolveMatrix.hpp" 00008 00013 #define IMPLIED_BOUND 7 00014 00025 class forcing_constraint_action : public CoinPresolveAction { 00026 forcing_constraint_action(); 00027 forcing_constraint_action(const forcing_constraint_action& rhs); 00028 forcing_constraint_action& operator=(const forcing_constraint_action& rhs); 00029 00030 struct action { 00031 const int *rowcols; 00032 const double *bounds; 00033 int row; 00034 int nlo; 00035 int nup; 00036 }; 00037 00038 const int nactions_; 00039 // actions_ is owned by the class and must be deleted at destruction 00040 const action *const actions_; 00041 00042 forcing_constraint_action(int nactions, 00043 const action *actions, 00044 const CoinPresolveAction *next) : 00045 CoinPresolveAction(next), 00046 nactions_(nactions), actions_(actions) {} 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 ~forcing_constraint_action(); 00057 }; 00058 00059 #endif