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_;
00046 };
00048 inline void setType(int type) {
00049 type_ = type;
00050 };
00052 inline int sizeD1() const {
00053 return 1;
00054 };
00056 inline double getD1() const {
00057 return d1_;
00058 };
00060 inline int sizeD2() const {
00061 return 1;
00062 };
00064 inline double getD2() const {
00065 return d2_;
00066 };
00068
00069
00070 protected:
00071
00077 ClpPdcoBase();
00079 public:
00080 virtual ~ClpPdcoBase();
00081 protected:
00082
00083 ClpPdcoBase(const ClpPdcoBase&);
00084
00085 ClpPdcoBase& operator=(const ClpPdcoBase&);
00087
00088
00089 protected:
00093
00094 double d1_;
00095 double d2_;
00097 int type_;
00099 };
00100
00101 #endif