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