optim函數是R語言中用于最優化問題求解的函數,它提供了一個通用的接口來尋找函數的最小值或最大值。
optim函數的基本用法是:
optim(par, fn, ...)
參數說明:
optim函數返回一個包含以下元素的列表:
需要注意的是,optim函數默認使用Nelder-Mead(單純形)算法來求解無約束問題。如果需要求解帶有約束的最優化問題,可以通過設置其他參數來選擇不同的算法,或者自定義約束函數。
以下是一個簡單的例子,演示如何使用optim函數求解目標函數的最小值:
# 定義目標函數
fn <- function(x) {
return((x[1]-2)^2 + (x[2]-3)^2)
}
# 設置起始點
par <- c(0, 0)
# 使用optim函數求解最小值
result <- optim(par, fn)
# 輸出結果
print(result$par) # 最優解
print(result$value) # 最優解的目標函數值
print(result$message) # 算法收斂信息
輸出結果:
[1] 1.999994 3.000007
[1] 7.200082e-11
[1] "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"