Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

ClpNetworkMatrix.hpp

00001 // Copyright (C) 2003, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef ClpNetworkMatrix_H
00004 #define ClpNetworkMatrix_H
00005 
00006 
00007 #include "CoinPragma.hpp"
00008 
00009 #include "ClpMatrixBase.hpp"
00010 
00016 class ClpNetworkMatrix : public ClpMatrixBase {
00017   
00018 public:
00021 
00022    virtual CoinPackedMatrix * getPackedMatrix() const;
00024    virtual bool isColOrdered() const { return true; }
00026   virtual  CoinBigIndex getNumElements() const 
00027   { return 2*numberColumns_; }
00029    virtual int getNumCols() const { return numberColumns_; }
00031   virtual int getNumRows() const { return numberRows_; };
00032 
00037   virtual const double * getElements() const; 
00043   virtual const int * getIndices() const
00044   { return indices_;};
00045 
00046   virtual const CoinBigIndex * getVectorStarts() const;
00048   virtual const int * getVectorLengths() const;
00049 
00051   virtual void deleteCols(const int numDel, const int * indDel);
00053   virtual void deleteRows(const int numDel, const int * indDel);
00055   virtual ClpMatrixBase * reverseOrderedCopy() const;
00058   virtual CoinBigIndex numberInBasis(const int * columnIsBasic) const ;
00060   virtual CoinBigIndex fillBasis(const ClpSimplex * model,
00061                                 const int * columnIsBasic, int & numberBasic,
00062                                 int * row, int * column,
00063                                 double * element) const ;
00066   virtual CoinBigIndex fillBasis(const ClpSimplex * model,
00067                                  const int * whichColumn, 
00068                                  int numberRowBasic,
00069                                  int numberColumnBasic,
00070                                  int * row, int * column,
00071                                  double * element) const ;
00076   virtual CoinBigIndex * dubiousWeights(const ClpSimplex * model,int * inputWeights) const;
00080   virtual void rangeOfElements(double & smallestNegative, double & largestNegative,
00081                        double & smallestPositive, double & largestPositive);
00084   virtual void unpack(const ClpSimplex * model,CoinIndexedVector * rowArray,
00085                    int column) const ;
00090   virtual void unpackPacked(ClpSimplex * model,
00091                             CoinIndexedVector * rowArray,
00092                             int column) const;
00095   virtual void add(const ClpSimplex * model,CoinIndexedVector * rowArray,
00096                    int column, double multiplier) const ;
00098    virtual void releaseNetworkMatrix() const { };
00100   virtual bool canDoPartialPricing() const;
00102   virtual void partialPricing(ClpSimplex * model, int start, int end,
00103                       int & bestSequence, int & numberWanted);
00105 
00111   virtual void times(double scalar,
00112                        const double * x, double * y) const;
00114   virtual void times(double scalar,
00115                      const double * x, double * y,
00116                      const double * rowScale, 
00117                      const double * columnScale) const;
00121     virtual void transposeTimes(double scalar,
00122                                 const double * x, double * y) const;
00124     virtual void transposeTimes(double scalar,
00125                                 const double * x, double * y,
00126                                 const double * rowScale, 
00127                                 const double * columnScale) const;
00132   virtual void transposeTimes(const ClpSimplex * model, double scalar,
00133                               const CoinIndexedVector * x,
00134                               CoinIndexedVector * y,
00135                               CoinIndexedVector * z) const;
00140   virtual void subsetTransposeTimes(const ClpSimplex * model,
00141                                     const CoinIndexedVector * x,
00142                                     const CoinIndexedVector * y,
00143                                     CoinIndexedVector * z) const;
00145 
00148 
00149   inline bool trueNetwork() const
00150   { return trueNetwork_;};
00152 
00153 
00157    ClpNetworkMatrix();
00159   ClpNetworkMatrix(int numberColumns, const int * head,
00160                    const int * tail);
00162    virtual ~ClpNetworkMatrix();
00164 
00168    ClpNetworkMatrix(const ClpNetworkMatrix&);
00170    ClpNetworkMatrix(const CoinPackedMatrix&);
00171 
00172    ClpNetworkMatrix& operator=(const ClpNetworkMatrix&);
00174   virtual ClpMatrixBase * clone() const ;
00176    
00177     
00178 protected:
00182 
00183   mutable double * elements_;
00184   mutable int * starts_;
00185   mutable int * lengths_;
00187   int * indices_;
00189   int numberRows_;
00191   int numberColumns_;
00193   bool trueNetwork_;
00194   
00196 };
00197 
00198 #endif

Generated on Wed Dec 3 14:37:27 2003 for CLP by doxygen 1.3.5