- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# /home/coin/SVN-release/Cgl-0.55.0/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