CoinUtils  2.11.3
CoinPresolveSingleton.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveSingleton.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 CoinPresolveSingleton_H
7 #define CoinPresolveSingleton_H
8 #define SLACK_DOUBLETON 2
9 #define SLACK_SINGLETON 8
10 
15 //const int MAX_SLACK_DOUBLETONS = 1000;
16 
25  struct action {
26  double clo;
27  double cup;
28 
29  double rlo;
30  double rup;
31 
32  double coeff;
33 
34  int col;
35  int row;
36  };
37 
38  const int nactions_;
39  const action *const actions_;
40 
41  slack_doubleton_action(int nactions,
42  const action *actions,
43  const CoinPresolveAction *next)
45  , nactions_(nactions)
46  , actions_(actions)
47  {
48  }
49 
50 public:
51  const char *name() const { return ("slack_doubleton_action"); }
52 
60  const CoinPresolveAction *next,
61  bool &notFinished);
62 
63  void postsolve(CoinPostsolveMatrix *prob) const;
64 
65  virtual ~slack_doubleton_action() { deleteAction(actions_, action *); }
66 };
76  struct action {
77  double clo;
78  double cup;
79 
80  double rlo;
81  double rup;
82 
83  double coeff;
84 
85  int col;
86  int row;
87  };
88 
89  const int nactions_;
90  const action *const actions_;
91 
92  slack_singleton_action(int nactions,
93  const action *actions,
94  const CoinPresolveAction *next)
96  , nactions_(nactions)
97  , actions_(actions)
98  {
99  }
100 
101 public:
102  const char *name() const { return ("slack_singleton_action"); }
103 
104  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
105  const CoinPresolveAction *next,
106  double *rowObjective);
107 
108  void postsolve(CoinPostsolveMatrix *prob) const;
109 
110  virtual ~slack_singleton_action() { deleteAction(actions_, action *); }
111 };
112 #endif
113 
114 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
115 */
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next, bool &notFinished)
Convert explicit bound constraints to column bounds.
For variables with one entry.
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)
CoinPresolveAction(const CoinPresolveAction *next)
Construct a postsolve object and add it to the transformation list.
const CoinPresolveAction * next
The next presolve transformation.
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.
Convert an explicit bound constraint to a column bound.
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
const char * name() const
A name for debug printing.
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next, double *rowObjective)