#include <NOX_LineSearch_MoreThuente.H>
Inheritance diagram for NOX::LineSearch::MoreThuente:
Public Member Functions | |
| MoreThuente (const NOX::Utils &u, NOX::Parameter::List ¶ms) | |
| Constructor. | |
| ~MoreThuente () | |
| Destructor. | |
| bool | reset (NOX::Parameter::List ¶ms) |
| Reset parameters. | |
| bool | compute (NOX::Abstract::Group &newgrp, double &step, const NOX::Abstract::Vector &dir, const NOX::Solver::Generic &s) |
| Perform a line search. | |
This code is based on the More'-Thuente line search from the 1983 MINPACK Project. More specifically, this code is based on Dianne O'Leary's 1991 Matlab-implementation of the More'-Thuente line search. The original comments are preserved in the descriptions of the individual subroutines. What follows is an updated summary.
The merit function we are minimizing is given by
(alternatively the user can define this)
The purpose of the More'-Thuente line search is to find a step which satisfies a sufficient decrease condition and a curvature condition. At each stage the subroutine updates an interval of uncertainty with endpoints stx and sty. The interval of uncertainty is initially chosen so that it contains a minimizer of the modified function
If a step is obtained for which the modified function has a nonpositive function value and nonnegative derivative, then the interval of uncertainty is chosen so that it contains a minimizer of
.
The algorithm is designed to find a step which satisfies one of two sufficient decrease conditions:
(1) Armijo-Goldstein Condition
or
(2) Ared/Pred Condtition
and the curvature condition
If ftol is less than gtol and if, for example, the function is bounded below, then there is always a step which satisfies both conditions. If no step can be found which satisfies both conditions, then the algorithm usually stops when rounding errors prevent further progress. In this case stp only satisfies the sufficient decrease condition.
Modifications from NOX::LineSearch::MoreThuente
1. Added the option to use Ared/Pred conditions as describe in Homer Walker's papers. 2. Added support to use an adjustable forcing term as describe in Homer Walker's papers. 3. Added the option to use directional derivatives in computing the slope instead of explicitly computing the Jacobian. This eliminates the need to recompute the Jacobian at each inner iteration of the More'-Thuente algorithm. 4. Added the ability to use the NOX::Parameter::UserNorm and NOX::Parameter::MeritFunction objects to supply user defined norms and merit functions to the line search.
Implementation
This line search can be called via NOX::LineSearch::Manager.
This line search is used if "More'-Thuente2" is the "Method" in the "Line Search" sublist. (See NOX::LineSearch::Manager for details.)
The following parameters can be specified for this line search in the "More'-Thuente2" sublist of the "Line Search" sublist:
where
is the linear solve tolerance in the inexact Newton method.
is estimated using a directional derivative in a call to NOX::LineSearch::Common::computeSlopeWithOutJac. If false the slope computation is computed with the NOX::LineSearch::Common::computeSlope method. Setting this to true eliminates having to compute the Jacobian at each inner iteration of the More'-Thuente line search (defaults to false).
Output Parameters
A sublist for output parameters will be created called "Output" in the parameter list used to instantiate or reset the class. Valid output parameters are:
).
performed by this object.
|
||||||||||||||||||||
|
Perform a line search. Let
In the end, we should have computed
Ideally, Implements NOX::LineSearch::Generic. |
1.3.9.1