Metaheuristics: A Julia Package for Single- and Multi-Objective Optimization

Jesús-Adolfo Mejía-de-Dios, Efrén Mezura‐Montes · The Journal of Open Source Software · 2022

Metaheuristics is a Julia package that implements metaheuristic algorithms for solving global optimization problems that can contain constraints and either single or multiple objectives.The package exposes an easy-to-use API to enable testing without requiring lengthy configuration for choosing among the implemented optimizers.For example, to optimize an objective function 𝑓(𝑥) where solution 𝑥 is within the corresponding bounds using the Evolutionary Centers Algorithm optimizer, the user can call optimize(f, bounds, ECA()).Moreover, Metaheuristics provides common features required by the evolutionary computing community such as challenging test problems, performance indicators, and other notable utility functions.This paper presents the main features followed by some examples to illustrate the usage of this package for optimization. Statement of needReal-world problems often require sophisticated methods to solve.Metaheuristics are stochastic algorithms that approximate optimal solutions quickly where not all of the mathematical properties of the problem are known.Our package implements state-of-the-art algorithms for constrained, multi-, and many-objective optimization.It also includes many other utility functions such as performance indicators, scalable benchmark problems, constraint handling techniques, and multi-criteria decision-making methodologies.Although similar software has been proposed in different programming languages such as Python (Blank & Deb, 2020), MATLAB (Tian et al., 2017), C/C++ (Biscani &Izzo, 2020), and Java (Nebro et al., 2015), among others (Johnson, 2022), Metaheuristics is the first package in Julia containing ready-to-use metaheuristic algorithms and utility functions with a uniform API.There are also some packages implemented in Julia for global optimization.For example, Optim.jl (Mogensen & Riseth, 2018) implements global optimizers such as Particle Swarm Optimization, BlackBoxOptim.jl (Feldt, 2022) implements a couple of stochastic heuristics for black-box optimization, Evolutionary.jl(Wilde et al., 2021) is a framework for evolutionary computing, and CMAEvolutionStrategy.jl (Brea, 2022) implements a CMA Evolution Strategy.Unlike these packages, Metaheuristics can handle equality and inequality constraints and supports multi-objective problems.

Read the paper · More papers on PaperTik