[R] optim evils
Rolf Turner
rolf.turner at xtra.co.nz
Wed Sep 4 00:03:08 CEST 2013
I don't think anyone can do much to help you unless you show us (a) your
objective function "OF" and your starting value for "pars" --- which I
do not
see in your posting. Examples should be ***reproducible***!!!
My personal experience with optim() has always been very good.
cheers,
Rolf Turner
On 09/04/13 01:08, Michael Meyer wrote:
> Greetings,
>
> I am in great anguish as the routine stats::optim shows unexplicable behaviour
> of various sorts.
> For one it is immune to the choice of optimization method and seems to always do the same.
> The following trace log
>
>
> N = 21, M = 5 machine precision = 2.22045e-16
> At X0, 0 variables are exactly at the bounds
> At iterate 0 f= 1756.8 |proj g|= 0.73581
> At iterate 1 f = 911.52 |proj g|= 0.70136
> At iterate 2 f = 791.62 |proj g|= 0.68563
> At iterate 3 f = 749.81 |proj g|= 1
> .....
> .....
> At iterate 87 f = 666.91 |proj g|= 0.98217
> At iterate 88 f = 666.9 |proj g|= 0.96966
>
> Bad direction in the line search;
> refresh the lbfgs memory and restart the iteration.
> At iterate 89 f = 9022.8 |proj g|= 1.0426
> iterations 89
> function evaluations 132
> segments explored during Cauchy searches 128
> BFGS updates skipped 0
> active bounds at final generalized Cauchy point 18
> norm of the final projected gradient 1.04257
> final function value 9022.84
> F = 9022.84
> final value 9022.836050
> converged
>
>
> by each of the following calls to optim:
>
> optPars <- optim( pars,OF,#gradientOF,
> method = "CG",
> lower = pars_lb,upper=pars_ub,
> control = list(fnscale=1,trace=3,REPORT=1)
> )
> optPars <- optim( pars,OF,#gradientOF,
> method = "Nelder-Mead",
> lower = pars_lb,upper=pars_ub,
> control = list(fnscale=1,trace=3,REPORT=1)
> )
> optPars <- optim( pars,OF,#gradientOF,
> method = "L-BFGS-B",
> lower = pars_lb,upper=pars_ub,
> control = list(fnscale=1,trace=3,REPORT=1)
> )
>
> If method != "L-BFGS-B", then the routine complains about the uses of bounds for
> the parameters as expected, however the trace log above reminas the same.
>
> Note also that the routine makes fine progress toward a minimum (as desired)
> but in the last iteration reverses course and returns a function value much larger than the starting value.
>
> What is going on here?
> All help is much appreciated.
More information about the R-help
mailing list