CoinPresolveSubst.hpp
Go to the documentation of this file.00001
00002
00003
00004
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
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 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