Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CoinPresolveEmpty.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveEmpty.hpp 2083 2019-01-06 19:38:09Z unxusr $ */
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 CoinPresolveEmpty_H
7 #define CoinPresolveEmpty_H
8 
14 const int DROP_ROW = 3;
15 const int DROP_COL = 4;
16 
35 private:
36  const int nactions_;
37 
38  struct action {
39  double clo;
40  double cup;
41  double cost;
42  double sol;
43  int jcol;
44  };
45  const action *const actions_;
46 
47  drop_empty_cols_action(int nactions,
48  const action *const actions,
49  const CoinPresolveAction *next)
50  : CoinPresolveAction(next)
51  , nactions_(nactions)
52  , actions_(actions)
53  {
54  }
55 
56 public:
57  const char *name() const { return ("drop_empty_cols_action"); }
58 
60  const int *ecols,
61  int necols,
62  const CoinPresolveAction *);
63 
65  const CoinPresolveAction *next);
66 
67  void postsolve(CoinPostsolveMatrix *prob) const;
68 
70 };
71 
87 private:
88  struct action {
89  double rlo;
90  double rup;
91  int row;
92  int fill_row; // which row was moved into position row to fill it
93  };
94 
95  const int nactions_;
96  const action *const actions_;
97 
98  drop_empty_rows_action(int nactions,
99  const action *actions,
100  const CoinPresolveAction *next)
101  : CoinPresolveAction(next)
102  , nactions_(nactions)
103  , actions_(actions)
104  {
105  }
106 
107 public:
108  const char *name() const { return ("drop_empty_rows_action"); }
109 
110  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
111  const CoinPresolveAction *next);
112 
113  void postsolve(CoinPostsolveMatrix *prob) const;
114 
116 };
117 #endif
118 
119 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
120 */
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
const action *const actions_
Abstract base class of all presolve routines.
drop_empty_cols_action(int nactions, const action *const actions, const CoinPresolveAction *next)
#define deleteAction(array, type)
const int DROP_COL
static const CoinPresolveAction * presolve(CoinPresolveMatrix *, const int *ecols, int necols, const CoinPresolveAction *)
const int DROP_ROW
const CoinPresolveAction * next
The next presolve transformation.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during postsol...
Physically removes empty columns in presolve, and reinserts empty columns in postsolve.
const char * name() const
A name for debug printing.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during presolv...
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
drop_empty_rows_action(int nactions, const action *actions, const CoinPresolveAction *next)
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
const char * name() const
A name for debug printing.
Physically removes empty rows in presolve, and reinserts empty rows in postsolve. ...
const action *const actions_