CoinUtils  2.11.3
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)
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 
69  virtual ~drop_empty_cols_action() { deleteAction(actions_, action *); }
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)
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 
115  virtual ~drop_empty_rows_action() { deleteAction(actions_, action *); }
116 };
117 #endif
118 
119 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
120 */
const char * name() const
A name for debug printing.
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
Abstract base class of all presolve routines.
#define deleteAction(array, type)
const char * name() const
A name for debug printing.
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
const int DROP_COL
static const CoinPresolveAction * presolve(CoinPresolveMatrix *, const int *ecols, int necols, const CoinPresolveAction *)
CoinPresolveAction(const CoinPresolveAction *next)
Construct a postsolve object and add it to the transformation list.
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.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during presolv...
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
Physically removes empty rows in presolve, and reinserts empty rows in postsolve.