petsc-3.14.6 2021-03-30
Report Typos and Errors

TaoLineSearchApply

Performs a line-search in a given step direction. Criteria for acceptable step length depends on the line-search algorithm chosen

Synopsis

#include "petsctaolinesearch.h" 
PetscErrorCode TaoLineSearchApply(TaoLineSearch ls, Vec x, PetscReal *f, Vec g, Vec s, PetscReal *steplength, TaoLineSearchConvergedReason *reason)
Collective on TaoLineSearch

Input Parameters

ls - the Tao context
x - The current solution (on output x contains the new solution determined by the line search)
f - objective function value at current solution (on output contains the objective function value at new solution)
g - gradient evaluated at x (on output contains the gradient at new solution)
s - search direction

Output Parameters

x - new solution
f - objective function value at x
g - gradient vector at x
steplength - scalar multiplier of s used ( x = x0 + steplength * x)
reason - reason why the line-search stopped

reason will be set to one of

TAOLINESEARCH_FAILED_ASCENT - initial line search step * g is not descent direction
TAOLINESEARCH_FAILED_INFORNAN - function evaluation gives Inf or Nan value
TAOLINESEARCH_FAILED_BADPARAMETER - negative value set as parameter
TAOLINESEARCH_HALTED_MAXFCN - maximum number of function evaluation reached
TAOLINESEARCH_HALTED_UPPERBOUND - step is at upper bound
TAOLINESEARCH_HALTED_LOWERBOUND - step is at lower bound
TAOLINESEARCH_HALTED_RTOL - range of uncertainty is smaller than given tolerance
TAOLINESEARCH_HALTED_USER - user can set this reason to stop line search
TAOLINESEARCH_HALTED_OTHER - any other reason
TAOLINESEARCH_SUCCESS - successful line search

Note

The algorithm developer must set up the TaoLineSearch with calls to TaoLineSearchSetObjectiveRoutine() and TaoLineSearchSetGradientRoutine(), TaoLineSearchSetObjectiveAndGradientRoutine(), or TaoLineSearchUseTaoRoutines()

Note

You may or may not need to follow this with a call to TaoAddLineSearchCounts(), depending on whether you want these evaluations to count toward the total function/gradient evaluations.

.seealso: TaoLineSearchCreate(), TaoLineSearchSetType(), TaoLineSearchSetInitialStepLength(), TaoAddLineSearchCounts()

Level

beginner

Location

src/tao/linesearch/interface/taolinesearch.c

Implementations

TaoLineSearchApply_Armijo in src/tao/linesearch/impls/armijo/armijo.c
TaoLineSearchApply_GPCG in src/tao/linesearch/impls/gpcglinesearch/gpcglinesearch.c
TaoLineSearchApply_MT in src/tao/linesearch/impls/morethuente/morethuente.c
TaoLineSearchApply_OWArmijo in src/tao/linesearch/impls/owarmijo/owarmijo.c
TaoLineSearchApply_Unit in src/tao/linesearch/impls/unit/unit.c

Index of all TaoLineSearch routines
Table of Contents for all manual pages
Index of all manual pages