Go to the documentation of this file.00001
00002
00003
00004 #ifndef ClpPdcoBase_H
00005 #define ClpPdcoBase_H
00006
00007 #include "CoinPragma.hpp"
00008
00009 #include "CoinPackedMatrix.hpp"
00010 #include "CoinDenseVector.hpp"
00011 class ClpInterior;
00012
00023 class ClpPdcoBase {
00024
00025 public:
00028 virtual void matVecMult(ClpInterior * model, int mode, double * x, double * y) const=0;
00029
00030 virtual void getGrad(ClpInterior * model, CoinDenseVector<double> &x, CoinDenseVector<double> &grad) const=0;
00031
00032 virtual void getHessian(ClpInterior * model, CoinDenseVector<double> &x, CoinDenseVector<double> &H) const=0;
00033
00034 virtual double getObj(ClpInterior * model, CoinDenseVector<double> &x) const=0;
00035
00036 virtual void matPrecon(ClpInterior * model, double delta, double * x, double * y) const = 0;
00037
00039
00040
00041
00042 virtual ClpPdcoBase * clone() const = 0;
00044 inline int type() const
00045 { return type_;};
00047 inline void setType(int type) {type_=type;};
00049 inline int sizeD1() const
00050 { return 1;};
00052 inline double getD1() const
00053 { return d1_;};
00055 inline int sizeD2() const
00056 { return 1;};
00058 inline double getD2() const
00059 { return d2_;};
00061
00062
00063 protected:
00064
00070 ClpPdcoBase();
00072 public:
00073 virtual ~ClpPdcoBase();
00074 protected:
00075
00076 ClpPdcoBase(const ClpPdcoBase&);
00077
00078 ClpPdcoBase& operator=(const ClpPdcoBase&);
00080
00081
00082 protected:
00086
00087 double d1_;
00088 double d2_;
00090 int type_;
00092 };
00093
00094 #endif