[SciPy-user] [SciPy-dev] question about scipy.optimize.line_search

Dominique Orban dominique.orban at gmail.com
Thu Jun 28 17:00:30 EDT 2007


Alan G Isaac wrote:
> On Thu, 28 Jun 2007, Dmitrey apparently wrote: 
> 
>>help(line_search) yields 
>>-------------------------------------------------------------------- 
>>line_search(f, myfprime, xk, pk, gfk, old_fval, old_old_fval, args=(), 
>>c1=0.0001, c2=0.90000000000000002, amax=50) 
>>    Find alpha that satisfies strong Wolfe conditions. 
>>    Uses the line search algorithm to enforce strong Wolfe conditions 
>>    Wright and Nocedal, 'Numerical Optimization', 1999, pg. 59-60 
>>    For the zoom phase it uses an algorithm by 
>>    Outputs: (alpha0, gc, fc) 
>>-------------------------------------------------------------------- 
>>So I need to know what are other args, especially gfk (is it a gradient 
>>in point xk?), old_fval, old_old_fval (I guess I know what do c1 & c2 mean) 

> 
> This is certainly lacking documentation!  A little is here:
> http://docs.neuroinf.de/api/scipy/scipy.optimize.optimize-pysrc.html#line_search
> Can anyone help Dmitrey more?

Each iteration of a linesearch procedure to satisfy the strong Wolfe 
conditions requires an evaluation of f and of its gradient. I have no 
idea who coded this and I don't have the book handy this moment, but I 
would guess gk is the gradient of the objective at the current trial 
point. No clue about the old_val and old_old_val (doesn't look like my 
dream programming style).

Enforcing the strong-Wolfe conditions is not an easy task, is a 
sensitive process, and the algorithm presented in the book is certainly 
simplified as much as possible for clarity of exposition. For more 
robust software, you would be better off using the implementation of 
More and Thuente

Moré, J. J. and Thuente, D. J. 1994. Line search algorithms with 
guaranteed sufficient decrease. ACM Trans. Math. Softw. 20, 3 (Sep. 
1994), 286-307. DOI= http://doi.acm.org/10.1145/192115.192132

This is Fortran software which you could interface. I did the job in 
NLPy (http://nlpy.sf.net). You should be able to reuse my interface.

Dominique



More information about the SciPy-User mailing list