[SciPy-User] fmin_bfgs failing on simple problem

Nathaniel Smith njs at pobox.com
Tue Apr 17 14:13:13 EDT 2012


On Tue, Apr 17, 2012 at 6:35 PM, John Salvatier
<jsalvati at u.washington.edu> wrote:
> Hi all!
>
> I am having a problem with the fmin_bfgs solver that's surprising to me.
> Here's the toy problem I've set up:
>
> from scipy.optimize import fmin_bfgs, fmin_ncg
> from numpy import *
> import numpy as np
>
> def f(x ):
>     if x < 0:
>         return 1.79769313e+308
>     else :
>         return x + 1./x
>
>
> xs = fmin_bfgs(f, array( [10.]), retall = True)
>
> The solver returns [nan] as the solution.
>
> The problem is designed to be stiff: between 0 and 1, it slopes upward to
> infinity but between 1 and infinity, it slopes up at a slope of 1. Left of 0
> the function has a "nearly infinite" value. If bfgs encounters  a value
> that's larger than the current value, it should try a different step size,
> no? Why does fmin_bfgs fail in this way?

I can't reproduce this (on my computer it converges to 0.99999992),
but have you tried making that < into a <=? The divide-by-zero at f(0)
might be making it freak out.

-- Nathaniel



More information about the SciPy-User mailing list