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 ( CoinIndexedVector * regionSparse,
00067 int pivotRow,
00068 double pivotCheck ,
00069 bool checkBeforeModifying=false);
00071
00079 int updateColumnFT ( CoinIndexedVector * regionSparse,
00080 CoinIndexedVector * regionSparse2);
00081 int updateColumn ( CoinIndexedVector * regionSparse,
00082 CoinIndexedVector * regionSparse2,
00083 bool noPermute=false) const;
00086 int updateColumnTranspose ( CoinIndexedVector * regionSparse,
00087 CoinIndexedVector * regionSparse2) const;
00089
00093 void goSparse();
00095 void cleanUp();
00097 bool needToReorder() const;
00099 bool inline networkBasis() const
00100 { return (networkBasis_!=NULL);};
00102
00104 private:
00105
00108
00109 ClpNetworkBasis * networkBasis_;
00111 };
00112
00113 #endif