OptBaQNewton.h
00001 #ifndef optbcnewton1_h
00002 #define optbcnewton1_h
00003
00004
00005
00006
00007
00008
00009
00010 #include "OptBCNewtonLike.h"
00011
00012 namespace OPTPP {
00013
00027 class OptBaQNewton: public OptBCNewton1Deriv {
00028
00030 double mu;
00032 double fvalue_barrier, fprev_barrier, fprev_outer;
00034 NEWMAT::ColumnVector grad_barrier, gprev_barrier;
00035
00036 public:
00043 OptBaQNewton(){strcpy(method,"Bound constrained QNewton with barrier");}
00049 OptBaQNewton(NLP1* p): OptBCNewton1Deriv(p)
00050 {strcpy(method,"Bound constrained QNewton with barrier");}
00057 OptBaQNewton(NLP1* p, UPDATEFCN u): OptBCNewton1Deriv(p, u)
00058 {strcpy(method,"Bound constrained QNewton with barrier"); }
00065 OptBaQNewton(NLP1* p, TOLS t): OptBCNewton1Deriv(p, t)
00066 {strcpy(method,"Bound constrained QNewton with barrier"); }
00067
00071 virtual ~OptBaQNewton(){}
00072
00073
00074
00075
00076 void initOpt();
00077 int checkInnerConvg(int);
00078 int checkConvg();
00079 void acceptStep(int,int);
00080 void optimize();
00081 void updateBarrierMultiplier();
00082 NEWMAT::SymmetricMatrix updateH(NEWMAT::SymmetricMatrix& H, int k);
00083 double compute_Barrier_Fvalue(double,NEWMAT::ColumnVector&);
00084 NEWMAT::ColumnVector compute_Barrier_Gradient(NEWMAT::ColumnVector&,
00085 NEWMAT::ColumnVector&);
00086 NEWMAT::SymmetricMatrix compute_Barrier_Hessian(NEWMAT::SymmetricMatrix&,
00087 NEWMAT::ColumnVector&);
00088 NEWMAT::ColumnVector computeSearch2(NEWMAT::SymmetricMatrix&,
00089 NEWMAT::ColumnVector&);
00090 int computeStep(NEWMAT::ColumnVector );
00091 double computeMaxStep(NEWMAT::ColumnVector &);
00092 double scalarNewton(double,double,double,double,double);
00093 void setAsideCurrentVariables();
00094 };
00095
00096 }
00097
00098 #endif