Misalnya didefinisikan suatu fungsi sebagai berikut.
f(x,y)=(x−2)2+(y+1)2
Tentukan titik optimum fungsi tersebut jika digunakan nilai awal (5,5).
# fungsi
rosenbrock = function(par){
x = par[1]
y = par[2]
(x-2)^2 + (y+1)^2
}
# tentukan nilai awal
start = c(5,5)
# Optimasi Conjugate Gradient
res_cg = optim(start, rosenbrock, method="CG")
res_cg
## $par
## [1] 2.0000001 -0.9999999
##
## $value
## [1] 2.112611e-14
##
## $counts
## function gradient
## 31 13
##
## $convergence
## [1] 0
##
## $message
## NULL
# Optimasi Quasi-Newton (BFGS)
res_bfgs = optim(start, rosenbrock, method="BFGS")
res_bfgs
## $par
## [1] 2 -1
##
## $value
## [1] 3.096423e-23
##
## $counts
## function gradient
## 11 3
##
## $convergence
## [1] 0
##
## $message
## NULL
# Optimasi Newton
res_newton = nlm(rosenbrock, start)
res_newton
## $minimum
## [1] 1.249999e-12
##
## $estimate
## [1] 1.999999 -1.000000
##
## $gradient
## [1] 2.220446e-16 1.233014e-12
##
## $code
## [1] 1
##
## $iterations
## [1] 2