00001
00002
00003 #ifndef ClpQuadraticObjective_H
00004 #define ClpQuadraticObjective_H
00005
00006 #include "ClpObjective.hpp"
00007 #include "CoinPackedMatrix.hpp"
00008
00009
00010
00015 class ClpQuadraticObjective : public ClpObjective {
00016
00017 public:
00018
00020
00021
00026 virtual double * gradient(const double * solution, double & offset,bool refresh);
00028 virtual void resize(int newNumberColumns) ;
00030 virtual void deleteSome(int numberToDelete, const int * which) ;
00031
00033
00034
00036
00037
00038 ClpQuadraticObjective();
00039
00041 ClpQuadraticObjective(const double * linearObjective, int numberColumns,
00042 const CoinBigIndex * start,
00043 const int * column, const double * element,
00044 int numberExtendedColumns_=-1);
00045
00047 ClpQuadraticObjective(const ClpQuadraticObjective &);
00051 ClpQuadraticObjective (const ClpQuadraticObjective &rhs,int numberColumns,
00052 const int * whichColumns) ;
00053
00055 ClpQuadraticObjective & operator=(const ClpQuadraticObjective& rhs);
00056
00058 virtual ~ClpQuadraticObjective ();
00059
00061 virtual ClpObjective * clone() const;
00065 virtual ClpObjective * subsetClone (int numberColumns,
00066 const int * whichColumns) const;
00067
00069 void loadQuadraticObjective(const int numberColumns,
00070 const CoinBigIndex * start,
00071 const int * column, const double * element,
00072 int numberExtendedColumns=-1);
00073 void loadQuadraticObjective ( const CoinPackedMatrix& matrix);
00075 void deleteQuadraticObjective();
00077
00078
00079
00080 inline CoinPackedMatrix * quadraticObjective() const { return quadraticObjective_; }
00082 inline double * linearObjective() const { return objective_; }
00084 inline int numberExtendedColumns() const
00085 {return numberExtendedColumns_;};
00087 inline int numberColumns() const
00088 {return numberColumns_;};
00090
00091
00092
00093 private:
00096 CoinPackedMatrix * quadraticObjective_;
00098 double * objective_;
00100 double * gradient_;
00102 int numberColumns_;
00104 int numberExtendedColumns_;
00106 };
00107
00108 #endif