Metaheuristics
Metaheuristics: A Julia Package for Single- and Multi-Objective Optimization - Published in JOSS (2022)
Science Score: 95.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 9 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org -
✓Committers with academic emails
1 of 9 committers (11.1%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Keywords from Contributors
Repository
High-performance metaheuristics for optimization coded purely in Julia.
Basic Info
- Host: GitHub
- Owner: jmejia8
- License: other
- Language: Julia
- Default Branch: master
- Homepage: https://jmejia8.github.io/Metaheuristics.jl/stable/
- Size: 4.09 MB
Statistics
- Stars: 282
- Watchers: 7
- Forks: 27
- Open Issues: 21
- Releases: 31
Topics
Metadata Files
README.md
Metaheuristics

High-performance metaheuristics for global optimization.
Installation
Open the Julia 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
julia> import Pkg; Pkg.add("Metaheuristics")
Algorithms
Some representative metaheuristics are developed here, including those for single- and multi-objective optimization. Moreover, some constraint handling techniques have been considered in most of the implemented algorithms.
Combinatorial Optimization
- GRASP: Greedy randomized adaptive search procedure.
- VND: Variable Neighborhood Descent.
- VNS: Variable Neighborhood Search.
- BRKGA: Biased Random Key Genetic Algorithm.
Single-Objective Optimization
- ECA: Evolutionary Centers Algorithm
- DE: Differential Evolution
- PSO: Particle Swarm Optimization
- SA: Simulated Annealing
- MCCGA: Machine-coded Compact Genetic Algorithm
- GA: Genetic Algorithm
- and more...
Multi-Objective Optimization
- MOEA/D-DE: Multi-objective Evolutionary Algorithm based on Decomposition
- 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
- SMS-EMOA: An EMO algorithm using the hypervolume measure as the selection criterion
- SPEA2: Improved Strength Pareto Evolutionary Algorithm
- CCMO: Coevolutionary Framework for Constrained Multiobjective Optimization
Performance Indicators
- GD: Generational Distance
- IGD, IGD+: Inverted Generational Distance (Plus)
- C-metric: Covering Indicator
- HV: Hypervolume
- Δₚ (Delta p): Averaged Hausdorff distance
- Spacing Indicator
- and more...
Multi-Criteria Decision-Making
Multi-Criteria Decision Making methods are available, including:
- Compromise Programming
- Region of Interest Archiving
- Interface for JMcDM (a package for Multiple-criteria decision-making)
Quick Start
Assume you want to solve the following minimization problem.

Minimize:
$$f(x) = 10D + \sum{i=1}^D xi^2 - 10\cos(2\pi x_i)$$
where $x\in [-5, 5]^D$, that is, each coordinate in $x$ is between -5 and 5. Use $D=10$.
Solution
Firstly, import the Metaheuristics package:
julia
using Metaheuristics
Code the objective function:
julia
f(x) = 10length(x) + sum( x.^2 - 10cos.(2π*x) )
Instantiate the bounds:
julia
D = 10
bounds = boxconstraints(lb = -5ones(D), ub = 5ones(D))
Also, bounds can be a $2\times 10$ Matrix where the first row corresponds to the
lower bounds whilst the second row corresponds to the upper bounds.
Approximate the optimum using the function optimize.
julia
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 an approximation.
julia
@show minimum(result)
@show minimizer(result)
Documentation
See the documentation for more details, examples and options.
How to cite?
Please cite the package using the bibtex entry
bibtex
@article{metaheuristics2022,
doi = {10.21105/joss.04723},
url = {https://doi.org/10.21105/joss.04723},
year = {2022},
publisher = {The Open Journal},
volume = {7},
number = {78},
pages = {4723},
author = {Jesús-Adolfo Mejía-de-Dios and Efrén Mezura-Montes},
title = {Metaheuristics: A Julia Package for Single- and Multi-Objective Optimization},
journal = {Journal of Open Source Software} }
or the citation string
Mejía-de-Dios et al., (2022). Metaheuristics: A Julia Package for Single- and Multi-Objective Optimization. Journal of Open Source Software, 7(78), 4723, https://doi.org/10.21105/joss.04723
in your scientific paper if you use Metaheristics.jl.
Contributing
Please feel free to send me your PR, issue or any comment about this package for Julia.
Owner
- Name: Jesús-Adolfo Mejía
- Login: jmejia8
- Kind: user
- Location: México
- Company: Applied Mathematics Research Center, UAdeC
- Website: https://jmejia.bi-level.org
- Twitter: _jmejia
- Repositories: 148
- Profile: https://github.com/jmejia8
Full-Time Researcher. Interested on Single/Multi/Bi-level Optimization.
JOSS Publication
Metaheuristics: A Julia Package for Single- and Multi-Objective Optimization
Authors
Tags
optimization multi-objective metaheuristics evolutionary algorithmsGitHub Events
Total
- Create event: 1
- Commit comment event: 5
- Issues event: 4
- Release event: 1
- Watch event: 26
- Issue comment event: 5
- Push event: 17
- Pull request event: 5
- Fork event: 3
Last Year
- Create event: 1
- Commit comment event: 5
- Issues event: 4
- Release event: 1
- Watch event: 26
- Issue comment event: 5
- Push event: 17
- Pull request event: 5
- Fork event: 3
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Jesus Mejia | j****d@g****m | 729 |
| Mehmet Hakan Satman | m****n@g****m | 24 |
| J S | 4****p | 10 |
| Daniel González | d****s@g****m | 5 |
| Pietro Monticone | 3****e | 4 |
| Jonathan Fischer PEPE | j****7@j****u | 2 |
| alecloudenback | a****k | 1 |
| Margaret Camilletti | m****i@g****m | 1 |
| Andrés Riedemann | 3****0 | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 74
- Total pull requests: 47
- Average time to close issues: 27 days
- Average time to close pull requests: 13 days
- Total issue authors: 29
- Total pull request authors: 12
- Average comments per issue: 2.47
- Average comments per pull request: 0.89
- Merged pull requests: 47
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 5
- Pull requests: 3
- Average time to close issues: 5 days
- Average time to close pull requests: about 23 hours
- Issue authors: 5
- Pull request authors: 1
- Average comments per issue: 0.8
- Average comments per pull request: 0.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- jmejia8 (24)
- jbytecode (10)
- changlinsen (3)
- jonathanfischer97 (3)
- licheng0794 (3)
- jbiffl (2)
- aplavin (2)
- FeldrinH (2)
- RoyCCWang (2)
- jdossgollin (1)
- mohamed82008 (1)
- michaelsachs (1)
- JuliaTagBot (1)
- Corkman99 (1)
- ManuelIndac0 (1)
Pull Request Authors
- jmejia8 (22)
- jbytecode (14)
- danielskatz (3)
- jonathanfischer97 (2)
- pitmonticone (2)
- mcamilletti1 (2)
- longemen3000 (2)
- idoby (1)
- alecloudenback (1)
- DaniGlez (1)
- PaulDebus (1)
- svilupp (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- julia 174 total
- Total dependent packages: 6
- Total dependent repositories: 0
- Total versions: 32
juliahub.com: Metaheuristics
High-performance metaheuristics for optimization coded purely in Julia.
- Homepage: https://jmejia8.github.io/Metaheuristics.jl/stable/
- Documentation: https://docs.juliahub.com/General/Metaheuristics/stable/
- License: MIT
-
Latest release: 3.4.0
published 10 months ago
Rankings
Dependencies
- actions/cache v1 composite
- actions/checkout v2 composite
- codecov/codecov-action v1 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-processcoverage v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite
- JuliaRegistries/TagBot v1 composite
- actions/checkout v2 composite
- julia-actions/setup-julia latest composite

