Re: [SciPy-user] [SciPy-dev] question about scipy.optimize.line_search
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_se... Can anyone help Dmitrey more? Thank you, Alan Isaac
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_se... 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
I already told dmitrey, but I say it on list. My optimizers have several choice for line searches, including strong Wolfe Powell rules. Matthieu 2007/6/28, Dominique Orban <dominique.orban@gmail.com>:
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_se...
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 _______________________________________________ SciPy-user mailing list SciPy-user@scipy.org http://projects.scipy.org/mailman/listinfo/scipy-user
participants (3)
-
Alan G Isaac -
Dominique Orban -
Matthieu Brucher