/Metaheuristics.jl

High performance metaheuristics for optimization purely coded in Julia.

Primary LanguageJuliaOtherNOASSERTION

Metaheuristics

High performance metaheuristics for optimization purely coded in Julia.

Build Status Coverage Status Doc DOI

Installation

Open the Julia (Julia 1.1 or Later) REPL and press ] to open the Pkg prompt. To add this package, use the add command:

pkg> add Metaheuristics

Or, equivalently, via the Pkg API:

julia> import Pkg; Pkg.add("Metaheuristics")

Algorithms

  • ECA: Evolutionary Centers Algorithm
  • DE: Differential Evolution
  • PSO: Particle Swarm Optimization
  • ABC: Artificial Bee Colony
  • MOEA/D-DE: Multi-objective Evolutionary Algorithm based on Decomposition
  • GSA: Gravitational Search Algorithm
  • SA: Simulated Annealing
  • WOA: Whale Optimization Algorithm
  • NSGA-II: A fast and elitist multi-objective genetic algorithm: NSGA-II
  • NSGA-III: Evolutionary Many-Objective Optimization Algorithm Using Reference-Point-Based Nondominated Sorting Approach

Performance Indicators

  • GD: Generational Distance
  • IGD, IGD+: Inverted Generational Distance (Plus)
  • C-metric: Covering Indicator
  • HV: Hypervolume
  • Spacing Indicator
  • and more...

Quick Start

Assume you want to solve the following minimization problem.

Rastrigin Surface

Minimize:

Eq

where Eq, i.e., Eq for Eq. D is the dimension number, assume D=10.

Solution

Firstly, import the Metaheuristics package:

using Metaheuristics

Code the objective function:

f(x) = 10length(x) + sum( x.^2 - 10cos.(2π*x)  )

Instantiate the bounds, note that bounds should be a $2\times 10$ Matrix where the first row corresponds to the lower bounds whilst the second row corresponds to the upper bounds.

D = 10
bounds = [-5ones(D) 5ones(D)]'

Approximate the optimum using the function optimize.

result = optimize(f, bounds)

Optimize returns a State datatype which contains some information about the approximation. For instance, you may use mainly two functions to obtain such approximation.

@show minimum(result)
@show minimizer(result)

Contributing

Please, be free to send me your PR, issue or any comment about this package for Julia.