CoinPresolveSubst.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveSubst.hpp 1562 2012-11-24 00:36:15Z lou $ */
2 // Copyright (C) 2002, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 
6 #ifndef CoinPresolveSubst_H
7 #define CoinPresolveSubst_H
8 
13 #define SUBST_ROW 21
14 
15 #include "CoinPresolveMatrix.hpp"
16 
38 private:
42 
43  struct action {
44  double *rlos;
45  double *rups;
46 
47  double *coeffxs;
48  int *rows;
49 
50  int *ninrowxs;
51  int *rowcolsxs;
52  double *rowelsxs;
53 
54  const double *costsx;
55  int col;
56  int rowy;
57 
58  int nincol;
59  };
60 
61  const int nactions_;
62  // actions_ is owned by the class and must be deleted at destruction
63  const action *const actions_;
64 
66  action *actions,
67  const CoinPresolveAction *next) :
68  CoinPresolveAction(next),
69  nactions_(nactions), actions_(actions) {}
70 
71  public:
72  const char *name() const;
73 
74  static const CoinPresolveAction *presolve(CoinPresolveMatrix * prob,
75  const int *implied_free,
76  const int * which,
77  int numberFree,
78  const CoinPresolveAction *next,
79  int fill_level);
80  static const CoinPresolveAction *presolveX(CoinPresolveMatrix * prob,
81  const CoinPresolveAction *next,
82  int fillLevel);
83 
84  void postsolve(CoinPostsolveMatrix *prob) const;
85 
86  virtual ~subst_constraint_action();
87 };
88 
89 
90 
91 
92 
93 /*static*/ void implied_bounds(const double *els,
94  const double *clo, const double *cup,
95  const int *hcol,
96  CoinBigIndex krs, CoinBigIndex kre,
97  double *maxupp, double *maxdownp,
98  int jcol,
99  double rlo, double rup,
100  double *iclb, double *icub);
101 #endif
int CoinBigIndex
const action *const actions_
static const CoinPresolveAction * presolveX(CoinPresolveMatrix *prob, const CoinPresolveAction *next, int fillLevel)
subst_constraint_action & operator=(const subst_constraint_action &rhs)
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during postsol...
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during presolv...
Detect and process implied free variables.
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const int *implied_free, const int *which, int numberFree, const CoinPresolveAction *next, int fill_level)
const char * name() const
A name for debug printing.
subst_constraint_action(int nactions, action *actions, const CoinPresolveAction *next)
Abstract base class of all presolve routines.
void implied_bounds(const double *els, const double *clo, const double *cup, const int *hcol, CoinBigIndex krs, CoinBigIndex kre, double *maxupp, double *maxdownp, int jcol, double rlo, double rup, double *iclb, double *icub)
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
virtual ~subst_constraint_action()
const CoinPresolveAction * next
The next presolve transformation.