Hi,
Riccardo (Jack) Lucchetti wrote:
On Mon, 6 Jul 2009, Riccardo (Jack) Lucchetti wrote:
Ok, I think I've got it. The reason why line 548 in gretl_bgfs.c reads
crit_ok = !na(f) && (f >= fmax + d);
instead of
crit_ok = !na(f) && (f >= fmax);
is that, in normal circumstances, we want to avoid jumping from one place
to another if the jump doesn't yield a *significant* improvement in the
objective function. Here d is the threshold, which, in turn, is computed
as
d = sumgrad * steplen * acctol;
acctol is a hand-tweaked small number, steplen is between 0 and 1, so what
really makes the difference here is sumgrad.
I've checked with BFGS_DEBUG on and it seems that d is always negative.
So if i understand correctly, gretl doesn't look for a significant
improvement, but is happy even if f decreased by abs(d)
which lets your example script run fine. Could you please try it with
your
"real" stuff?
I got rid of some bugs and now my script works fine.
Christoph