rosbkext <- function(x){
# Extended Rosenbrock function
n <- length(x)
sum (100*(x[1:(n-1)]^2 - x[2:n])^2 + (x[1:(n-1)] - 1)^2)
}
np <- 10
set.seed(123)
p0 <- rnorm(np)
xm1 <- nmk(fn=rosbkext, par=p0) # maximum `fevals' is not sufficient to find correct minimum
xm2 <- nmk(fn=rosbkext, par=p0, control=list(maxfeval=5000)) # finds the correct minimum
xm3 <- nmk(fn=rosbkext, par=p0, control=list(regsimp=FALSE, maxfeval=5000)) # also finds the correct minimum
ans.optim <- optim(fn=rosbkext, par=p0, method="Nelder-Mead", control=list(maxit=5000)) # terminates with inferior estimates
### A non-smooth problem
nsf <- function(x) {
f1 <- x[1]^2 + x[2]^2
f2 <- x[1]^2 + x[2]^2 + 10 * (-4*x[1] - x[2] + 4)
f3 <- x[1]^2 + x[2]^2 + 10 * (-x[1] - 2*x[2] + 6)
max(f1, f2, f3)
}
p0 <- rnorm(2)
xm4 <- nmk(fn=nsf, par=p0)Run the code above in your browser using DataLab