00001
00002
00003
00004
00005 #ifndef QPBOUNDDATA_H
00006 #define QPBOUNDDATA_H
00007
00008 #include "Data.h"
00009
00010 #include "DoubleMatrixHandle.h"
00011 #include "OoqpVectorHandle.h"
00012 #include "OoqpVector.h"
00013
00014
00015 class QpBound;
00016 class MpsReader;
00017
00024 class QpBoundData : public Data
00025 {
00026
00027 private:
00028 QpBoundData() {};
00029 protected:
00030 QpBound * factory;
00031
00033 int nx;
00034
00036 int nlower;
00037
00039 int nupper;
00040
00042 SymMatrixHandle mQ;
00043
00045 double alpha;
00046
00048 OoqpVectorHandle c;
00049
00051 OoqpVectorHandle lower;
00052
00054 OoqpVectorHandle upper;
00055
00058 OoqpVectorHandle index_lower;
00059
00062 OoqpVectorHandle index_upper;
00063
00064 public:
00065
00066 QpBoundData( QpBound * f, SymMatrix * Q, int n_in );
00067
00072 QpBoundData( QpBound * f, double alpha,
00073 OoqpVector * g, SymMatrix * Q,
00074 OoqpVector * l, OoqpVector * index_lower_,
00075 OoqpVector * u, OoqpVector * index_upper_ );
00076 virtual ~QpBoundData();
00077
00078
00080 virtual double objectiveValue( Variables * vars );
00081
00085 virtual void putQIntoAt( SymMatrix& M, int row, int col );
00086
00090 virtual void putQIntoAt( GenMatrix& M, int row, int col );
00091
00094 virtual void Qmult( double beta, OoqpVector& y,
00095 double alpha, OoqpVector& x );
00096
00098 virtual int getN();
00099
00101 virtual int getNlower();
00102
00104 virtual int getNupper();
00105
00107 virtual void getg ( OoqpVector& c );
00108
00110 virtual void getl ( OoqpVector& l );
00111
00113 virtual void getu ( OoqpVector& u );
00114
00115 virtual double datanorm();
00116
00117 virtual void datainput() { };
00118
00120 virtual void datainput(MpsReader * reader, int& ierr );
00121
00123 virtual void datarandom();
00124
00126 virtual void print();
00127
00129 OoqpVector * getIndexLower() { return SpAsPointer(index_lower); };
00130
00132 OoqpVector * getIndexUpper() { return SpAsPointer(index_upper); };
00133
00134 };
00135
00136 #endif