CoinPresolveDupcol.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveDupcol.hpp 1215 2009-11-05 11:03:04Z forrest $ */
2 // Copyright (C) 2002, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 
5 #ifndef CoinPresolveDupcol_H
6 #define CoinPresolveDupcol_H
7 
8 #include "CoinPresolveMatrix.hpp"
9 
14 #define DUPCOL 10
15 
32  dupcol_action();
33  dupcol_action(const dupcol_action& rhs);
35 
36  struct action {
37  double thislo;
38  double thisup;
39  double lastlo;
40  double lastup;
41  int ithis;
42  int ilast;
43 
44  double *colels;
45  int nincol;
46  };
47 
48  const int nactions_;
49  // actions_ is owned by the class and must be deleted at destruction
50  const action *const actions_;
51 
52  dupcol_action(int nactions, const action *actions,
53  const CoinPresolveAction *next) :
54  CoinPresolveAction(next),
55  nactions_(nactions),
56  actions_(actions) {}
57 
58  public:
59  const char *name() const;
60 
62  const CoinPresolveAction *next);
63 
64  void postsolve(CoinPostsolveMatrix *prob) const;
65 
67 
68 };
69 
70 
87  struct action {
88  int row;
89  double lbound;
90  double ubound;
91  };
92 
93  const int nactions_;
94  const action *const actions_;
95 
97  duprow_action(int nactions,
98  const action *actions,
99  const CoinPresolveAction *next) :
100  CoinPresolveAction(next),
101  nactions_(nactions), actions_(actions) {}
102 
103  public:
104  const char *name() const;
105 
106  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
107  const CoinPresolveAction *next);
108 
109  void postsolve(CoinPostsolveMatrix *prob) const;
110 
111  //~duprow_action() { delete[]actions_; }
112 };
113 
125  struct action {
126  int row;
127  double lbound;
128  double ubound;
129  };
130 
131  const int nactions_;
132  const action *const actions_;
133 
135  gubrow_action(int nactions,
136  const action *actions,
137  const CoinPresolveAction *next) :
138  CoinPresolveAction(next),
139  nactions_(nactions), actions_(actions) {}
140 
141  public:
142  const char *name() const;
143 
144  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
145  const CoinPresolveAction *next);
146 
147  void postsolve(CoinPostsolveMatrix *prob) const;
148 
149  //~gubrow_action() { delete[]actions_; }
150 };
151 
152 #endif
153 
const action *const actions_
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...
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.
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
Detect and remove duplicate rows.
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 char * name() const
A name for debug printing.
duprow_action(int nactions, const action *actions, const CoinPresolveAction *next)
dupcol_action(int nactions, const action *actions, const CoinPresolveAction *next)
const CoinPresolveAction * next
The next presolve transformation.