library(ABCoptim)library(ABCoptim)The Artificial Bee Colony (ABC) algorithm is a population-based optimization method inspired by the way honey bees explore and exploit food sources. In ABCoptim, each candidate solution is a food source, better solutions get more attention from the colony, and poorly performing solutions are eventually replaced. The package implements the minimization version described by Karaboga (2005), with both R and C++ backends.
The abc_optim() implementation follows the same sequence on every cycle:
FoodNumber candidate solutions inside the bounds lb and ub. In abc_optim(), the first population is placed on an evenly spaced grid using seq() for each parameter.abc_optim() computes probabilities from relative fitness and lets onlookers update promising sources using the same greedy replacement rule.criter cycles, or when maxCycle is reached.limit times without improvement, the source with the largest trial counter is reinitialized.Two implementation details are worth keeping in mind when using the package:
[lb, ub] are clipped back to the boundary.The package examples already cover the cosine benchmark, a one-dimensional function, a sphere, and an OLS problem. The next example uses the two-dimensional Booth function,
f(x, y) = (x + 2y − 7)2 + (2x + y − 5)2,
which has its global minimum at (1, 3).
booth <- function(x) {
(x[1] + 2 * x[2] - 7)^2 + (2 * x[1] + x[2] - 5)^2
}
set.seed(2026)
ans <- abc_optim(
par = c(0, 0),
fn = booth,
lb = -10,
ub = 10,
FoodNumber = 20,
limit = 40,
criter = 75,
maxCycle = 500
)
ans[c("par", "value", "counts")]$par
[1] 1 3
$value
[1] 3.204614e-16
$counts
function
461
The estimated optimum should be close to (1, 3), and the objective value should be near zero.
plot(ans)This plot shows the best point found at each cycle. In practice, that trace is useful for checking whether the colony is still improving or whether criter, limit, or FoodNumber should be adjusted.