Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

NlpIotrLineSearch.hh

00001 #ifndef NLPIOTRLINESEARCH
00002 #define NLPIOTRLINESEARCH
00003 
00004 class NlpResiduals;
00005 class NlpIterate;
00006 class NlpBounds;
00007 class Nlp;
00008 
00009 #include "IotrHandle.hh"
00010 #include "IotrRefCount.hh"
00011 #include "IotrVector.hh"
00012 #include "NlpLinsys.hh"
00013 #include "NlpLinsysDiag.hh"
00014 #include "NlpLinsysSol.hh"
00015 #include "NlpIotrMerit.hh"
00016 #include "NlpResiduals.hh"
00017 #include "Nlp.hh"
00018 
00019 class NlpValues;
00020 class NlpGrads;
00021 class NlpHessian;
00022 
00023 typedef Handle<NlpValues>  NlpValuesHandle;
00024 typedef Handle<NlpGrads>   NlpGradsHandle;
00025 typedef Handle<NlpHessian>   NlpHessianHandle;
00026 typedef Handle<NlpLinsys> NlpLinsysHandle;
00027 typedef Handle<NlpLinsysDiag> NlpLinsysDiagHandle;
00028 typedef Handle<NlpLinsysSol> NlpLinsysSolHandle;
00029 typedef Handle<NlpIotrMerit> NlpIotrMeritHandle;
00030 typedef Handle<NlpIterate>  NlpIterateHandle;
00031 
00036 class NlpIotrLineSearch : public IotrRefCount {
00037 protected:
00038   NlpValuesHandle     mValues;
00039   NlpGradsHandle      mGrads;
00040   NlpHessianHandle    mHessian;
00041   NlpLinsysHandle     mLinsys;
00042   NlpLinsysDiagHandle mDiag;
00043   NlpLinsysSolHandle  mSol;
00044   NlpIotrMeritHandle  mMerit;
00045 
00046   double mSigma, mElipNorm, mMinValue;
00047 public:
00048   NlpIotrLineSearch( NlpValues * values,
00049                      NlpGrads * grads,
00050                      NlpHessian * hess, NlpLinsys * linsys,
00051                      NlpLinsysDiag * diag, NlpLinsysSol * sol,
00052                      NlpIotrMerit * merit );
00053 
00054   double sigma()    { return mSigma; }
00055   double elipNorm() { return mElipNorm; }
00056   double minValue() { return mMinValue; }
00057 
00058 
00059   virtual void slvScaledKkt(NlpBounds &bounds);
00060   virtual void slvScaledMrt(NlpLinsysSol &sol, NlpIterate &vars,
00061                             NlpBounds & bounds);
00062   virtual void shiftedNewtonKkt( NlpIterate &  step, NlpIterate & vars,
00063                                  NlpResiduals & resid, NlpBounds    & bounds,
00064                                  double shift );
00065 
00066   virtual void shiftedNewtonMerit(NlpIterate &  step, NlpIterate & vars,
00067                                   NlpResiduals & resid, NlpBounds    & bounds,
00068                                   double shift );
00069 
00070   virtual double approxNull( NlpLinsysSol &zsol, NlpIterate &vars,
00071                              NlpBounds & bounds );
00072 
00073   virtual double lineSearch( NlpValues &vals,
00074                              NlpIterate &vars, NlpLinsysSol &sol,
00075                              NlpResiduals &resids, NlpResidualShift & rshift,
00076                              NlpBounds &bounds, Nlp &nlp,
00077                              double delMq,
00078                              int maxls,
00079                              double tau, int lsfail );
00080 
00081 };
00082 
00083 typedef Handle<NlpIotrLineSearch>  NlpIotrLineSearchHandle;
00084 
00085 #endif

Generated on Wed Aug 27 10:03:41 2003 for iotr by doxygen1.2.18