Skip to main content
`Ctrl`+`K`

# 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

## Input Parameters

- ls - the `TaoLineSearch` context

- s - search direction

## 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

## Notes

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()`

## Level

advanced

## 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