我最初的问题是“在 R 中实现信任区域反射优化算法”。但是,在生成可重现示例的过程中(感谢 @Ben 的建议),我意识到我的问题是在 Matlab 中,一个函数lsqnonlin很好(意味着不需要选择一个好的起始值,速度快)对于我拥有的大多数情况来说已经足够了,而在 R 中,没有这样一个一应俱全的功能。不同的优化算法在不同的情况下效果很好。不同的算法达到不同的解决方案。这背后的原因可能不是R中的优化算法不如Matlab中的信任区域反射算法,也可能与R如何处理自动微分有关。这个问题其实来自两年前的工作中断。当时,包optimx的作者之一 John C Nash 教授 已经建议 Matlab 进行了大量的自动微分工作,这可能是 Matlab lsqnonlin 比 R 中的优化函数/算法执行得更好的原因。我无法用我的知识弄清楚。
下面的示例显示了我遇到的一些问题(更多可重现的示例即将推出)。要运行示例,首先运行install_github("KineticEval","zhenglei-gao"). 您需要安装包mkin及其依赖项,并且可能还需要为不同的优化算法安装一堆其他包。
基本上我试图解决非线性最小二乘曲线拟合问题,如 Matlab 函数lsqnonlin的文档 ( http://www.mathworks.de/de/help/optim/ug/lsqnonlin.html ) 中所述。在我的例子中,曲线是由一组微分方程建模的。我将通过示例进行更多解释。我尝试过的优化算法包括:
nls.lm, the Levenburg-Marquardtnlm.inboptimoptimxsolnp包Rsolnp我也尝试了其他一些,但没有在这里显示。
lsqnonlin在 Matlab 中可以解决我的非线性最小二乘问题类型?(我找不到一个。)lsqnonlin比 R 中的函数更胜一筹?信任区域反射算法或其他原因?我先给出R代码,稍后解释。

ex1 <- mkinmod.full(
Parent = …Run Code Online (Sandbox Code Playgroud)