CoinUtils trunk
CoinPresolveSubst.hpp
Go to the documentation of this file.
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 CoinPresolveSubst_H
00007 #define CoinPresolveSubst_H
00008 #define SUBST_ROW       21
00009 
00010 #include "CoinPresolveMatrix.hpp"
00011 
00012 class subst_constraint_action : public CoinPresolveAction {
00013 private:
00014   subst_constraint_action();
00015   subst_constraint_action(const subst_constraint_action& rhs);
00016   subst_constraint_action& operator=(const subst_constraint_action& rhs);
00017 
00018   struct action {
00019     double *rlos;
00020     double *rups;
00021 
00022     double *coeffxs;
00023     int *rows;
00024     
00025     int *ninrowxs;
00026     /*const*/ int *rowcolsxs;
00027     /*const*/ double *rowelsxs;
00028 
00029     const double *costsx;
00030     int col;
00031     int rowy;
00032 
00033     int nincol;
00034   };
00035 
00036   const int nactions_;
00037   // actions_ is owned by the class and must be deleted at destruction
00038   const action *const actions_;
00039 
00040   subst_constraint_action(int nactions,
00041                           action *actions,
00042                           const CoinPresolveAction *next) :
00043     CoinPresolveAction(next),
00044     nactions_(nactions), actions_(actions) {}
00045 
00046  public:
00047   const char *name() const;
00048 
00049   static const CoinPresolveAction *presolve(CoinPresolveMatrix * prob,
00050                                             const int *implied_free,
00051                                             const int * which,
00052                                             int numberFree,
00053                                             const CoinPresolveAction *next,
00054                                             int & fill_level);
00055   static const CoinPresolveAction *presolveX(CoinPresolveMatrix * prob,
00056                                   const CoinPresolveAction *next,
00057                                   int fillLevel);
00058 
00059   void postsolve(CoinPostsolveMatrix *prob) const;
00060 
00061   ~subst_constraint_action();
00062 };
00063 
00064 
00065 
00066 
00067 
00068 /*static*/ void implied_bounds(const double *els,
00069                            const double *clo, const double *cup,
00070                            const int *hcol,
00071                            CoinBigIndex krs, CoinBigIndex kre,
00072                            double *maxupp, double *maxdownp,
00073                            int jcol,
00074                            double rlo, double rup,
00075                            double *iclb, double *icub);
00076 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines