#include <F_PR_CgNonLS.hpp>
Inheritance diagram for F_PR_CgNonLS:
Purpose: Nonlinear Polack-Ribiere Conjugate Gradient It's use ensure: - descent directions, - global convergence is not always ensured. (problem with Zoutendijk conditions) - supports only strong wolf conditions - FR stagnation is avoided :-) - Still suffer from important STICKING, (sleepering from obliged restarts) :-( Polack-Ribiere are not perfect but very popular, Today. Newer Dai-Yuan NCGs are more general and have much better properties. Papers: "An Introduction to the Conjugate Gradient Method Without the Agonizing Pain", J. R. Shewchuk, Tutorial August 4, 1994, School of Computer Science, Carnegie Mellon University. "Course Notes for MS4327 Optimisation", J. Kinsella, course March 30, 2004, University of ?. "Unconstrained Optimization" P.E. Frandsen, K. Jonasson, H.B. Nielsen O. Tingleff, Lecture 23/8/1999, Dep. of Mathematical Modeling, Technical University of Lyngby, Denmark. Proposed extention for nonconvex functions: "A Global Convergent Version of the Polak-Ribiere Conjugate-Gradient Method", L. Grippo, S. Lucidi, Report 08-95 June 1995, University of Roma, Italy. Application to FAS multigrid case: "A Multigrid Algorithm for Nonlinear Monotone Elliptic Problems.", R. Bermejo, J.-A. Infante, Report 1994, Dep. of Math., University of Madrid, Spain.
Public Methods | |
F_PR_CgNonLS (int maxIterations, double epsilon=1.0e-4) | |
virtual | ~F_PR_CgNonLS () |
virtual FloatVector * | solve (AbsFObjectiveFn *fn, FloatVector *x=0) |
Protected Methods | |
virtual FloatVector * | singleSolve (AbsFObjectiveFn *fn, FloatVector *x=0) |
Private Attributes | |
double | alpha |
double | beta |
FloatVector * | r |
FloatVector * | d |
bool | precondFlag |
FloatVector * | s |
double | delta0 |
double | deltaNew |
double | deltaOld |