optimize
位于 stats
包(package)。 说明
函数optimize
在lower
到upper
的区间中搜索函数f
相对于其第一个参数的最小值或最大值。
optimise
是 optimize
的别名。
用法
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 |
待优化的函数。该函数在其第一个参数上最小化或最大化,具体取决于 |
interval |
包含要搜索最小值的区间end-points的向量。 |
... |
要传递给 |
lower |
要搜索的区间的下端点。 |
upper |
要搜索的区间的上端点。 |
maximum |
合乎逻辑的。我们应该最大化还是最小化(默认)? |
tol |
所需的精度。 |
细节
请注意,...
之后的参数必须完全匹配。
所使用的方法是黄金分割搜索和连续抛物线插值的组合,并且被设计用于连续函数。收敛速度永远不会比斐波那契搜索慢很多。如果 f
具有最小为正的连续二阶导数(不在 lower
或 upper
处),则收敛是超线性的,通常约为 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.
也可以看看
相关用法
- R optim 通用优化
- R order.dendrogram 树状图中叶子的排序或标签
- R oneway.test 测试单向布局中的均值相等
- R offset 在模型公式中包含偏移量
- R stlmethods STL 对象的方法
- R medpolish 矩阵的中值波兰(稳健双向分解)
- R naprint 调整缺失值
- R summary.nls 总结非线性最小二乘模型拟合
- R summary.manova 多元方差分析的汇总方法
- R formula 模型公式
- R nls.control 控制 nls 中的迭代
- R aggregate 计算数据子集的汇总统计
- R deriv 简单表达式的符号和算法导数
- R kruskal.test Kruskal-Wallis 秩和检验
- R quade.test 四方测试
- R decompose 移动平均线的经典季节性分解
- R plot.stepfun 绘制阶跃函数
- R alias 查找模型中的别名(依赖项)
- R qqnorm 分位数-分位数图
- R eff.aovlist 多层方差分析的计算效率
- R pairwise.t.test 成对 t 检验
- R loglin 拟合对数线性模型
- R predict.smooth.spline 通过平滑样条拟合进行预测
- R bartlett.test 方差齐性的 Bartlett 检验
- R influence.measures 回归删除诊断
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 One Dimensional Optimization。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。