coin-Bcp
CoinPresolveTighten.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveTighten.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 CoinPresolveTighten_H
7 #define CoinPresolveTighten_H
8 
9 #include "CoinPresolveMatrix.hpp"
10 
11 // This action has no separate class;
12 // instead, it decides which columns can be made fixed
13 // and calls make_fixed_action::presolve.
15  const CoinPresolveAction *next);
16 
17 #define DO_TIGHTEN 30
18 
23 
24  struct action {
25  int *rows;
26  double *lbound;
27  double *ubound;
28  int col;
29  int nrows;
30  int direction; // just for assertions
31  };
32 
33  const int nactions_;
34  const action *const actions_;
35 
36  do_tighten_action(int nactions,
37  const action *actions,
38  const CoinPresolveAction *next)
39  : CoinPresolveAction(next)
40  , nactions_(nactions)
41  , actions_(actions)
42  {
43  }
44 
45 public:
46  const char *name() const;
47 
49  const CoinPresolveAction *next);
50 
51  void postsolve(CoinPostsolveMatrix *prob) const;
52 
53  virtual ~do_tighten_action();
54 };
55 #endif
56 
57 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
58 */
do_tighten_action(int nactions, const action *actions, const CoinPresolveAction *next)
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...
do_tighten_action & operator=(const do_tighten_action &rhs)
virtual ~do_tighten_action()
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
const char * name() const
A name for debug printing.
Abstract base class of all presolve routines.
const CoinPresolveAction * tighten_zero_cost(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
const action *const actions_
const CoinPresolveAction * next
The next presolve transformation.