CoinUtils  2.10.13
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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:
41  subst_constraint_action& operator=(const subst_constraint_action& rhs);
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 
65  subst_constraint_action(int nactions,
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
static const CoinPresolveAction * presolveX(CoinPresolveMatrix *prob, const CoinPresolveAction *next, int fillLevel)
Abstract base class of all presolve routines.
Detect and process implied free variables.
Declarations for CoinPresolveMatrix and CoinPostsolveMatrix and their common base class CoinPrePostso...
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const int *implied_free, const int *which, int numberFree, const CoinPresolveAction *next, int fill_level)
CoinPresolveAction(const CoinPresolveAction *next)
Construct a postsolve object and add it to the transformation list.
const char * name() const
A name for debug printing.
const CoinPresolveAction * next
The next presolve transformation.
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...
int CoinBigIndex
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()