/home/coin/SVN-release/Osi-0.102.1/CoinUtils/src/CoinOslFactorization.hpp

Go to the documentation of this file.
00001 /* $Id: CoinOslFactorization.hpp 1191 2009-07-25 08:38:12Z forrest $ */
00002 // Copyright (C) 1987, 2009, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 
00005 /* 
00006    Authors
00007    
00008    John Forrest
00009 
00010  */
00011 #ifndef CoinOslFactorization_H
00012 #define CoinOslFactorization_H
00013 #include <iostream>
00014 #include <string>
00015 #include <cassert>
00016 #include "CoinFinite.hpp"
00017 #include "CoinIndexedVector.hpp"
00018 #include "CoinDenseFactorization.hpp"
00019 #include "CoinOslC.h"
00020 class CoinPackedMatrix;
00030 class CoinOslFactorization : public CoinOtherFactorization {
00031    friend void CoinOslFactorizationUnitTest( const std::string & mpsDir );
00032 
00033 public:
00034 
00037 
00038   CoinOslFactorization (  );
00040   CoinOslFactorization ( const CoinOslFactorization &other);
00041   
00043   virtual ~CoinOslFactorization (  );
00045   CoinOslFactorization & operator = ( const CoinOslFactorization & other );
00047   virtual CoinOtherFactorization * clone() const ;
00049 
00052 
00053   virtual void getAreas ( int numberRows,
00054                   int numberColumns,
00055                   CoinBigIndex maximumL,
00056                   CoinBigIndex maximumU );
00057   
00059   virtual void preProcess ( );
00065   virtual int factor ( );
00067   virtual void postProcess(const int * sequence, int * pivotVariable);
00069   virtual void makeNonSingular(int * sequence, int numberColumns);
00077   int factorize ( const CoinPackedMatrix & matrix, 
00078                   int rowIsBasic[], int columnIsBasic[] , 
00079                   double areaFactor = 0.0 );
00081 
00084 
00085   virtual inline int numberElements (  ) const {
00086     return numberRows_*(numberColumns_+numberPivots_);
00087   }
00089   virtual CoinFactorizationDouble * elements() const;
00091   virtual int * pivotRow() const;
00093   virtual CoinFactorizationDouble * workArea() const;
00095   virtual int * intWorkArea() const;
00097   virtual int * numberInRow() const;
00099   virtual int * numberInColumn() const;
00101   virtual CoinBigIndex * starts() const;
00103   virtual int * permuteBack() const;
00105   virtual bool wantsTableauColumn() const;
00110   virtual void setUsefulInformation(const int * info,int whereFrom);
00112   virtual void maximumPivots (  int value );
00113 
00115   double maximumCoefficient() const;
00117   double conditionNumber() const;
00119   virtual void clearArrays();
00121 
00124 
00132   virtual int replaceColumn ( CoinIndexedVector * regionSparse,
00133                       int pivotRow,
00134                       double pivotCheck ,
00135                               bool checkBeforeModifying=false,
00136                               double acceptablePivot=1.0e-8);
00138 
00148   virtual int updateColumnFT ( CoinIndexedVector * regionSparse,
00149                                       CoinIndexedVector * regionSparse2,
00150                                       bool noPermute=false);
00153   virtual int updateColumn ( CoinIndexedVector * regionSparse,
00154                      CoinIndexedVector * regionSparse2,
00155                      bool noPermute=false) const;
00157     virtual int updateTwoColumnsFT(CoinIndexedVector * regionSparse1,
00158                            CoinIndexedVector * regionSparse2,
00159                            CoinIndexedVector * regionSparse3,
00160                            bool noPermute=false);
00165   virtual int updateColumnTranspose ( CoinIndexedVector * regionSparse,
00166                               CoinIndexedVector * regionSparse2) const;
00168 
00169 
00173 
00174   //inline void clearArrays()
00175   //{ gutsOfDestructor();}
00177   virtual int * indices() const;
00179   virtual inline int * permute() const
00180   { return NULL;/*pivotRow_*/;}
00182 
00184   void gutsOfDestructor(bool clearFact=true);
00186   void gutsOfInitialize(bool zapFact=true);
00188   void gutsOfCopy(const CoinOslFactorization &other);
00189 
00191 protected:
00194   int checkPivot(double saveFromU, double oldPivot) const;
00196 protected:
00197 
00200 
00201   EKKfactinfo factInfo_;
00203 };
00204 #endif

Generated on Wed Jan 20 03:01:21 2010 by  doxygen 1.4.7