【问题标题】:optimizing a function to find global and local peaks with R优化函数以使用 R 查找全局和局部峰值
【发布时间】:2011-05-22 20:10:24
【问题描述】:

是的 我有 6 个参数,我知道它们的最大值和最小值。我有一个包含 6 个参数并返回第 7 个值(比如 Y)的复杂函数。我说复杂是因为 Y 与 6 个参数没有直接关系;中间有很多嵌入函数。

  1. 我想找到返回最高 Y 值的 6 个参数的组合。我首先尝试通过构建一个超立方体来计算每个组合的 Y,但我的计算机中没有足够的内存。因此,我正在寻找在定界参数空间中取得进展并能够超越局部峰值的马尔可夫链。
  2. 当我给出 6 个参数的一个组合时,我想知道最高的局部 Y 值。我试图用像马尔可夫那样的迭代链编写代码,但我不确定当链到达参数空间的边缘时如何处理。显然,为此应该已经存在一些算法。

问题:有人知道 R 中做这两件事的最佳功能是什么吗?我读到 optim() 可能适合找到全局峰值,但我不确定它是否可以处理复杂的函数(我更喜欢在进行漫长的(对我而言)代码编写过程之前先询问)。和他当地的山峰? optim() 应该无法做到这一点

提前感谢您提供任何线索

来自法国的朱利安

【问题讨论】:

标签: optimization r global local


【解决方案1】:

我喜欢使用Metropolis-Hastings 算法。由于您将每个参数限制在一个范围内,因此简单的做法是让您的提案分布在该范围内保持一致。这样,你就不会跑偏了。它不会很快,但如果你让它运行足够长的时间,它会很好地对你的空间进行采样。样本将聚集在每个峰处,并以反映局部曲率的方式散布在峰周围。

【讨论】:

    【解决方案2】:

    看看 CRAN 上的Optimization and Mathematical Programming Task View。我个人发现差分进化算法非常快速和健壮。它在 DEoptim 包中实现。 rgenoud 包是另一个不错的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多