00001
00002
00003
00004
00005
00006 #ifndef ClpConstraintQuadratic_H
00007 #define ClpConstraintQuadratic_H
00008
00009 #include "ClpConstraint.hpp"
00010
00011
00012
00017 class ClpConstraintQuadratic : public ClpConstraint {
00018
00019 public:
00020
00022
00023
00024
00031 virtual int gradient(const ClpSimplex * model,
00032 const double * solution,
00033 double * gradient,
00034 double & functionValue ,
00035 double & offset,
00036 bool useScaling = false,
00037 bool refresh = true) const ;
00039 virtual void resize(int newNumberColumns) ;
00041 virtual void deleteSome(int numberToDelete, const int * which) ;
00043 virtual void reallyScale(const double * columnScale) ;
00047 virtual int markNonlinear(char * which) const ;
00051 virtual int markNonzero(char * which) const;
00053
00054
00056
00057
00058 ClpConstraintQuadratic();
00059
00061 ClpConstraintQuadratic(int row, int numberQuadraticColumns, int numberColumns,
00062 const CoinBigIndex * start,
00063 const int * column, const double * element);
00064
00067 ClpConstraintQuadratic(const ClpConstraintQuadratic & rhs);
00068
00070 ClpConstraintQuadratic & operator=(const ClpConstraintQuadratic& rhs);
00071
00073 virtual ~ClpConstraintQuadratic ();
00074
00076 virtual ClpConstraint * clone() const;
00078
00079
00080
00081 virtual int numberCoefficients() const;
00083 inline int numberColumns() const {
00084 return numberColumns_;
00085 }
00087 inline CoinBigIndex * start() const {
00088 return start_;
00089 }
00091 inline const int * column() const {
00092 return column_;
00093 }
00095 inline const double * coefficient() const {
00096 return coefficient_;
00097 }
00099
00100
00101
00102 private:
00105 CoinBigIndex * start_;
00107 int * column_;
00109 double * coefficient_;
00111 int numberColumns_;
00113 int numberCoefficients_;
00115 int numberQuadraticColumns_;
00117 };
00118
00119 #endif