OptBCNewton.h
00001 #ifndef OptBCNewton_h
00002 #define OptBCNewton_h
00003
00004
00005
00006
00007
00008
00009 #include "OptBCNewtonLike.h"
00010
00011 using std::cerr;
00012
00013 namespace OPTPP {
00014
00025 class OptBCNewton: public OptBCNewton2Deriv {
00026 protected:
00028 int nactive;
00030 NEWMAT::ColumnVector work_set;
00031
00032 public:
00039 OptBCNewton():
00040 OptBCNewton2Deriv(), nactive(0), work_set(0)
00041 { cerr << "OptBCNewton :: instantiation \n";
00042 strcpy(method,"Bound constrained Newton");
00043 }
00044
00050 OptBCNewton(NLP2* p):
00051 OptBCNewton2Deriv(p), nactive(0), work_set(p->getDim())
00052 { strcpy(method,"Bound constrained Newton"); work_set = false; }
00053
00060 OptBCNewton(NLP2* p, UPDATEFCN u):
00061 OptBCNewton2Deriv(p, u), nactive(0), work_set(p->getDim())
00062 { strcpy(method,"Bound constrained Newton"); work_set = false; }
00063
00070 OptBCNewton(NLP2* p, TOLS t):
00071 OptBCNewton2Deriv(p, t), nactive(0), work_set(p->getDim())
00072 { strcpy(method,"Bound constrained Newton"); work_set = false; }
00073
00074
00075
00076
00077 virtual ~OptBCNewton(){;}
00078
00079
00080
00081
00082 virtual int checkConvg();
00083 virtual int checkDeriv();
00084 virtual void initHessian();
00085 virtual void initOpt();
00086 virtual void printStatus(char *);
00087 virtual real stepTolNorm() const;
00088 NEWMAT::SymmetricMatrix updateH(NEWMAT::SymmetricMatrix& H, int k);
00089 double computeMaxStep(NEWMAT::ColumnVector&);
00090 NEWMAT::ColumnVector computeSearch(NEWMAT::SymmetricMatrix &);
00091 int updateConstraints(int);
00092 virtual void reset();
00093
00094 protected:
00095
00096 };
00097
00098 }
00099
00100 #endif