CoinUtils  2.11.3
CoinPresolveFixed.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveFixed.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 CoinPresolveFixed_H
7 #define CoinPresolveFixed_H
8 #define FIXED_VARIABLE 1
9 
26 public:
30  struct action {
31  int col;
32  int start;
33  double sol;
34  };
36  int *colrows_;
38  double *colels_;
40  int nactions_;
43 
44 private:
46  remove_fixed_action(int nactions,
47  action *actions,
48  double *colels,
49  int *colrows,
50  const CoinPresolveAction *next);
51 
52 public:
54  const char *name() const;
55 
64  int *fcols,
65  int nfcols,
66  const CoinPresolveAction *next);
67 
68  void postsolve(CoinPostsolveMatrix *prob) const;
69 
71  virtual ~remove_fixed_action();
72 };
73 
82  const CoinPresolveAction *next);
83 
94 
96  struct action {
97  double bound;
98  int col;
99  };
100 
102  int nactions_;
104  const action *actions_;
105 
110  const bool fix_to_lower_;
111 
115  const remove_fixed_action *faction_;
116 
118  make_fixed_action(int nactions, const action *actions, bool fix_to_lower,
119  const remove_fixed_action *faction,
120  const CoinPresolveAction *next)
122  , nactions_(nactions)
123  , actions_(actions)
124  , fix_to_lower_(fix_to_lower)
125  , faction_(faction)
126  {
127  }
128 
129 public:
131  const char *name() const;
132 
140  static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
141  int *fcols,
142  int nfcols,
143  bool fix_to_lower,
144  const CoinPresolveAction *next);
145 
150  void postsolve(CoinPostsolveMatrix *prob) const;
151 
154  {
155  deleteAction(actions_, action *);
156  delete faction_;
157  }
158 };
159 
168  const CoinPresolveAction *next);
169 
182 #endif
183 
184 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
185 */
const CoinPresolveAction * remove_fixed(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
Scan the problem for fixed columns and remove them.
const char * name() const
Returns string "make_fixed_action".
void postsolve(CoinPostsolveMatrix *prob) const
Postsolve (unfix variables)
Excise fixed variables from the model.
action * actions_
Vector specifying variable(s) affected by this object.
Abstract base class of all presolve routines.
const char * name() const
Returns string "remove_fixed_action".
int start
start of coefficients in colels_ and colrows_
#define deleteAction(array, type)
virtual ~remove_fixed_action()
Destructor.
const CoinPresolveAction * make_fixed(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
Scan variables and fix any with equal bounds.
int * colrows_
Array of row indices for coefficients of excised columns.
CoinPresolveAction(const CoinPresolveAction *next)
Construct a postsolve object and add it to the transformation list.
int col
column index of variable
const CoinPresolveAction * next
The next presolve transformation.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during postsol...
void transferCosts(CoinPresolveMatrix *prob)
Transfer costs from singleton variables.
double * colels_
Array of coefficients of excised columns.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during presolv...
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
double sol
value of variable
virtual ~make_fixed_action()
Destructor.
int nactions_
Number of entries in actions_.
Fix a variable at a specified bound.
static const remove_fixed_action * presolve(CoinPresolveMatrix *prob, int *fcols, int nfcols, const CoinPresolveAction *next)
Excise the specified columns.
Structure to hold information necessary to reintroduce a column into the problem representation.
static const CoinPresolveAction * presolve(CoinPresolveMatrix *prob, int *fcols, int nfcols, bool fix_to_lower, const CoinPresolveAction *next)
Perform actions to fix variables and return postsolve object.