Metaheuristics

Metaheuristics: A Julia Package for Single- and Multi-Objective Optimization - Published in JOSS (2022)

https://github.com/jmejia8/metaheuristics.jl

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

constrained-optimization decision-making differential-evolution hypervolume multi-objective-optimization nsga2 optimization pso simulated-annealing

Keywords from Contributors

differential-equations ode
Last synced: 4 months ago · JSON representation

Repository

High-performance metaheuristics for optimization coded purely in Julia.

Basic Info
Statistics
  • Stars: 282
  • Watchers: 7
  • Forks: 27
  • Open Issues: 21
  • Releases: 31
Topics
constrained-optimization decision-making differential-evolution hypervolume multi-objective-optimization nsga2 optimization pso simulated-annealing
Created about 8 years ago · Last pushed 9 months ago
Metadata Files
Readme Funding License

README.md

Metaheuristics

Metaheuristics logo

High-performance metaheuristics for global optimization.

Build Status codecov Aqua QA Doc Doc DOI

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

SMS-EMOA in Metaheuristics.jl

  • 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:

Quick Start

Assume you want to solve the following minimization problem.

Rastrigin Surface

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

Full-Time Researcher. Interested on Single/Multi/Bi-level Optimization.

JOSS Publication

Metaheuristics: A Julia Package for Single- and Multi-Objective Optimization
Published
October 26, 2022
Volume 7, Issue 78, Page 4723
Authors
Jesús-Adolfo Mejía-de-Dios ORCID
Artificial Intelligence Research Institute, University of Veracruz, MEXICO
Efrén Mezura-Montes ORCID
Artificial Intelligence Research Institute, University of Veracruz, MEXICO
Editor
Vissarion Fisikopoulos ORCID
Tags
optimization multi-objective metaheuristics evolutionary algorithms

GitHub 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

All Time
  • Total Commits: 777
  • Total Committers: 9
  • Avg Commits per committer: 86.333
  • Development Distribution Score (DDS): 0.062
Past Year
  • Commits: 11
  • Committers: 1
  • Avg Commits per committer: 11.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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)
jhu.edu: 1

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
enhancement (12) new features (8) question (6) bug (3) new metaheuristic (2) help wanted (2) good first issue (1)
Pull Request Labels
enhancement (1)

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.

  • Versions: 32
  • Dependent Packages: 6
  • Dependent Repositories: 0
  • Downloads: 174 Total
Rankings
Stargazers count: 4.2%
Average: 8.0%
Forks count: 8.4%
Dependent packages count: 9.4%
Dependent repos count: 9.9%
Last synced: 4 months ago

Dependencies

.github/workflows/CI.yml actions
  • 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
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/documentation-github-actions.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite