# [SciPy-user] Getting started with optimize.fmin_l_bfgs_b

Christian Kristukat ckkart at hoc.net
Wed Jun 29 06:46:22 CDT 2005

```Nils Wagner wrote:
> Christian Kristukat wrote:
>
>> Nils Wagner wrote:
>>
>>> Traceback (most recent call last):
>>>  File "bfgs_b.py", line 8, in ?
>>>    best, val, d = optimize.fmin_l_bfgs_b(func, guess, bounds=bounds)
>>>  File
>>> "/usr/local/lib/python2.4/site-packages/scipy/optimize/lbfgsb.py",
>>> line 183, in fmin_l_bfgs_b
>>>  File
>>> "/usr/local/lib/python2.4/site-packages/scipy/optimize/lbfgsb.py",
>>>    f, g = func(x, *args)
>>> TypeError: unpack non-sequence
>>>
>>> How can I resolve the problem ?
>>
>>
>>
>> Look at the docstring of l_bfgs_b - func is expected to return the
>>
>> Regards, Christian
>>
>> _______________________________________________
>> SciPy-user mailing list
>> SciPy-user at scipy.net
>> http://www.scipy.net/mailman/listinfo/scipy-user
>
>
>
> Hi Christian,
>
> This my modified program
>
> from scipy import *
>
> def func(x):
>  return x[0]-x[1]
>
> def fprime(x):
>   return array(([1,-1]))

It has to be a float array, otherwise l_bgfs_b will complain.

> guess = 1.2, 1.3
> bounds = [(-2.0,2.0), (-2.0,2.0) ]
> best, val, d = optimize.fmin_l_bfgs_b(func, guess, fprime,

not evaluated. You should always prefer to calculate the gradient analytically,
especially if it's as simple as in your example.

> print 'Position of the minimum',best, 'and its value',val
>
> Is it somehow possible to visualize (e.g. by matplotlib) the history of
> the optimization process ?

You could collect the values of x at each call of 'func' in a global list and
plot them later.

Regards, Christian

```