All Projects → jmejia8 → Metaheuristics.jl

jmejia8 / Metaheuristics.jl

Licence: other
High-performance metaheuristics for optimization coded purely in Julia.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Metaheuristics.jl

open-box
Generalized and Efficient Blackbox Optimization System.
Stars: ✭ 64 (-55.56%)
Mutual labels:  constrained-optimization, multi-objective-optimization
rBAS
Implementation of the (beetle antennae search) BAS algorithm and its mutations in R code
Stars: ✭ 25 (-82.64%)
Mutual labels:  constrained-optimization, multi-objective-optimization
Moo-GBT
Library for Multi-objective optimization in Gradient Boosted Trees
Stars: ✭ 63 (-56.25%)
Mutual labels:  constrained-optimization, multi-objective-optimization
open-box
Generalized and Efficient Blackbox Optimization System [SIGKDD'21].
Stars: ✭ 174 (+20.83%)
Mutual labels:  constrained-optimization, multi-objective-optimization
Scikit Opt
Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Optimization Algorithm,Immune Algorithm, Artificial Fish Swarm Algorithm, Differential Evolution and TSP(Traveling salesman)
Stars: ✭ 2,791 (+1838.19%)
Mutual labels:  simulated-annealing, pso
Multiobjective EGO algorithms
The standard and parallel multiobjective EGO algorithms
Stars: ✭ 22 (-84.72%)
Mutual labels:  constrained-optimization, multi-objective-optimization
AI-Programming-using-Python
This repository contains implementation of different AI algorithms, based on the 4th edition of amazing AI Book, Artificial Intelligence A Modern Approach
Stars: ✭ 43 (-70.14%)
Mutual labels:  simulated-annealing
opt4j
Modular Java framework for meta-heuristic optimization
Stars: ✭ 25 (-82.64%)
Mutual labels:  multi-objective-optimization
KnapsackFX
Solving Knapsack 0/1 problem with various Local Search algorithms like Hill Climbing, Genetic Algorithms, Simulated Annealing, Tabu Search
Stars: ✭ 25 (-82.64%)
Mutual labels:  simulated-annealing
Random-Name-Picker
Simple, beautiful Android app to help you choose from a list of names at random. Downloaded 560,000+ times on Google Play with a 4.5+ rating after 3,500+ reviews.
Stars: ✭ 37 (-74.31%)
Mutual labels:  decision-making
biteopt
Derivative-Free Optimization Method for Global Optimization (C++)
Stars: ✭ 91 (-36.81%)
Mutual labels:  differential-evolution
pdfo
Powell's Derivative-Free Optimization solvers
Stars: ✭ 56 (-61.11%)
Mutual labels:  constrained-optimization
neuro-evolution
A project on improving Neural Networks performance by using Genetic Algorithms.
Stars: ✭ 25 (-82.64%)
Mutual labels:  nsga2
DrugEx
Deep learning toolkit for Drug Design with Pareto-based Multi-Objective optimization in Polypharmacology
Stars: ✭ 128 (-11.11%)
Mutual labels:  multi-objective-optimization
mcts
🌳 Domain independent implementation of Monte Carlo Tree Search methods.
Stars: ✭ 15 (-89.58%)
Mutual labels:  decision-making
RL-ROBOT
Reinforcement Learning framework for Robotics
Stars: ✭ 81 (-43.75%)
Mutual labels:  decision-making
MAP-Elites
Python implementation of the genetic algorithm MAP-Elites with applications in constrained optimization
Stars: ✭ 38 (-73.61%)
Mutual labels:  constrained-optimization
sopt
sopt:A simple python optimization library
Stars: ✭ 42 (-70.83%)
Mutual labels:  simulated-annealing
psopy
A SciPy compatible super fast Python implementation for Particle Swarm Optimization.
Stars: ✭ 33 (-77.08%)
Mutual labels:  constrained-optimization
NSGAII.jl
A NSGA-II implementation in Julia
Stars: ✭ 18 (-87.5%)
Mutual labels:  nsga2

Metaheuristics

Metaheuristics logo

High-performance metaheuristics for global optimization.

Build Status codecov Doc 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

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.

Single-Objective Optimization

  • ECA: Evolutionary Centers Algorithm
  • DE: Differential Evolution
  • PSO: Particle Swarm Optimization
  • ABC: Artificial Bee Colony
  • GSA: Gravitational Search Algorithm
  • SA: Simulated Annealing
  • WOA: Whale Optimization Algorithm
  • MCCGA: Machine-coded Compact Genetic Algorithm
  • GA: Genetic Algorithm

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 x_i^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:

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 an approximation.

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

Documentation

See the documentation for more details, examples and options.

Contributing

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].