Clp  1.17.6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
104  const action *actions_;
105 
110  const bool fix_to_lower_;
111 
116 
118  make_fixed_action(int nactions, const action *actions, bool fix_to_lower,
119  const remove_fixed_action *faction,
120  const CoinPresolveAction *next)
121  : 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  {
156  delete faction_;
157  }
158 };
159 
168  const CoinPresolveAction *next);
169 
182 #endif
183 
184 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
185 */
void postsolve(CoinPostsolveMatrix *prob) const
Apply the postsolve transformation for this particular presolve action.
Structure to preserve the bound overwritten when fixing a variable.
const CoinPresolveAction * remove_fixed(CoinPresolveMatrix *prob, const CoinPresolveAction *next)
Scan the problem for fixed columns and remove them.
Excise fixed variables from the model.
action * actions_
Vector specifying variable(s) affected by this object.
int col
column index of variable
double bound
Value of bound overwritten to fix variable.
Abstract base class of all presolve routines.
int start
start of coefficients in colels_ and colrows_
const bool fix_to_lower_
True to fix at lower bound, false to fix at upper bound.
#define deleteAction(array, type)
virtual ~remove_fixed_action()
Destructor.
const char * name() const
Returns string "remove_fixed_action".
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.
void postsolve(CoinPostsolveMatrix *prob) const
Postsolve (unfix variables)
const char * name() const
Returns string "make_fixed_action".
int col
column index of variable
const CoinPresolveAction * next
The next presolve transformation.
make_fixed_action(int nactions, const action *actions, bool fix_to_lower, const remove_fixed_action *faction, const CoinPresolveAction *next)
Constructor.
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...
double sol
value of variable
virtual ~make_fixed_action()
Destructor.
int nactions_
Number of entries in actions_.
Fix a variable at a specified bound.
const action * actions_
Vector of preserved bounds, one for each variable fixed in this object.
remove_fixed_action(int nactions, action *actions, double *colels, int *colrows, const CoinPresolveAction *next)
Constructor.
int nactions_
Number of preserved bounds.
const remove_fixed_action * faction_
The postsolve object with the information required to repopulate the fixed columns.
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.