scipy.optimize.line_search¶
-
scipy.optimize.
line_search
(f, myfprime, xk, pk, gfk=None, old_fval=None, old_old_fval=None, args=(), c1=0.0001, c2=0.9, amax=50)[source]¶ Find alpha that satisfies strong Wolfe conditions.
Parameters: f : callable f(x,*args)
Objective function.
myfprime : callable f’(x,*args)
Objective function gradient.
xk : ndarray
Starting point.
pk : ndarray
Search direction.
gfk : ndarray, optional
Gradient value for x=xk (xk being the current parameter estimate). Will be recomputed if omitted.
old_fval : float, optional
Function value for x=xk. Will be recomputed if omitted.
old_old_fval : float, optional
Function value for the point preceding x=xk
args : tuple, optional
Additional arguments passed to objective function.
c1 : float, optional
Parameter for Armijo condition rule.
c2 : float, optional
Parameter for curvature condition rule.
amax : float, optional
Maximum step size
Returns: alpha : float or None
Alpha for which
x_new = x0 + alpha * pk
, or None if the line search algorithm did not converge.fc : int
Number of function evaluations made.
gc : int
Number of gradient evaluations made.
new_fval : float or None
New function value
f(x_new)=f(x0+alpha*pk)
, or None if the line search algorithm did not converge.old_fval : float
Old function value
f(x0)
.new_slope : float or None
The local slope along the search direction at the new value
<myfprime(x_new), pk>
, or None if the line search algorithm did not converge.Notes
Uses the line search algorithm to enforce strong Wolfe conditions. See Wright and Nocedal, ‘Numerical Optimization’, 1999, pg. 59-60.
For the zoom phase it uses an algorithm by [...].