coin-Bcp
CoinPresolveDupcol.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveDupcol.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 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  }
60 
61 public:
62  const char *name() const;
63 
65  const CoinPresolveAction *next);
66 
67  void postsolve(CoinPostsolveMatrix *prob) const;
68 
69  virtual ~dupcol_action();
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  : CoinPresolveAction(NULL)
99  , nactions_(0)
100  , actions_(NULL)
101  {
102  }
103  duprow_action(int nactions,
104  const action *actions,
105  const CoinPresolveAction *next)
106  : CoinPresolveAction(next)
107  , nactions_(nactions)
108  , actions_(actions)
109  {
110  }
111 
112 public:
113  const char *name() const;
114 
115  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
116  const CoinPresolveAction *next);
117 
118  void postsolve(CoinPostsolveMatrix *prob) const;
119 
120  //~duprow_action() { delete[]actions_; }
121 };
122 
124  struct action {
125  int row;
126  double lbound;
127  double ubound;
128  };
129 
130  const int nactions_;
131  const action *const actions_;
132 
134  : CoinPresolveAction(NULL)
135  , nactions_(0)
136  , actions_(NULL)
137  {
138  }
139  duprow3_action(int nactions,
140  const action *actions,
141  const CoinPresolveAction *next)
142  : CoinPresolveAction(next)
143  , nactions_(nactions)
144  , actions_(actions)
145  {
146  }
147 
148 public:
149  const char *name() const;
150 
151  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
152  const CoinPresolveAction *next);
153 
154  void postsolve(CoinPostsolveMatrix *prob) const;
155 
156  //~duprow_action() { delete[]actions_; }
157 };
158 
170  struct action {
171  double rhs;
172  // last is row itself
174  double *rowels;
175  int *indices; // indices in gub row
176  int nDrop;
177  int ninrow;
178  };
179 
180  const int nactions_;
181  const action *const actions_;
182 
183  //gubrow_action():CoinPresolveAction(NULL),nactions_(0),actions_(NULL) {}
184  gubrow_action(int nactions,
185  const action *actions,
186  const CoinPresolveAction *next)
187  : CoinPresolveAction(next)
188  , nactions_(nactions)
189  , actions_(actions)
190  {
191  }
192 
193 public:
194  const char *name() const;
195 
196  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
197  const CoinPresolveAction *next);
198 
199  void postsolve(CoinPostsolveMatrix *prob) const;
200 
201  virtual ~gubrow_action();
202 };
203 
215  struct action {
216  double lbound_row;
217  double ubound_row;
218  double lbound_col;
219  double ubound_col;
220  double cost_col;
222  int row;
223  int col;
224  int othercol;
225  };
226 
227  const int nactions_;
228  const action *const actions_;
229 
231  : CoinPresolveAction(NULL)
232  , nactions_(0)
233  , actions_(NULL)
234  {
235  }
236  twoxtwo_action(int nactions,
237  const action *actions,
238  const CoinPresolveAction *next)
239  : CoinPresolveAction(next)
240  , nactions_(nactions)
241  , actions_(actions)
242  {
243  }
244 
245 public:
246  const char *name() const;
247 
248  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
249  const CoinPresolveAction *next);
250 
251  void postsolve(CoinPostsolveMatrix *prob) const;
252 
253  ~twoxtwo_action() { delete[] actions_; }
254 };
255 
256 #endif
257 
258 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
259 */
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)
virtual ~gubrow_action()
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.