/home/coin/SVN-release/Bcp-1.2.3/Cgl/src/CglTreeInfo.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2000, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 
00004 #ifndef CglTreeInfo_H
00005 #define CglTreeInfo_H
00006 
00007 #include "OsiCuts.hpp"
00008 #include "OsiSolverInterface.hpp"
00009 #include "CoinHelperFunctions.hpp"
00010 class CglStored;
00013 class CglTreeInfo {
00014 public:
00016   int level;
00019   int pass;
00022   int formulation_rows;
00029   int options;
00031   bool inTree;
00041   OsiRowCut ** strengthenRow;
00043   CoinThreadRandom * randomNumberGenerator;
00045   CglTreeInfo ();
00046  
00048   CglTreeInfo (
00049     const CglTreeInfo &);
00051   virtual CglTreeInfo * clone() const;
00052 
00054   CglTreeInfo &
00055     operator=(
00056     const CglTreeInfo& rhs);
00057   
00059   virtual
00060     ~CglTreeInfo ();
00062   virtual void fixes(int variable, int toValue, int fixedVariable,bool fixedToLower) {}
00065   virtual int initializeFixing(const OsiSolverInterface * model) {return 0;}
00066   
00067 };
00068 
00070 typedef struct {
00071   unsigned int oneFixed:1; //  nonzero if variable fixed to 1
00072   unsigned int sequence:31; //  variable (in matrix)
00073 } fixEntry;
00074 
00075 class CglTreeProbingInfo : public CglTreeInfo {
00076 public:
00078   CglTreeProbingInfo ();
00080   CglTreeProbingInfo (const OsiSolverInterface * model);
00081  
00083   CglTreeProbingInfo (
00084     const CglTreeProbingInfo &);
00086   virtual CglTreeInfo * clone() const;
00087 
00089   CglTreeProbingInfo &
00090     operator=(
00091     const CglTreeProbingInfo& rhs);
00092   
00094   virtual
00095     ~CglTreeProbingInfo ();
00096   OsiSolverInterface * analyze(const OsiSolverInterface & si, int createSolver=0);
00098   virtual void fixes(int variable, int toValue, int fixedVariable,bool fixedToLower);
00101   virtual int initializeFixing(const OsiSolverInterface * model) ;
00103   int fixColumns(OsiSolverInterface & si) const;
00105   int fixColumns(int iColumn, int value, OsiSolverInterface & si) const;
00107   int packDown();
00109   void generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
00110                     const CglTreeInfo info) const;
00112   inline fixEntry * fixEntries() const
00113   { convert(); return fixEntry_;}
00115   inline int * toZero() const
00116   { convert(); return toZero_;}
00118   inline int * toOne() const
00119   { convert(); return toOne_;}
00121   inline int * integerVariable() const
00122   { return integerVariable_;}
00124   inline int * backward() const
00125   { return backward_;}
00127   inline int numberVariables() const
00128   { return numberVariables_;}
00130   inline int numberIntegers() const
00131   { return numberIntegers_;}
00132 private:
00134   void convert() const;
00135 protected:
00137   mutable fixEntry * fixEntry_;
00139   mutable int * toZero_;
00141   mutable int * toOne_;
00143   int * integerVariable_;
00145   int * backward_;
00147   mutable int * fixingEntry_;
00149   int numberVariables_;
00151   int numberIntegers_;
00153   int maximumEntries_;
00155   mutable int numberEntries_;
00156 };
00157 
00158 #endif

Generated on Thu Oct 8 03:12:37 2009 for coin-Bcp by  doxygen 1.4.7