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


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


Input Parameters#

Output Parameters#

  • x - On input the current solution, on output x contains the new solution determined by the line search

  • f - On input the objective function value at current solution, on output contains the objective function value at new solution

  • g - On input the gradient evaluated at x, on output contains the gradient at new solution

  • steplength - scalar multiplier of s used ( x = x0 + steplength * x)

  • reason - TaoLineSearchConvergedReason reason why the line-search stopped


The algorithm developer must set up the TaoLineSearch with calls to TaoLineSearchSetObjectiveRoutine() and TaoLineSearchSetGradientRoutine(), TaoLineSearchSetObjectiveAndGradientRoutine(), or TaoLineSearchUseTaoRoutines(). The latter is done automatically by default and thus requires no user input.

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.

See Also#

TAO: Optimization Solvers, Tao, TaoLineSearchConvergedReason, TaoLineSearch, TaoLineSearchCreate(), TaoLineSearchSetType(), TaoLineSearchSetInitialStepLength(), TaoAddLineSearchCounts()






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