Skip to content

Firefly Algorithm

Swarm Intelligence

Firefly Algorithm (FA) optimization algorithm.

Algorithm Overview

This module provides an implementation of the Firefly Algorithm optimization algorithm. The Firefly Algorithm is a metaheuristic optimization algorithm inspired by the flashing behavior of fireflies. It is commonly used to solve optimization problems by simulating the behavior of fireflies in attracting each other.

The algorithm works by representing potential solutions as fireflies in a search space. Each firefly's brightness is determined by its fitness value, with brighter fireflies representing better solutions. Fireflies move towards brighter fireflies in the search space, and their movements are influenced by attractiveness and light absorption coefficients.

This implementation provides a class called FireflyAlgorithm, which can be used to perform optimization using the Firefly Algorithm. The class takes an objective function, lower and upper bounds of the search space, dimensionality of the search space, and other optional parameters. The search method of the class runs the Firefly Algorithm optimization and returns the best solution found.

Example usage: optimizer = FireflyAlgorithm( func=shifted_ackley, dim=2, lower_bound=-32.768, upper_bound=32.768, population_size=100, max_iter=1000, alpha=0.5, beta_0=1, gamma=1, ) best_solution, best_fitness = optimizer.search() print(f"Best solution found: {best_solution}") print(f"Best fitness found: {best_fitness}")

Usage

python
from opt.swarm_intelligence.firefly_algorithm import FireflyAlgorithm
from opt.benchmark.functions import sphere

optimizer = FireflyAlgorithm(
    func=sphere,
    lower_bound=-5.12,
    upper_bound=5.12,
    dim=10,
    max_iter=500,
    population_size=50,
)

best_solution, best_fitness = optimizer.search()
print(f"Best solution: {best_solution}")
print(f"Best fitness: {best_fitness:.6e}")

Parameters

ParameterTypeDefaultDescription
funcCallableRequiredObjective function to minimize.
lower_boundfloatRequiredLower bound of search space.
upper_boundfloatRequiredUpper bound of search space.
dimintRequiredProblem dimensionality.
population_sizeint100Number of fireflies in the population.
max_iterint1000Maximum iterations.
alphafloat0.5Randomization parameter controlling step size of random movement.
beta_0float1Attractiveness coefficient at distance r=0.
gammafloat1Light absorption coefficient.
seedint | NoneNoneRandom seed for reproducibility.
track_historyboolFalseTrack optimization history for visualization

Algorithm Metadata

PropertyValue
Algorithm NameFirefly Algorithm
AcronymFA
Year Introduced2009
AuthorsYang, Xin-She
Algorithm ClassSwarm Intelligence
ComplexityO(population_size^2 * dim * max_iter)
PropertiesPopulation-based, Derivative-free, Stochastic
ImplementationPython 3.10+
COCO CompatibleYes

Mathematical Formulation

Core update equations based on bioluminescent attraction:

β(r)=β0eγr2xit+1=xit+β0eγrij2(xjtxit)+αϵit

where:

  • xit is the position of firefly i at iteration t
  • rij is the Euclidean distance between fireflies i and j
  • β0 is the attractiveness at distance r=0
  • γ is the light absorption coefficient
  • α governs the random movement step size
  • ϵit[1,1] is a random vector

Brightness and attractiveness:

  • Brightness: Ii=f(xi) (objective function value)
  • Less bright fireflies move toward brighter ones
  • Attractiveness decreases with distance due to light absorption

Constraint handling:

  • Boundary conditions: Clamping to [lower_bound, upper_bound]
  • Feasibility enforcement: Direct bound checking after each update

Hyperparameters

ParameterDefaultBBOB RecommendedDescription
population_size10010*dimNumber of fireflies
max_iter100010000Maximum iterations
alpha0.50.2-0.8Randomization parameter
beta_01.00.8-1.2Attractiveness at r=0
gamma1.00.01-100Light absorption coefficient

Sensitivity Analysis:

  • alpha: High impact on exploration - controls randomness
  • gamma: High impact on convergence - controls interaction distance
  • beta_0: Medium impact - scales attraction strength
  • Recommended tuning ranges: α[0.2,0.8], γ[0.01,100]

COCO/BBOB Benchmark Settings

Search Space:

  • Dimensions tested: 2, 3, 5, 10, 20, 40
  • Bounds: Function-specific (typically [-5, 5] or [-100, 100])
  • Instances: 15 per function (BBOB standard)

Evaluation Budget:

  • Budget: dim×10000 function evaluations
  • Independent runs: 15 (for statistical significance)
  • Seeds: 0-14 (reproducibility requirement)

Performance Metrics:

  • Target precision: 1e-8 (BBOB default)
  • Success rate at precision thresholds: [1e-8, 1e-6, 1e-4, 1e-2]
  • Expected Running Time (ERT) tracking

Raises

ValueError: If search space is invalid or function evaluation fails.

Notes

  • Modifies self.history if track_history=True
  • Uses self.seed for all random number generation
  • BBOB: Returns final best solution after max_iter or convergence

Computational Complexity:

  • Time per iteration: O(population_size2×dim)
  • Space complexity: O(population_size×dim)
  • BBOB budget usage: Typically uses 70-90% of dim*10000 budget for convergence

BBOB Performance Characteristics:

  • Best function classes: Multimodal, Separable functions
  • Weak function classes: Ill-conditioned, High-dimensional problems
  • Typical success rate at 1e-8 precision: 30-40% (dim=5)
  • Expected Running Time (ERT): Competitive on multimodal, slower on unimodal

Convergence Properties:

  • Convergence rate: Linear to sub-linear depending on gamma setting
  • Local vs Global: Excellent for multimodal due to multiple attractors
  • Premature convergence risk: Low - good diversity maintenance

Reproducibility:

  • Deterministic: Yes - Same seed guarantees same results
  • BBOB compliance: seed parameter required for 15 independent runs
  • Initialization: Uniform random sampling in [lower_bound, upper_bound]
  • RNG usage: numpy.random.default_rng(self.seed) throughout

Implementation Details:

  • Parallelization: Not supported in current implementation
  • Constraint handling: Clamping to bounds after position updates
  • Numerical stability: Uses NumPy operations for numerical stability

Known Limitations:

  • Quadratic complexity can be slow for large populations
  • Parameter gamma requires problem-specific tuning
  • BBOB known issues: May struggle on high-dimensional ill-conditioned functions

Version History:

  • v0.1.0: Initial implementation
  • Current: BBOB-compliant with seed parameter support

References

[1] Yang, X.-S. (2009). "Firefly Algorithms for Multimodal Optimization." In: Stochastic Algorithms: Foundations and Applications (SAGA 2009), Lecture Notes in Computer Science, vol. 5792, Springer, pp. 169-178. https://doi.org/10.1007/978-3-642-04944-6_14

[2] Hansen, N., Auger, A., Ros, R., Mersmann, O., Tušar, T., Brockhoff, D. (2021). "COCO: A platform for comparing continuous optimizers in a black-box setting." Optimization Methods and Software, 36(1), 114-144. https://doi.org/10.1080/10556788.2020.1808977

COCO Data Archive:

Implementation:

See Also

BatAlgorithm: Another nature-inspired algorithm by Yang using echolocation BBOB Comparison: BA and FA have similar performance on multimodal problems

ParticleSwarm: Classic swarm intelligence algorithm BBOB Comparison: FA often shows better diversity maintenance

GlowwormSwarmOptimization: Similar light-based attraction mechanism BBOB Comparison: FA generally more widely studied and benchmarked

AbstractOptimizer: Base class for all optimizers opt.benchmark.functions: BBOB-compatible test functions

Related BBOB Algorithm Classes:

  • Evolutionary: GeneticAlgorithm, DifferentialEvolution
  • Swarm: ParticleSwarm, AntColony, BatAlgorithm
  • Gradient: AdamW, SGDMomentum

Benchmark Performance

Interactive fitness landscape of a representative multimodal benchmark function (drag to rotate, scroll to zoom):

Convergence, final-fitness distribution and performance profile on rastrigin (5D), averaged over independent runs (compared against representative baselines):


Source Code

View the implementation: firefly_algorithm.py

Released under the MIT License.