CoinPresolveSubst.hpp

Go to the documentation of this file.
00001 /* $Id: CoinPresolveSubst.hpp 1562 2012-11-24 00:36:15Z lou $ */
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 
00013 #define SUBST_ROW       21
00014 
00015 #include "CoinPresolveMatrix.hpp"
00016 
00037 class subst_constraint_action : public CoinPresolveAction {
00038 private:
00039   subst_constraint_action();
00040   subst_constraint_action(const subst_constraint_action& rhs);
00041   subst_constraint_action& operator=(const subst_constraint_action& rhs);
00042 
00043   struct action {
00044     double *rlos;
00045     double *rups;
00046 
00047     double *coeffxs;
00048     int *rows;
00049     
00050     int *ninrowxs;
00051     int *rowcolsxs;
00052     double *rowelsxs;
00053 
00054     const double *costsx;
00055     int col;
00056     int rowy;
00057 
00058     int nincol;
00059   };
00060 
00061   const int nactions_;
00062   // actions_ is owned by the class and must be deleted at destruction
00063   const action *const actions_;
00064 
00065   subst_constraint_action(int nactions,
00066                           action *actions,
00067                           const CoinPresolveAction *next) :
00068     CoinPresolveAction(next),
00069     nactions_(nactions), actions_(actions) {}
00070 
00071  public:
00072   const char *name() const;
00073 
00074   static const CoinPresolveAction *presolve(CoinPresolveMatrix * prob,
00075                                             const int *implied_free,
00076                                             const int * which,
00077                                             int numberFree,
00078                                             const CoinPresolveAction *next,
00079                                             int fill_level);
00080   static const CoinPresolveAction *presolveX(CoinPresolveMatrix * prob,
00081                                   const CoinPresolveAction *next,
00082                                   int fillLevel);
00083 
00084   void postsolve(CoinPostsolveMatrix *prob) const;
00085 
00086   virtual ~subst_constraint_action();
00087 };
00088 
00089 
00090 
00091 
00092 
00093 /*static*/ void implied_bounds(const double *els,
00094                            const double *clo, const double *cup,
00095                            const int *hcol,
00096                            CoinBigIndex krs, CoinBigIndex kre,
00097                            double *maxupp, double *maxdownp,
00098                            int jcol,
00099                            double rlo, double rup,
00100                            double *iclb, double *icub);
00101 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 28 Aug 2016 for CoinUtils by  doxygen 1.6.1