CoinPresolveDupcol.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveDupcol.hpp 1817 2015-03-22 16:43:28Z forrest $ */
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 CoinPresolveDupcol_H
7 #define CoinPresolveDupcol_H
8 
9 #include "CoinPresolveMatrix.hpp"
10 
15 #define DUPCOL 10
16 
33  dupcol_action();
34  dupcol_action(const dupcol_action& rhs);
36 
37  struct action {
38  double thislo;
39  double thisup;
40  double lastlo;
41  double lastup;
42  int ithis;
43  int ilast;
44 
45  double *colels;
46  int nincol;
47  };
48 
49  const int nactions_;
50  // actions_ is owned by the class and must be deleted at destruction
51  const action *const actions_;
52 
53  dupcol_action(int nactions, const action *actions,
54  const CoinPresolveAction *next) :
55  CoinPresolveAction(next),
56  nactions_(nactions),
57  actions_(actions) {}
58 
59  public:
60  const char *name() const;
61 
63  const CoinPresolveAction *next);
64 
65  void postsolve(CoinPostsolveMatrix *prob) const;
66 
67  virtual ~dupcol_action();
68 
69 };
70 
71 
88  struct action {
89  int row;
90  double lbound;
91  double ubound;
92  };
93 
94  const int nactions_;
95  const action *const actions_;
96 
98  duprow_action(int nactions,
99  const action *actions,
100  const CoinPresolveAction *next) :
101  CoinPresolveAction(next),
102  nactions_(nactions), actions_(actions) {}
103 
104  public:
105  const char *name() const;
106 
107  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
108  const CoinPresolveAction *next);
109 
110  void postsolve(CoinPostsolveMatrix *prob) const;
111 
112  //~duprow_action() { delete[]actions_; }
113 };
114 
116  struct action {
117  int row;
118  double lbound;
119  double ubound;
120  };
121 
122  const int nactions_;
123  const action *const actions_;
124 
126  duprow3_action(int nactions,
127  const action *actions,
128  const CoinPresolveAction *next) :
129  CoinPresolveAction(next),
130  nactions_(nactions), actions_(actions) {}
131 
132  public:
133  const char *name() const;
134 
135  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
136  const CoinPresolveAction *next);
137 
138  void postsolve(CoinPostsolveMatrix *prob) const;
139 
140  //~duprow_action() { delete[]actions_; }
141 };
142 
154  struct action {
155  int row;
156  double lbound;
157  double ubound;
158  };
159 
160  const int nactions_;
161  const action *const actions_;
162 
164  gubrow_action(int nactions,
165  const action *actions,
166  const CoinPresolveAction *next) :
167  CoinPresolveAction(next),
168  nactions_(nactions), actions_(actions) {}
169 
170  public:
171  const char *name() const;
172 
173  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
174  const CoinPresolveAction *next);
175 
176  void postsolve(CoinPostsolveMatrix *prob) const;
177 
178  //~gubrow_action() { delete[]actions_; }
179 };
180 
192  struct action {
193  double lbound_row;
194  double ubound_row;
195  double lbound_col;
196  double ubound_col;
197  double cost_col;
199  int row;
200  int col;
201  int othercol;
202  };
203 
204  const int nactions_;
205  const action *const actions_;
206 
208  twoxtwo_action(int nactions,
209  const action *actions,
210  const CoinPresolveAction *next) :
211  CoinPresolveAction(next),
212  nactions_(nactions), actions_(actions) {}
213 
214  public:
215  const char *name() const;
216 
217  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
218  const CoinPresolveAction *next);
219 
220  void postsolve(CoinPostsolveMatrix *prob) const;
221 
222  ~twoxtwo_action() { delete [] actions_; }
223 };
224 
225 #endif
226 
const action *const actions_
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
virtual ~dupcol_action()
Detect and remove entries whose sum is known.
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...
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
twoxtwo_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.
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
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.
Detect and remove duplicate columns.
duprow3_action(int nactions, const action *actions, const CoinPresolveAction *next)
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
Detect and remove duplicate rows.
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
dupcol_action & operator=(const dupcol_action &rhs)
gubrow_action(int nactions, const action *actions, const CoinPresolveAction *next)
const char * name() const
A name for debug printing.
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
const action *const actions_
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
const action *const actions_
const char * name() const
A name for debug printing.
Detect interesting 2 by 2 blocks.
const action *const actions_
duprow_action(int nactions, const action *actions, const CoinPresolveAction *next)
const char * name() const
A name for debug printing.
dupcol_action(int nactions, const action *actions, const CoinPresolveAction *next)
const CoinPresolveAction * next
The next presolve transformation.
const char * name() const
A name for debug printing.