OptBaQNewton.h

00001 #ifndef optbcnewton1_h
00002 #define optbcnewton1_h
00003 
00004 /*----------------------------------------------------------------------
00005  Copyright (c) 2001, Sandia Corporation.
00006  J.C. Meza, Sandia National Laboratories, meza@ca.sandia.gov
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 // These are defined elsewhere
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 } // namespace OPTPP
00097 
00098 #endif
Generated on Mon Jan 24 12:04:37 2011 for FASTlib by  doxygen 1.6.3