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

/home/coinadmin/Update/COIN/Clp/include/ClpPlusMinusOneMatrix.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2003, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef ClpPlusMinusOneMatrix_H
00004 #define ClpPlusMinusOneMatrix_H
00005 
00006 
00007 #include "CoinPragma.hpp"
00008 
00009 #include "ClpMatrixBase.hpp"
00010 
00015 class ClpPlusMinusOneMatrix : public ClpMatrixBase {
00016   
00017 public:
00020 
00021    virtual CoinPackedMatrix * getPackedMatrix() const;
00023   virtual bool isColOrdered() const ;
00025   virtual  CoinBigIndex getNumElements() const; 
00027    virtual int getNumCols() const { return numberColumns_; }
00029   virtual int getNumRows() const { return numberRows_; };
00030 
00035   virtual const double * getElements() const; 
00041   virtual const int * getIndices() const
00042   { return indices_;};
00043 
00044   virtual const CoinBigIndex * getVectorStarts() const;
00046   virtual const int * getVectorLengths() const;
00047 
00049   virtual void deleteCols(const int numDel, const int * indDel);
00051   virtual void deleteRows(const int numDel, const int * indDel);
00053   virtual void appendCols(int number, const CoinPackedVectorBase * const * columns);
00055   virtual void appendRows(int number, const CoinPackedVectorBase * const * rows);
00057   virtual ClpMatrixBase * reverseOrderedCopy() const;
00060   virtual CoinBigIndex fillBasis(ClpSimplex * model,
00061                                  const int * whichColumn, 
00062                                  int numberRowBasic,
00063                                  int & numberColumnBasic,
00064                                  int * row, int * column,
00065                                  double * element) ;
00070   virtual CoinBigIndex * dubiousWeights(const ClpSimplex * model,int * inputWeights) const;
00074   virtual void rangeOfElements(double & smallestNegative, double & largestNegative,
00075                        double & smallestPositive, double & largestPositive);
00078   virtual void unpack(const ClpSimplex * model,CoinIndexedVector * rowArray,
00079                    int column) const ;
00084   virtual void unpackPacked(ClpSimplex * model,
00085                             CoinIndexedVector * rowArray,
00086                             int column) const;
00089   virtual void add(const ClpSimplex * model,CoinIndexedVector * rowArray,
00090                    int column, double multiplier) const ;
00092   virtual void add(const ClpSimplex * model,double * array,
00093                    int column, double multiplier) const;
00095    virtual void releasePackedMatrix() const;
00097 
00103   virtual void times(double scalar,
00104                        const double * x, double * y) const;
00106   virtual void times(double scalar,
00107                      const double * x, double * y,
00108                      const double * rowScale, 
00109                      const double * columnScale) const;
00113     virtual void transposeTimes(double scalar,
00114                                 const double * x, double * y) const;
00116     virtual void transposeTimes(double scalar,
00117                                 const double * x, double * y,
00118                                 const double * rowScale, 
00119                                 const double * columnScale) const;
00124   virtual void transposeTimes(const ClpSimplex * model, double scalar,
00125                               const CoinIndexedVector * x,
00126                               CoinIndexedVector * y,
00127                               CoinIndexedVector * z) const;
00133   virtual void transposeTimesByRow(const ClpSimplex * model, double scalar,
00134                               const CoinIndexedVector * x,
00135                               CoinIndexedVector * y,
00136                               CoinIndexedVector * z) const;
00141   virtual void subsetTransposeTimes(const ClpSimplex * model,
00142                                     const CoinIndexedVector * x,
00143                                     const CoinIndexedVector * y,
00144                                     CoinIndexedVector * z) const;
00146 
00149 
00150   inline CoinBigIndex * startPositive() const
00151   { return startPositive_;};
00153   inline CoinBigIndex * startNegative() const
00154   { return startNegative_;};
00156 
00157 
00161    ClpPlusMinusOneMatrix();
00163    virtual ~ClpPlusMinusOneMatrix();
00165 
00169    ClpPlusMinusOneMatrix(const ClpPlusMinusOneMatrix&);
00171    ClpPlusMinusOneMatrix(const CoinPackedMatrix&);
00173   ClpPlusMinusOneMatrix(int numberRows, int numberColumns,
00174                         bool columnOrdered, const int * indices,
00175                         const CoinBigIndex * startPositive, const CoinBigIndex * startNegative);
00178   ClpPlusMinusOneMatrix (const ClpPlusMinusOneMatrix & wholeModel,
00179                     int numberRows, const int * whichRows,
00180                     int numberColumns, const int * whichColumns);
00181 
00182    ClpPlusMinusOneMatrix& operator=(const ClpPlusMinusOneMatrix&);
00184   virtual ClpMatrixBase * clone() const ;
00187   virtual ClpMatrixBase * subsetClone (
00188                     int numberRows, const int * whichRows,
00189                     int numberColumns, const int * whichColumns) const ;
00191   void passInCopy(int numberRows, int numberColumns,
00192                   bool columnOrdered, int * indices,
00193                   CoinBigIndex * startPositive, CoinBigIndex * startNegative);
00195   virtual bool canDoPartialPricing() const;
00197   virtual void partialPricing(ClpSimplex * model, double start, double end,
00198                       int & bestSequence, int & numberWanted);
00200    
00201     
00202 protected:
00206 
00207   mutable double * elements_;
00208   mutable int * lengths_;
00210   CoinBigIndex * startPositive_;
00212   CoinBigIndex * startNegative_;
00214   int * indices_;
00216   int numberRows_;
00218   int numberColumns_;
00220   bool columnOrdered_;
00221   
00223 };
00224 
00225 #endif

Generated on Fri Aug 6 02:01:32 2004 by doxygen1.3-rc2