00001
00002
00003 #ifndef ClpFactorization_H
00004 #define ClpFactorization_H
00005
00006
00007 #include "CoinPragma.hpp"
00008
00009 #include "CoinFactorization.hpp"
00010
00015 class ClpMatrixBase;
00016 class ClpSimplex;
00017 class ClpNetworkBasis;
00018
00019 class ClpFactorization : public CoinFactorization {
00020
00021 public:
00033 int factorize (ClpSimplex * model,int solveType, bool valuesPass);
00035
00036
00040 ClpFactorization();
00042 ~ClpFactorization();
00044
00048 ClpFactorization(const ClpFactorization&);
00050 ClpFactorization(const CoinFactorization&);
00051
00052 ClpFactorization& operator=(const ClpFactorization&);
00054
00055
00058
00066 int replaceColumn ( const ClpSimplex * model,
00067 CoinIndexedVector * regionSparse,
00068 CoinIndexedVector * tableauColumn,
00069 int pivotRow,
00070 double pivotCheck ,
00071 bool checkBeforeModifying=false);
00073
00081 int updateColumnFT ( CoinIndexedVector * regionSparse,
00082 CoinIndexedVector * regionSparse2);
00083 int updateColumn ( CoinIndexedVector * regionSparse,
00084 CoinIndexedVector * regionSparse2,
00085 bool noPermute=false) const;
00088 int updateColumnTranspose ( CoinIndexedVector * regionSparse,
00089 CoinIndexedVector * regionSparse2) const;
00091
00095 void goSparse();
00097 void cleanUp();
00099 bool needToReorder() const;
00101 bool inline networkBasis() const
00102 { return (networkBasis_!=NULL);};
00104
00106 private:
00107
00110
00111 ClpNetworkBasis * networkBasis_;
00113 };
00114
00115 #endif