## Consider Ackley function
# \donttest{
fn <- function(par, a = 20, b = 0.2)
{
val <- a * exp(-b * sqrt(0.5 * (par[1] ^ 2 + par[2] ^ 2))) +
exp(0.5 * (cos(2 * pi * par[1]) + cos(2 * pi * par[2]))) -
exp(1) - a
return(val)
}
# Maximize this function using particle swarm algorithm
set.seed(123)
lower <- c(-5, -100)
upper <- c(100, 5)
opt <- pso(fn = fn,
lower = lower, upper = upper,
a = 20, b = 0.2)
print(opt$par)
# }
## Consider Bukin function number 6
fn <- function(x, a = 20, b = 0.2)
{
val <- 100 * sqrt(abs(x[2] - 0.01 * x[1] ^ 2)) + 0.01 * abs(x[1] + 10)
return(val)
}
# Minimize this function using initially provided
# position for one of the particles
set.seed(777)
lower <- c(-15, -3)
upper <- c(-5, 3)
opt <- pso(fn = fn,
pop.init = c(8, 2),
lower = lower, upper = upper,
is.max = FALSE)
print(opt$par)
Run the code above in your browser using DataLab