【问题标题】:How to implement R's "optimize" function in C++?如何在 C++ 中实现 R 的“优化”功能?
【发布时间】:2016-02-24 14:31:49
【问题描述】:

免责声明:我已经使用以下关键字搜索了答案:R、优化、C++、C、最优、最大值、最小值、局部最大值、优化、牛顿法、梯度下降等。并没有找到任何满意的答案。 R 的optimize man page 给出了原始的 Fortran 代码,但没有给出它的 C 翻译。请让我知道我是否应该搜索其他关键字,或者您是否可以快速找到明确回答此问题的网站。

问题:我是 C++ 新手,想将我的一个 R 程序转换为 C++。我在 R 中使用优化函数,想知道 C++ 中是否有任何库/头文件/函数可以轻松地给我相同的结果。可以的话请举个例子。

这是 R 优化的一个简单示例,在 (0,1) 上最大化 f(p) = p*(1-p),其中最大值在 p = 0.5 和 f(0.5) = 0.25 处:

> optimize(function(p) p*(1-p),c(0,1),maximum=T)
$maximum
[1] 0.5

$objective
[1] 0.25

感谢您的帮助!

【问题讨论】:

  • 只要记住在复制代码时遵守 R 的 GNU 许可证...

标签: c++ algorithm r optimization


【解决方案1】:

http://cran.r-project.org/src/base/R-2/R-2.13.1.tar.gz

代码在../R-2.13.1/src/main/optimize.c

【讨论】:

    【解决方案2】:

    R 源代码可在http://cran.r-project.org/ 获得。您应该能够在那里获得 c 实现,使其 c++ 应该是微不足道的。

    【讨论】:

      【解决方案3】:

      R 函数 optimize() 本质上实现了 Brent 的方法。用C++或其他几种语言实现,可以从这里下载:https://people.sc.fsu.edu/~jburkardt/cpp_src/brent/brent.html

      【讨论】:

        猜你喜欢
        • 2016-11-17
        • 1970-01-01
        • 1970-01-01
        • 2020-12-09
        • 1970-01-01
        • 2023-03-13
        • 2019-10-01
        • 2016-02-22
        • 1970-01-01
        相关资源
        最近更新 更多