OptBCQNewton.h
00001 #ifndef OptBCQNewton_h
00002 #define OptBCQNewton_h
00003
00004
00005
00006
00007
00008
00009 #include "OptBCNewtonLike.h"
00010
00011 using std::cerr;
00012
00013 namespace OPTPP {
00014
00025 class OptBCQNewton: public OptBCNewton1Deriv {
00026 protected:
00027 int nactive;
00028 NEWMAT::ColumnVector work_set;
00029
00030 public:
00037 OptBCQNewton():
00038 OptBCNewton1Deriv(), nactive(0), work_set(0)
00039 { cerr << "OptBCQNewton :: instantiation \n";
00040 strcpy(method,"Bound constrained Quasi-Newton"); work_set = false; }
00046 OptBCQNewton(NLP1* p):
00047 OptBCNewton1Deriv(p), nactive(0), work_set(p->getDim())
00048 { strcpy(method,"Bound constrained Quasi-Newton"); work_set = false; }
00055 OptBCQNewton(NLP1* p, UPDATEFCN u):
00056 OptBCNewton1Deriv(p, u), nactive(0), work_set(p->getDim())
00057 { strcpy(method,"Bound constrained Quasi-Newton"); work_set = false; }
00064 OptBCQNewton(NLP1* p, TOLS t):
00065 OptBCNewton1Deriv(p, t), nactive(0), work_set(p->getDim())
00066 { strcpy(method,"Bound constrained Quasi-Newton"); work_set = false; }
00067
00071 virtual ~OptBCQNewton(){;}
00072
00073
00074
00075
00076
00077 virtual int checkConvg();
00078 virtual int checkDeriv();
00079 virtual void initHessian();
00080 virtual void initOpt();
00081 virtual void printStatus(char *);
00082 virtual real stepTolNorm() const;
00083 NEWMAT::SymmetricMatrix updateH(NEWMAT::SymmetricMatrix& H, int k);
00084 double computeMaxStep(NEWMAT::ColumnVector&);
00085 NEWMAT::ColumnVector computeSearch(NEWMAT::SymmetricMatrix &);
00086 int updateConstraints(int);
00087 virtual void reset();
00088
00089 };
00090
00091 }
00092 #endif