[SciPy-dev] Patching fmin_l_bfgs_b in scipy.optimize

Gilles Rochefort gilles.rochefort@gmail....
Tue Dec 16 18:59:58 CST 2008


I had some troubles getting a stable version of fmin_l_bfgs_b. I got a 
segmentation fault
as soon as I turned a different value than -1 to iprint argument.

As far as I understood, this iprint parameter is directly related to 
some fortran printing/writing logs.
It prints iteration, norm of gradient on screen and also in a file 
called iterate.dat .. Even recompiling
the whole stuff from lapack, atlas etc.. (using gfortran only) up to 
scipy doesn't solve the problem.

Because I definitely gave up the idea to fix the bug by recompiling,  I 
decided to patch the way python
interacts with lbfgsb fortran procedure. So, I disabled the fortran 
iprint and add some iprint functionnality
in pure python code directly in lbfgsb.py (scipy/optimize).  Doing so, I 
get rid of the useless iterate.dat file too.

While patching, I followed by adding some few things :
- an optional stopping rule based on maximum number of iterations. I 
think this is more usefull than
 the number of function evaluations because the fortran code performs a 
linesearch procedure inside the lbfgsb ones.
- a callback procedure which allows to inspect solution, criterion, and 
gradient at current iterate.

Maybe my patch should be usefull for someone,
so I decided to share it with the scipy community.


I provide two files  :
lbfgsb.py -- the full python script to put in scipy/optimize
scipy-optimize-lbfgsb-12162008.patch -- a patch file

-------------- next part --------------
A non-text attachment was scrubbed...
Name: lbfgsb.py
Type: text/x-python
Size: 10287 bytes
Desc: not available
Url : http://projects.scipy.org/pipermail/scipy-dev/attachments/20081217/411427ef/attachment-0001.py 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: scipy-optimize-lbfgs-12162008.patch
Type: text/x-patch
Size: 3466 bytes
Desc: not available
Url : http://projects.scipy.org/pipermail/scipy-dev/attachments/20081217/411427ef/attachment-0001.bin 

More information about the Scipy-dev mailing list