相关疑难解决方法(0)

在 R 中,如何进行涉及求解微分方程的非线性最小二乘优化?

使用可重现的示例进行更新以说明我的问题

我最初的问题是“在 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 ) 中所述。在我的例子中,曲线是由一组微分方程建模的。我将通过示例进行更多解释。我尝试过的优化算法包括:

  • Marq from nls.lm, the Levenburg-Marquardt
  • 端口来自 nlm.inb
  • L-BGFS-B 来自 optim
  • 来自 optimx
  • solnpRsolnp

我也尝试了其他一些,但没有在这里显示。

我的问题总结

  • R 中是否有可靠的函数/算法可以使用,例如lsqnonlin在 Matlab 中可以解决我的非线性最小二乘问题类型?(我找不到一个。)
  • 对于一个简单的情况,不同的优化达到不同的解决方案的原因是什么?
  • 什么lsqnonlin比 R 中的函数更胜一筹?信任区域反射算法或其他原因?
  • 有没有更好的方法来解决我的问题类型,以不同的方式表达?也许有一个非常简单的解决方案,但我只是不知道。

示例 1:一个简单的案例

我先给出R代码,稍后解释。 示例 1 的拟合图

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

optimization r nonlinear-optimization

5
推荐指数
1
解决办法
3945
查看次数

标签 统计

nonlinear-optimization ×1

optimization ×1

r ×1