OptDHNIPS.h
00001 #ifndef OptDHNIPS_h
00002 #define OptDHNIPS_h
00003
00004 #ifndef OptNIPSLike_h
00005 #include "OptNIPSLike.h"
00006 #endif
00007
00008 #include "OptppArray.h"
00009
00010 namespace OPTPP {
00011
00022 class OptDHNIPS: public OptNIPSLike {
00023 private:
00024 NLP2* nlp;
00025
00026 protected:
00027 OptppArray<NEWMAT::SymmetricMatrix> HCk_;
00028 OptppArray<int> indices;
00029
00033 NLP2* nlprob2() const {return nlp;}
00037 NLP1* nlprob() const {return nlp;}
00038
00039
00040 public:
00041
00048 OptDHNIPS(): OptNIPSLike(), nlp(0), HCk_(0), indices(0)
00049 {strcpy(method,"Nonlinear Interior-Point Method w/ Disaggregated Hessian");}
00053 OptDHNIPS(NLP2* p): OptNIPSLike(p->getDim()), nlp(p),
00054 HCk_(0), indices(0)
00055 {strcpy(method,"Nonlinear Interior-Point Method w/ Disaggregated Hessian");}
00060 OptDHNIPS(NLP2* p, UPDATEFCN u): OptNIPSLike(p->getDim(),u), nlp(p),
00061 HCk_(0), indices(0)
00062 {strcpy(method,"Nonlinear Interior-Point Method w/ Disaggregated Hessian");}
00067 OptDHNIPS(NLP2* p, TOLS t): OptNIPSLike(p->getDim(),t), nlp(p),
00068 HCk_(0), indices(0)
00069 {strcpy(method,"Nonlinear Interior-Point Method w/ Disaggregated Hessian");}
00070
00074 virtual ~OptDHNIPS(){}
00075
00079 OptppArray<NEWMAT::SymmetricMatrix> getConstraintHessian() const { return HCk_;}
00080
00085 void nonLinearConstraintIndices(const NEWMAT::ColumnVector& types);
00086
00088 virtual void reset();
00090 virtual void initHessian();
00092 virtual NEWMAT::SymmetricMatrix updateH(NEWMAT::SymmetricMatrix& H, int k);
00094 virtual void printStatus(char *s);
00095 };
00096
00097 }
00098 #endif