[SciPy-user] optimize.fmin_l_bfgs_b problem

Nils Wagner nwagner@iam.uni-stuttgart...
Wed Jun 11 15:05:10 CDT 2008


On Wed, 11 Jun 2008 22:00:05 +0200
  Marek Wojciechowski <mwojc@p.lodz.pl> wrote:
> Nils Wagner wrote:
> 
>> On Mon, 9 Jun 2008 15:50:53 +0200
>>   Marek Wojciechowski <mwojc@p.lodz.pl> wrote:
>>> Hi!
>>> The following command:
>>>    optimize.fmin_l_bfgs_b(lambda x: x[0]**2, [-1.],
>>>iprint=1)
>>> causes an error and breaks the python session with the
>>>following output:
>>> 
>>> RUNNING THE L-BFGS-B CODE
>>> 
>>>           * * *
>>> 
>>> At line 2647 of file scipy/optimize/lbfgsb/routines.f
>>> Internal Error: printf is broken
>>> Machine precision =
>>> 
>>> This occurs on scipy-0.6.0 and python 2.4 under Gentoo
>>>Linux. Is this the
>>> known bug?
>>> 
>>> Greetings,
>>> --
>>> Marek Wojciechowski
>> 
>> I get
>> 
>>>>> optimize.fmin_l_bfgs_b(lambda x: x[0]**2, [-1.], 
>>>>>iprint=1)
>> RUNNING THE L-BFGS-B CODE
>> 
>>             * * *
>> 
>> Machine precision = 2.220E-16
>>   N =  1    M =  10
>>   This problem is unconstrained.
>> 
>> At X0         0 variables are exactly at the bounds
>> Traceback (most recent call last):
>>    File "<stdin>", line 1, in <module>
>>    File
>> "/data/home/nwagner/local/lib/python2.5/site-packages/scipy/optimize/lbfgsb.py",
>> line 205, in fmin_l_bfgs_b
>>      f, g = func_and_grad(x)
>>    File
>> "/data/home/nwagner/local/lib/python2.5/site-packages/scipy/optimize/lbfgsb.py",
>> line 156, in func_and_grad
>>      f, g = func(x, *args)
>> TypeError: 'numpy.float64' object is not iterable
>> 
>>>>> scipy.__version__
>> '0.7.0.dev4420'
> 
> It seems that my bug is corrected in development 
>versions of scipy.
> Exception you obtained results probably from new layout 
>of lbfgsb
> optimizer. I think the following should work:
> 
> optimize.fmin_l_bfgs_b(lambda x: (x[0]**2, 2*x[0]), 
>[-1.], iprint=1)
> 
No.
>>> optimize.fmin_l_bfgs_b(lambda x: (x[0]**2, 2*x[0]), [-1.], iprint=1)
RUNNING THE L-BFGS-B CODE

            * * *

Machine precision = 2.220E-16
  N =  1    M =  10
  This problem is unconstrained.

At X0         0 variables are exactly at the bounds
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File 
"/usr/local/lib64/python2.5/site-packages/scipy/optimize/lbfgsb.py", 
line 199, in fmin_l_bfgs_b
     isave, dsave)
TypeError: failed to initialize 
intent(inout|inplace|cache) array -- input must be array 
but got <type 'numpy.float64'>
  
Cheers,
            Nils


More information about the SciPy-user mailing list