[Rd] optim(?, method=?L-BFGS-B?) stops with an error

ProfJCNash profjcnash at gmail.com
Sun Oct 9 16:00:39 CEST 2016


I'll not copy all the previous material on this thread to avoid overload.

The summary is that all the methods Spencer has tried have some issues.

The bad news: This is not uncommon with optimization methods, in part because the problems are "hard",
in part because getting them implemented and linked to an interfacing approach like R is very tedious
and prone to omissions and errors.

The good news: I've been working on a revision to optimx, having noted the implementation issues just
mentioned. There is now a package optimr on CRAN, but that's just to reserve the name. The real package
is optimrx on R-forge (dependencies can fail, then the poor maintainer gets "your package doesn't work",
with no hope of fixing it). Moreover, Harry Joe recently pointed out to me a bug and in the last few
weeks I think I've resolved issues where Rvmmin and other packages got NA results when numerical gradient
approximations were used in certain ways.

optimrx came about because I realized that optimx() has just enough difference in syntax from optim()
to be a nuisance and was heavy to maintain. Also I wanted parameter scaling to work for all methods,
as in optim(). However, Ravi's efforts easily convinced me that trying multiple methods was a
good idea, so there is an opm() function. We also had an option for polyalgorithms and at one point
for multiple starts. I've put them in polyopt() and multistart() -- the combination in optimx was
driving me nuts when doing any work on the code. Ravi, I hope this doesn't offend. The optimx
ideas are still there, but the restructuring will, I hope, lead to easier maintenance and development.
As the package is very new, I fully expect there are some deficiencies, and ask that users send
executable examples so I can address same.

optimrx doesn't (yet) have nloptr. It's on the todo list, but I've not been able despite many tries to
get any response from its maintainer (Jelmer Ypma), who seems to have largely dropped out of R work, though
there was a fairly recent minor adjustment on Github. However, no communication is a
worry, as nloptr and also ipoptr are important tools that could use support. I've offered, but I don't
have C++ expertise. If anyone is willing to work with me, this can be moved forward soon.

Spencer: Can you prepare your problem in a way that the optimization bit is replaceable and send to
me? I'll see if I can figure out what is the actual source of the error as well as figure out what
methods "work" and how well.

Note that the Rtnmin package (a translation I made of my brother's Matlab code) also will handle
bounds, but optimrx probably makes the call easier. If you send the example, I'll make sure it gets
tried also.

Best, JN



More information about the R-devel mailing list