/home/coin/SVN-release/CoinAll-1.1.0/CoinUtils/src/CoinPresolveSingleton.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2002, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 
00004 #ifndef CoinPresolveSingleton_H
00005 #define CoinPresolveSingleton_H
00006 #define SLACK_DOUBLETON 2
00007 #define SLACK_SINGLETON 8
00008 
00013 const int MAX_SLACK_DOUBLETONS  = 1000;
00014 
00022 class slack_doubleton_action : public CoinPresolveAction {
00023   struct action {
00024     double clo;
00025     double cup;
00026 
00027     double rlo;
00028     double rup;
00029 
00030     double coeff;
00031 
00032     int col;
00033     int row;
00034   };
00035 
00036   const int nactions_;
00037   const action *const actions_;
00038 
00039   slack_doubleton_action(int nactions,
00040                          const action *actions,
00041                          const CoinPresolveAction *next) :
00042     CoinPresolveAction(next),
00043     nactions_(nactions),
00044     actions_(actions)
00045 {}
00046 
00047  public:
00048   const char *name() const { return ("slack_doubleton_action"); }
00049 
00056   static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
00057                                            const CoinPresolveAction *next,
00058                                         bool &notFinished);
00059 
00060   void postsolve(CoinPostsolveMatrix *prob) const;
00061 
00062 
00063   ~slack_doubleton_action() { deleteAction(actions_,action*); }
00064 };
00073 class slack_singleton_action : public CoinPresolveAction {
00074   struct action {
00075     double clo;
00076     double cup;
00077 
00078     double rlo;
00079     double rup;
00080 
00081     double coeff;
00082 
00083     int col;
00084     int row;
00085   };
00086 
00087   const int nactions_;
00088   const action *const actions_;
00089 
00090   slack_singleton_action(int nactions,
00091                          const action *actions,
00092                          const CoinPresolveAction *next) :
00093     CoinPresolveAction(next),
00094     nactions_(nactions),
00095     actions_(actions)
00096 {}
00097 
00098  public:
00099   const char *name() const { return ("slack_singleton_action"); }
00100 
00101   static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
00102                                             const CoinPresolveAction *next,
00103                                             double * rowObjective);
00104 
00105   void postsolve(CoinPostsolveMatrix *prob) const;
00106 
00107 
00108   ~slack_singleton_action() { deleteAction(actions_,action*); }
00109 };
00110 #endif

Generated on Sun Nov 14 14:06:32 2010 for Coin-All by  doxygen 1.4.7