00001 /* $Id: CoinPresolveForcing.hpp 1215 2009-11-05 11:03:04Z forrest $ */ 00002 // Copyright (C) 2002, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 00005 #ifndef CoinPresolveForcing_H 00006 #define CoinPresolveForcing_H 00007 00008 #include "CoinPresolveMatrix.hpp" 00009 00014 #define IMPLIED_BOUND 7 00015 00026 class forcing_constraint_action : public CoinPresolveAction { 00027 forcing_constraint_action(); 00028 forcing_constraint_action(const forcing_constraint_action& rhs); 00029 forcing_constraint_action& operator=(const forcing_constraint_action& rhs); 00030 public: 00031 struct action { 00032 const int *rowcols; 00033 const double *bounds; 00034 int row; 00035 int nlo; 00036 int nup; 00037 }; 00038 private: 00039 const int nactions_; 00040 // actions_ is owned by the class and must be deleted at destruction 00041 const action *const actions_; 00042 00043 public: 00044 forcing_constraint_action(int nactions, 00045 const action *actions, 00046 const CoinPresolveAction *next) : 00047 CoinPresolveAction(next), 00048 nactions_(nactions), actions_(actions) {} 00049 00050 const char *name() const; 00051 00052 static const CoinPresolveAction *presolve(CoinPresolveMatrix * prob, 00053 const CoinPresolveAction *next); 00054 00055 void postsolve(CoinPostsolveMatrix *prob) const; 00056 00057 ~forcing_constraint_action(); 00058 }; 00059 00060 #endif