Cbc  2.9.9
 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:
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
const action *const actions_
static const CoinPresolveAction * presolveX(CoinPresolveMatrix *prob, const CoinPresolveAction *next, int fillLevel)
subst_constraint_action & operator=(const subst_constraint_action &rhs)
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)
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...
subst_constraint_action(int nactions, action *actions, const CoinPresolveAction *next)
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()