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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。