DJJ - 11 months ago 90

R Question

I'm using the function nlminb to maximise a function and got convergence (convergence =0 ) with the message false-convergence.

I tried the documentation but no answer. I tried to get the port documentation on the function and could find the function

`nlminb`

Can anyone point me to the port documentation of

`nlminb`

I also tried other optimization function but though nlminb is a bit obscure, it seems to converge faster than any other function to the right answer. Need to perform more test to make sure. Even using the

`nlminb`

It would be a good thing if we understand more how this function work. Fortran coders feel free to help please.

I should have found the code earlier. Here it is but it is still obscure. Can somebody help

Answer Source

This is a repost/adaptation of an answer of mine from r-sig-mixed models

[... The nlminb() optimizer ... is based on the PORT libraries.

The docs linked from `?nlminb`

*used to be* at `http://netlib.bell-labs.com/cm/cs/cstr/153.pdf`

: http://www.netlib.org/port/cs/cstr says

port/readme points to "Usage Summary for Selected Optimization Routines", sometimes known as PORT OPTIMIZATION DOCUMENTATION in http://netlib.bell-labs.com/cm/cs/cstr/153.ps.gz or http://netlib.bell-labs.com/cm/cs/cstr/153.pdf

... but these links are broken (`port/readme`

is still there but none of the links provided work ...).

I managed to find the docs via Google Scholar and have posted a slightly more convenient PDF version.

The only useful material I could find in these docs was:

p. 5: false convergence: the gradient ∇f(x) may be computed incorrectly, the other stopping tolerances may be too tight, or either f or ∇f may be discontinuous near the current iterate x.

p. 9: V(XFTOL) — V(34) is the false-convergence tolerance. A return with IV(1) = 8 occurs if a more favorable stopping test is not satisfied and if a step of scaled length at most V(XFTOL) is tried but not accepted. ‘‘Scaled length’’ is in the sense of (5.1). Such a return generally means there is an error in computing ∇f(x), or the favorable convergence tolerances (V(RFCTOL), V(XCTOL), and perhaps V(AFCTOL)) are too tight for the accuracy to which f(x) is computed (see §9), or ∇f (or f itself) is discontinuous near x . An error in computing ∇f(x) usually leads to false convergence after only a few iterations — often in the first. Default = 100*MACHEP.

p. 13: Sometimes evaluating f(x) involves an extensive computation, such as performing a simulation or adaptive numerical quadrature or integrating an ordinary or partial differential equation. In such cases the value computed for f (x), say f̃( x ), may involve substantial error (in the eyes of the optimization algorithm). To eliminate some ‘‘false convergence’’ messages and useless function evaluations, it is necessary to increase the stopping tolerances and, when finite-difference derivative approximations are used, to increase the step-sizes used in estimating derivatives.