- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# /home/coin/SVN-release/Alps-1.3.0/CoinUtils/src/CoinPresolveSubst.hpp

Go to the documentation of this file.

    00001 /* $Id: CoinPresolveSubst.hpp 1372 2011-01-03 23:31:00Z 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 #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