当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R optimize 一维优化


R语言 optimize 位于 stats 包(package)。

说明

函数optimizelowerupper 的区间中搜索函数f 相对于其第一个参数的最小值或最大值。

optimiseoptimize 的别名。

用法

optimize(f, interval, ..., lower = min(interval), upper = max(interval),
         maximum = FALSE,
         tol = .Machine$double.eps^0.25)
optimise(f, interval, ..., lower = min(interval), upper = max(interval),
         maximum = FALSE,
         tol = .Machine$double.eps^0.25)

参数

f

待优化的函数。该函数在其第一个参数上最小化或最大化,具体取决于 maximum 的值。

interval

包含要搜索最小值的区间end-points的向量。

...

要传递给 f 的其他命名或未命名参数。

lower

要搜索的区间的下端点。

upper

要搜索的区间的上端点。

maximum

合乎逻辑的。我们应该最大化还是最小化(默认)?

tol

所需的精度。

细节

请注意,... 之后的参数必须完全匹配。

所使用的方法是黄金分割搜索和连续抛物线插值的组合,并且被设计用于连续函数。收敛速度永远不会比斐波那契搜索慢很多。如果 f 具有最小为正的连续二阶导数(不在 lowerupper 处),则收敛是超线性的,通常约为 1.324。

函数f永远不会在距离更近的两个点处进行评估 ,其中 大约是sqrt(.Machine$double.eps) 是最后的横坐标optimize()$minimum.
如果f是一个单峰函数,计算值是f当至少分开时总是单峰 , 然后 近似全局最小值的横坐标f在区间lower,upper误差小于 .
如果f不是单峰的,那么optimize()可以近似局部的(但可能是非全局的)最小值到相同的精度。

f 的第一次评估始终在 ,其中(a,b) = (lower, upper) 是黄金分割比。几乎总是,第二次评估位于 。请注意,即使 f 在那里恒定,也会找到 内的局部最小值作为解决方案,请参见最后一个示例。

f将被称为f(x, ...)对于数值x.

传递给 f 的参数具有特殊语义,用于在调用之间共享。该函数不应该复制它。

包含组件 minimum (或 maximum )和 objective 的列表,它们给出最小值(或最大值)的位置以及该点的函数值。

例子

require(graphics)

f <- function (x, a) (x - a)^2
xmin <- optimize(f, c(0, 1), tol = 0.0001, a = 1/3)
xmin

## See where the function is evaluated:
optimize(function(x) x^2*(print(x)-1), lower = 0, upper = 10)

## "wrong" solution with unlucky interval and piecewise constant f():
f  <- function(x) ifelse(x > -1, ifelse(x < 4, exp(-1/abs(x - 1)), 10), 10)
fp <- function(x) { print(x); f(x) }

plot(f, -2,5, ylim = 0:1, col = 2)
optimize(fp, c(-4, 20))   # doesn't see the minimum
optimize(fp, c(-7, 20))   # ok

来源

基于参考文献中给出的 Algol 60 过程 localmin 的 Fortran 代码 https://netlib.org/fmm/fmin.f(作者未说明)的 C 翻译。

参考

Brent, R. (1973) Algorithms for Minimization without Derivatives. Englewood Cliffs N.J.: Prentice-Hall.

也可以看看

nlmuniroot

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 One Dimensional Optimization。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。