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