/natureOptimToolbox

Toolbox for optimization with nature-inspired algorithms

Primary LanguagePython

Nature Optim[ization] Toolbox

Overview

A collection of nature inspired optimization algorithms. Every optimization algorithm inherits from the BaseOptimizer class using the step() function from each optimization algorithm.

Implemented so far:

  • Artificial Bee Colony
  • Cuckoo Search
  • Bat Search
  • Firefly Search
  • Whale Optimization Algorithm
  • Gray Wolf Optimizer

Install

Setup venv:

make setup

Install requirements:

make install

Run an example script:

make run

Test:

make test

Usage

import numpy as np
from population import Population
from artifical_bee_colony import ArtificialBeeColony
from example_functions import sphere

population_size = 25       
dim_individual = 2          
lb = -5.12                  
ub = 5.12                   

error_tol = 0.01
limit = 100                 
n_generations = 100         

objective_function = sphere

# Generate a population
population = Population(population_size, 
                        dim_individual, 
                        lb, 
                        ub, 
                        objective_function
                        )

# Artificial Bee Colony Algorithm
abc = ArtificialBeeColony(population, 
                            limit, 
                            n_generations,
                            error_tol=error_tol,
                            verbose=False
                            )   
result = abc.run()
print("Artificial Bee Colony Algorithm")
print(f"Best solution: {result.best_solution}")
print(f"Best solution fitness: {result.best_fitness:.2f}")
result.plot_phenotypic_diversity()
result.plot_genotypic_diversity()

ToDos:

  • More algorithms:
    • Dragonfly

    • Flower Pollination Algorithm

    • Simulated Annealing

    • Particle Swarm Obtimization

    • Genetic Algorithm