# three-dimensional function
objf <- function(x, loc) {
val <- 0
for (i in 1:length(x)) {
val <- val + (x[i] - loc)^2
}
return(val)
}
upp_bound <- rep(5, 3)
low_bound <- rep(-5, 3)
loc_shift <- 1
alg_setting <- getDEInfo(nPop = 32, maxIter = 100, deType = "rand-1",
sf = 0.5, cr = 0.1)
res <- diffevo(objFunc = objf, lower = low_bound, upper = upp_bound,
DE_INFO = alg_setting, loc = loc_shift)
res$par
res$val
# C++ function example
# \donttest{
library(Rcpp)
library(RcppArmadillo)
objf_c <- cppFunction('double objf_c(SEXP x, SEXP loc) {
double val = 0;
double loc_c = (double)Rcpp::as(loc);
arma::rowvec x_c = (arma::rowvec)Rcpp::as(x);
for (arma::uword i = 0; i < x_c.n_elem; i++) {
val += (x_c(i) - loc_c)*(x_c(i) - loc_c);
}
return val;
}', depends = "RcppArmadillo")
alg_setting <- getDEInfo(nPop = 32, maxIter = 100, deType = "rand-1",
sf = 0.5, cr = 0.1)
res_c <- diffevo(objFunc = objf_c, lower = low_bound, upper = upp_bound,
DE_INFO = alg_setting, loc = 1)
res_c$par
res_c$val
# }
Run the code above in your browser using DataLab