/build/buildd/clp-1.12.0/Clp/src/ClpNetworkBasis.hpp
Go to the documentation of this file.
00001 /* $Id: ClpNetworkBasis.hpp 1525 2010-02-26 17:27:59Z mjs $ */
00002 // Copyright (C) 2003, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 
00005 /*
00006    Authors
00007 
00008    John Forrest
00009 
00010  */
00011 #ifndef ClpNetworkBasis_H
00012 #define ClpNetworkBasis_H
00013 
00014 class ClpMatrixBase;
00015 class CoinIndexedVector;
00016 class ClpSimplex;
00017 #include "CoinFinite.hpp"
00018 #ifndef COIN_FAST_CODE
00019 #define COIN_FAST_CODE
00020 #endif
00021 
00026 class ClpNetworkBasis {
00027 
00028 public:
00029 
00032 
00033      ClpNetworkBasis (  );
00035      ClpNetworkBasis(const ClpSimplex * model,
00036                      int numberRows, const CoinFactorizationDouble * pivotRegion,
00037                      const int * permuteBack, const CoinBigIndex * startColumn,
00038                      const int * numberInColumn,
00039                      const int * indexRow, const CoinFactorizationDouble * element);
00041      ClpNetworkBasis ( const ClpNetworkBasis &other);
00042 
00044      ~ClpNetworkBasis (  );
00046      ClpNetworkBasis & operator = ( const ClpNetworkBasis & other );
00048 
00059      int factorize ( const ClpMatrixBase * matrix,
00060                      int rowIsBasic[], int columnIsBasic[]);
00062 
00065 
00069      int replaceColumn ( CoinIndexedVector * column,
00070                          int pivotRow);
00072 
00079      double updateColumn ( CoinIndexedVector * regionSparse,
00080                            CoinIndexedVector * regionSparse2,
00081                            int pivotRow);
00087      int updateColumn (  CoinIndexedVector * regionSparse,
00088                          double array[] ) const;
00095      int updateColumnTranspose (  CoinIndexedVector * regionSparse,
00096                                   double array[] ) const;
00098      int updateColumnTranspose (  CoinIndexedVector * regionSparse,
00099                                   CoinIndexedVector * regionSparse2) const;
00101 
00102 private:
00103 
00104      // checks looks okay
00105      void check();
00106      // prints data
00107      void print();
00110 #ifndef COIN_FAST_CODE
00111 
00112      double slackValue_;
00113 #endif
00114 
00115      int numberRows_;
00117      int numberColumns_;
00119      const ClpSimplex * model_;
00121      int * parent_;
00123      int * descendant_;
00125      int * pivot_;
00127      int * rightSibling_;
00129      int * leftSibling_;
00131      double * sign_;
00133      int * stack_;
00135      int * permute_;
00137      int * permuteBack_;
00139      int * stack2_;
00141      int * depth_;
00143      char * mark_;
00145 };
00146 #endif