CoinPresolveFixed.hpp
Go to the documentation of this file.
1 /* $Id: CoinPresolveFixed.hpp 1510 2011-12-08 23:56:01Z lou $ */
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 
74 
83  const CoinPresolveAction *next);
84 
85 
96 
98  struct action {
99  double bound;
100  int col ;
101  };
102 
106  const action *actions_;
107 
112  const bool fix_to_lower_;
113 
118 
120  make_fixed_action(int nactions, const action *actions, bool fix_to_lower,
121  const remove_fixed_action *faction,
122  const CoinPresolveAction *next)
123  : CoinPresolveAction(next),
124  nactions_(nactions), actions_(actions),
125  fix_to_lower_(fix_to_lower),
126  faction_(faction)
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 
153  virtual ~make_fixed_action() {
155  delete faction_;
156  }
157 };
158 
167  const CoinPresolveAction *next) ;
168 
180 void transferCosts(CoinPresolveMatrix * prob);
181 #endif
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.
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...
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.
#define deleteAction(array, type)
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.
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
make_fixed_action(int nactions, const action *actions, bool fix_to_lower, const remove_fixed_action *faction, const CoinPresolveAction *next)
Constructor.
Abstract base class of all presolve routines.
void transferCosts(CoinPresolveMatrix *prob)
Transfer costs from singleton variables.
double * colels_
Array of coefficients of excised columns.
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.
const CoinPresolveAction * next
The next presolve transformation.
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.