[SciPy-User] fmin_bfgs stuck in infinite loop
josef.pktd@gmai...
josef.pktd@gmai...
Tue Oct 25 06:30:29 CDT 2011
On Tue, Oct 25, 2011 at 5:46 AM, Pauli Virtanen <pav@iki.fi> wrote:
> 24.10.2011 19:50, Johann Cohen-Tanugi kirjoitti:
> [clip]
>> while 1:
>> stp, phi1, derphi1, task = minpack2.dcsrch(alpha1, phi1, derphi1,
>> c1, c2, xtol, task,
>> amin, amax, isave, dsave)
>> if task[:2] == asbytes('FG') and not np.isnan(phi1):
>> alpha1 = stp
>> phi1 = phi(stp)
>> derphi1 = derphi(stp)
>> else:
>> break
>
> Looks correct to me. It should bail out from the loop on encountering
> a nan, as in that case it's unlikely it's possible to satisfy the wolfe
> conditions.
Is there an explanation for task? What does task[:2] == 'FG' mean?
I tried the condition separately.
if np.isnan(phi1) or np.isneginf(phi1):
break
if task[:2] == asbytes('FG'):
I also added the isneginf check, because I think there is also the
possibility of an infinite loop at phi = -inf.
I would still feel safer if there is a maxiter in the line search, as
in the python version, scalar_search_wolfe2
a separate issue:
bfgs does not have an xtol, which means we don't get any indication if
only one or some of the parameters go to inf.
But I don't have a nice example yet. This case can show up for example
in Logit estimation. In a variation of the example in this ticket, the
optimized parameters when one parameter goes to inf and the others to
a finite number looks sometimes pretty bad.
Thanks,
Josef
>
> --
> Pauli Virtanen
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
More information about the SciPy-User
mailing list