CoinUtils trunk
CoinPresolveTighten.hpp
Go to the documentation of this file.
00001 /* $Id$ */
00002 // Copyright (C) 2002, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 // This code is licensed under the terms of the Eclipse Public License (EPL).
00005 
00006 #ifndef CoinPresolveTighten_H
00007 #define CoinPresolveTighten_H
00008 
00009 #include "CoinPresolveMatrix.hpp"
00010 
00011 // This action has no separate class;
00012 // instead, it decides which columns can be made fixed
00013 // and calls make_fixed_action::presolve.
00014 const CoinPresolveAction *tighten_zero_cost(CoinPresolveMatrix *prob,
00015                                          const CoinPresolveAction *next);
00016 
00017 #define DO_TIGHTEN      30
00018 
00019 class do_tighten_action : public CoinPresolveAction {
00020   do_tighten_action();
00021   do_tighten_action(const do_tighten_action& rhs);
00022   do_tighten_action& operator=(const do_tighten_action& rhs);
00023 
00024   struct action {
00025     int *rows;
00026     double *lbound;
00027     double *ubound;
00028     int col;
00029     int nrows;
00030     int direction;      // just for assertions
00031   };
00032 
00033   const int nactions_;
00034   const action *const actions_;
00035 
00036   do_tighten_action(int nactions,
00037                       const action *actions,
00038                       const CoinPresolveAction *next) :
00039     CoinPresolveAction(next),
00040     nactions_(nactions), actions_(actions) {}
00041 
00042  public:
00043   const char *name() const;
00044 
00045   static const CoinPresolveAction *presolve(CoinPresolveMatrix *prob,
00046                                          const CoinPresolveAction *next);
00047 
00048   void postsolve(CoinPostsolveMatrix *prob) const;
00049 
00050   ~do_tighten_action();
00051 
00052 };
00053 #endif
00054 
00055 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines