jMetal is a Java-based framework for multi-objective optimization with metaheuristics. The last stable version is 7.5. The most recent documentation is hosted in https://jmetal.readthedocs.io.
jMetal 7.5 is a Maven project structured in the following sub-projects:
| Sub-project | Contents |
|---|---|
| jmetal-core | Core classes |
| jmetal-algorithm | Algorithm implementations |
| jmetal-problem | Benchmark problems |
| jmetal-lab | Experimentation and visualization |
| jmetal-parallel | Parallel extensions |
| jmetal-auto | Auto-design and configuration |
| jmetal-component | Component-based algorithms |
- jMetalPy: jMetal in Python
- SAES: Python library to analyse and compare the performance of multi-objective algorithms
The scripts/ directory contains Python utilities for visualising Pareto fronts produced by
jMetal algorithms (any FUN.csv file):
Install dependencies and run:
# venv python -m venv .venv && source .venv/bin/activate pip install -r scripts/requirements.txt # conda conda create -n jmetal python=3.11 && conda activate jmetal pip install -r scripts/requirements.txt # Usage examples python scripts/plot_front.py FUN.csv python scripts/plot_front.py FUN.csv referenceFront.csv --mode side --output fig.png python scripts/plot_front_interactive.py FUN.csv referenceFront.csv --mode both
- [09/09/2026] Added RVEA* and iRVEA, two variants of RVEA for problems with irregular Pareto
fronts, contributed by Nicolás Rodríguez Uribe (@NicolasRodriguezUribe). RVEA* implements the
reference vector regeneration strategy from Cheng, Jin, Olhofer, Sendhoff, "A Reference Vector
Guided Evolutionary Algorithm for Many-objective Optimization", IEEE Transactions on
Evolutionary Computation 20(5), 773-791, 2016
(Section VI); iRVEA implements Liu, Jin, Heiderich, Rodemann, "Adaptation of Reference Vectors
for Evolutionary Many-objective Optimization of Problems with Irregular Pareto Fronts", IEEE
Congress on Evolutionary Computation (CEC), 2019.
See
docs/rvea-variants.rstfor implementation notes. - [09/09/2026] Fixed
MultiObjectiveKnapsack.evaluate()so that constraint values are reset before being recomputed: re-evaluating the same solution instance previously accumulated its constraint violation degree across calls. Also added validation for empty objective/constraint matrices and for a mismatch between the number of capacities and the number of constraints. - [07/13/2026] Fixed the constraint sign convention of the CRE benchmark suite (CRE21-25, CRE31,
CRE32, CRE51): constraint values were clamped so that every solution appeared feasible to
ConstraintHandlingand the constraint comparators, regardless of the actual degree of constraint violation. Same class of bug already fixed for the CF suite (see the 06/12/2026 entry below), missed in that pass. - [07/13/2026] jMetal 7.5 is released.
- [07/10/2026] Added the full 50-problem CEC2021 real-world constrained multi-objective optimization benchmark suite (RWMOP, RCM01-RCM50), fixing several correctness bugs (wrong bounds, inverted constraint signs, mistranscribed formulas) present in the 3 problems already in the codebase. Reference: Kumar, Wu, Ali, Luo, Mallipeddi, Suganthan, Das, "A Benchmark-Suite of Real-World Constrained Multi-Objective Optimization Problems and some Baseline Results", Swarm and Evolutionary Computation, 67, 100961 (2021).
- [07/10/2026] Added the SDX (Synthetic Differences Crossover) operator for real-coded problems, contributed by Alejandro Santiago (A synthetic differences crossover operator for real-coded evolutionary algorithms, Evolutionary Intelligence 19(4), 110, 2026).
- [06/25/2026] Added Python scripts for Pareto front visualisation (
scripts/plot_front.pyandscripts/plot_front_interactive.py). - [06/12/2026] Added constraint handling components (feasibility rules, adaptive violation threshold, and improved epsilon) for the component-based MOEA/D and MOEA/D-DE algorithms, with examples combining them with unbounded external archives to solve constrained problems with three or more objectives. The constraint handling documentation has been updated.
- [06/12/2026] Fixed the constraint sign conventions of the CF benchmark suite and the handling of precomputed constraint violation degrees in the
ConstraintHandlingutility class. - [06/12/2026] jMetal 7.4 is released.
- [05/25/2026] jMetal 7.3 is released.
- [04/28/2026] jMetal 7.2 is released.
- [03/20/2026] jMetal 7.1 is released.
- [03/18/2026] Add RVEA (contributed by @NicolasRodriguezUribe)
- [03/02/2026] jMetal 7.0 is released.
- [03/01/2026] Add new solution creations stragegies: SobolSolutionsCreation and CauchySolutionsCreation.
- [02/23/2026] Refactored Check utility: added parameter-name-aware overloads and introduced several specific exceptions for clearer errors.
- [02/22/2026] All the unit and integration tests have been updated to jUnit6.
- [02/02/2026] Added the AverageHausdorffDistance quality indicator
- [12/18/2025] jMetal 6.10 is released.
- [12/18/2025] Added new selection (TruncationSelection, RankingSelection, StochasticUniversalSampling, BoltzmannSelection), replacement (RandomReplacement, TournamentReplacement), and solutions creation (OppositionBasedSolutionsCreation) components.
- [07/09/2025] jMetal 6.9 is released.
- [07/07/2025] jMetal 6.8 is released.
- [07/07/2025] Added new crossover (BLX-Alpha-Beta, Laplace, Arithmetic, Fuzzy recombination, UNDX) and mutation (Power Law, Levy Flight, Simple Random) operators for continuous problems.
- [06/18/2025] A new folder resources/referenceFrontsRSG have been added. It contains Pareto front approximations produced with the Reference Set Generator (DOI: https://doi.org/10.3390/math13101626) method. Contribution of Oliver Schütze.
- [05/09/2025] jMetal 6.7 is released.
- [05/09/2025] The jMetal project adopts Java 21.
- [01/17/2025] Added a variant of SMS-EMOA using differential evolution.
- [11/30/2024] Added single and multi-objective versions of the Knapsack problem.
- [11/22/2024] Added new crossover (Cycle, EdgeRecombination, ODX, Population-Based) and mutation (Displacement, Insert, Inversion, Scamble, SimpleInversion) operators for permutations. Contribution of Nicolas R. Uribe (@NicolasRodriguezUribe)
- [06/27/2024] The jMetal project adopts Java 19.
- [11/30/2023] The Zapotecas-Coello-Aguirre-benchmark (ZCAT) (https://doi.org/10.1016/j.swevo.2023.101350) is included in jMetal.
- [09/25/2023] The jMetal project adopts Java 17.
- [09/25/2023] Added a variant of NSGA-II using differential evolution.
- [07/19/2023] jMetal 6.1 is released.
- [07/04/2023]. Added the RWA benchmark, described in "Engineering applications of multi-objective evolutionary algorithms: A test suite of box-constrained real-world problems". DOI: https://doi.org/10.1016/j.engappai.2023.106192
- [12/13/2022] jMetal 6.0 is released.
- [9/12/2022] The master branch has been renamed main.
- [7/5/2022] The jMetal project adopts Java 14.
- [5/23/2022] Algorithm AGE-MOEA-II. Contribution of Annibale Panichella (@apanichella).
- [5/9/2022] Algorithm AGE-MOEA. Contribution of Annibale Panichella (@apanichella).
- [3/28/2022] The CF benchmark of constrained multi-objective problems, defined in Constrained Multiobjective Optimization: Test Problem Construction and Performance Evaluations, has been included.
- [3/28/2022] The constraint handling code has been refactorized and the documentation has been updated.