library(n1qn1) library(lbfgs) library(lbfgsb3) library(GenSA) Rastrigin <- function(x) { functionCalls <<- functionCalls + 1 return(sum(x^2 - 10 * cos(2 * pi * x)) + 10 * length(x)) } # call this to calculate gradient for each variable # Rastrigin4d <- "~ w^2 - 10 * cos(2 * pi * w) + x^2 - 10 * cos(2 * pi * x) + y^2 - 10 * cos(2 * pi * y) + z^2 - 10 * cos(2 * pi * z) + 10 * 4" # deriv(formula(Rastrigin4d), c("w","x","y","z")) Rastrigin4d_Grad <- function(w){ functionCalls <<- functionCalls + 1 z <- w[4] y <- w[3] x <- w[2] w <- w[1] return(c( 2 * w + 10 * (sin(2 * pi * w) * 2 * pi), 2 * x + 10 * (sin(2 * pi * x) * 2 * pi), 2 * y + 10 * (sin(2 * pi * y) * 2 * pi), 2 * z + 10 * (sin(2 * pi * z) * 2 * pi) )) } functionCalls <- 0 result1 <- n1qn1(call_eval = Rastrigin, call_grad = Rastrigin4d_Grad, max_iterations = .Machine$integer.max, nsim = .Machine$integer.max, vars = c(1000,1000,1000,1000)) cat("n1qn1 fitness function calls:", functionCalls, "; parameters =", result1$par, "; result =", Rastrigin(result1$par), "\n") functionCalls <- 0 result2 <- lbfgs(call_eval = Rastrigin, call_grad = Rastrigin4d_Grad, vars = c(1000,1000,1000,1000), invisible = TRUE) cat("lbfgs fitness function calls:", functionCalls, "; parameters =", result2$par, "; result =", Rastrigin(result2$par), "\n") functionCalls <- 0 result3 <- lbfgsb3(prm = c(1000,1000,1000,1000), fn = Rastrigin, gr = Rastrigin4d_Grad, lower <- c(-1000,-1000,-1000,-1000), upper <- c( 1000, 1000, 1000, 1000)) cat("lbfgsb3 fitness function calls:", functionCalls, "; parameters =", result3$prm, "; result =", Rastrigin(result3$par), "\n") functionCalls <- 0 result4 <- GenSA(par = c(1000,1000,1000,1000), fn = Rastrigin, lower <- c(-1000,-1000,-1000,-1000), upper <- c( 1000, 1000, 1000, 1000)) cat("GenSA fitness function calls:", functionCalls, "; parameters =", result4$par, "; result =", Rastrigin(result4$par), "\n") functionCalls <- 0 result5 <- optim(par = c(1000,1000,1000,1000), fn = Rastrigin, method = "Nelder-Mead") cat("optim Nelder-Mead fitness function calls:", functionCalls, "; parameters =", result5$par, "; result =", Rastrigin(result5$par), "\n") functionCalls <- 0 result6 <- optim(par = c(1000,1000,1000,1000), fn = Rastrigin, method = "BFGS") cat("optim BFGS fitness function calls:", functionCalls, "; parameters =", result6$par, "; result =", Rastrigin(result6$par), "\n") functionCalls <- 0 result7 <- optim(par = c(1000,1000,1000,1000), fn = Rastrigin, method = "CG") cat("optim CG fitness function calls:", functionCalls, "; parameters =", result7$par, "; result =", Rastrigin(result7$par), "\n") functionCalls <- 0 result8 <- optim(par = c(1000,1000,1000,1000), fn = Rastrigin, method = "L-BFGS-B") cat("optim L-BFGS-B fitness function calls:", functionCalls, "; parameters =", result8$par, "; result =", Rastrigin(result8$par), "\n") functionCalls <- 0 result9 <- optim(par = c(1000,1000,1000,1000), fn = Rastrigin, method = "SANN") cat("optim SANN fitness function calls:", functionCalls, "; parameters =", result9$par, "; result =", Rastrigin(result9$par), "\n")