>>>>> Ben Bolker  on Wed, 17 Sep 2025 19:00:00 -0400 writes:

    > For what it's worth:

    > John Nash (original author of the Pascal implementations of (most of) 
    > the available algorithms in optim() (including the Nelder-Mead)) has 
    > long maintained that these implementations could be updated. (Any update 
    > that changed solutions, rather than adding new functionality, would need 
    > to be handled carefully for back-compatibility reasons ...)

    > Solving the problem of box constraints by transformation to an 
    > unconstrained space is problematic when the constraints are binding 
    > (i.e. the minimum is on the boundary of the allowed space) -- the 
    > transformation essentially moves the solution to a point at infinity, 
    > leading to infinite flatness ...

    > FWIW the Nelder-Mead implementation (?lme4::Nelder_Mead), and the 
    > one in NLopt (accessible via the nloptr package: 
    > 
https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/#local-derivative-free-optimization
 
    > ) both allow box constraints.  (The author of NLopt suggests that the 
    > 'subplex' algorithm is generally preferable ...)  According to the CRAN 
    > optimization task view 
    > 
<https://cran.r-project.org/web/views/Optimization.html#general-purpose-continuous-solvers>,
 
    > the dfoptim package also has a box-constrained variant of Nelder-Mead ...

    > cheers
    > Ben Bolker

Just  as this thread hasn't been continued,
and nobody mentioned -- hence for "completeness":

We (R-core, not me) had introduced a relatively simplistic but
useful  constrOptim()  function a long time ago, and it *does*
provide box constraints.

Hence, in some sense, Ivo Welch's wish has been fulfilled a long
time ago and *in base R* (the 'stats' package) :

E.g.
  https://search.r-project.org/R/refmans/stats/html/constrOptim.html

Martin


    > On 9/17/25 17:36, ivo welch wrote:
    >> Title says it all.
    >> 
    >> I know this can be done by transformations by the user, but given that
    >> interval is so prominent in the ?doc and given that Nelder-Mead is the
    >> default method for optim(), it would be nice if the default method would
    >> honor this one, too.
    >> 
    >> [could be done (even by me) within the R code because the C code through
    >> the arctan transforms]
    >> 
    >> [[alternative HTML version deleted]]
    >> 
    >> ______________________________________________
    >> R-devel@r-project.org mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-devel

    > ______________________________________________
    > R-devel@r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to