Skip to content

Latest commit

 

History

5,076 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jMetal project Web site

Build Status Test Status Integration Test Status Documentation Status

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

Related projects

  • jMetalPy: jMetal in Python
  • SAES: Python library to analyse and compare the performance of multi-objective algorithms

Python scripts (NEW)

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

Changelog

  • [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.rst for 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 ConstraintHandling and 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.py and scripts/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 ConstraintHandling utility 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.

About

jMetal: a framework for multi-objective optimization with metaheuristics

Topics

Resources

Stars

559 stars

Watchers

52 watching

Forks

Releases

Packages

Used by

Contributors

Languages