Skip to content

jMetalPy: Python version of the jMetal framework

jMetalPy is a Python framework for multi-objective optimization with metaheuristics. It provides a comprehensive set of algorithms, problems, and utilities for solving complex optimization problems.

New to jMetalPy?

Start with the Getting Started guide for a quick introduction.

Key Features

Algorithms : Local search, genetic algorithms, evolution strategies, simulated annealing, NSGA-II, NSGA-III, SMPSO, OMOPSO, MOEA/D, SMS-EMOA, GDE3, SPEA2, HYPE, IBEA, MOCell, and preference-based variants.

Problem Types : Benchmark problems (ZDT, DTLZ, WFG, ZCAT, FDA, LZ09, RE, RWA), constrained and unconstrained benchmark problems.

Analysis Tools : Quality indicators (hypervolume, IGD, IGD+, epsilon, average Hausdorff distance), statistical testing, visualization, and experimental frameworks.

Advanced Features : Parallel computing (Apache Spark, Dask), real-time plotting, and dynamic algorithms.

Quick Example

from jmetal.algorithm.multiobjective.nsgaii import NSGAII
from jmetal.operator import PolynomialMutation, SBXCrossover
from jmetal.problem import ZDT1
from jmetal.util.termination_criterion import StoppingByEvaluations

problem = ZDT1()
algorithm = NSGAII(
    problem=problem,
    population_size=100,
    offspring_population_size=100,
    mutation=PolynomialMutation(probability=1.0 / problem.number_of_variables(), distribution_index=20),
    crossover=SBXCrossover(probability=1.0, distribution_index=20),
    termination_criterion=StoppingByEvaluations(max_evaluations=25000),
)
algorithm.run()
solutions = algorithm.result()

Community & Support

  • 📚 Documentation: Comprehensive guides and API reference
  • 💬 Issues: Report bugs and request features on GitHub
  • 🤝 Contributing: Help improve jMetalPy — see Contributing
  • 📄 Citation: If you use jMetalPy in research, please cite our paper (see below)

Cite us

@article{BENITEZHIDALGO2019100598,
   title = "jMetalPy: A Python framework for multi-objective optimization with metaheuristics",
   journal = "Swarm and Evolutionary Computation",
   pages = "100598",
   year = "2019",
   issn = "2210-6502",
   doi = "https://doi.org/10.1016/j.swevo.2019.100598",
   url = "http://www.sciencedirect.com/science/article/pii/S2210650219301397",
   author = "Antonio Benítez-Hidalgo and Antonio J. Nebro and José García-Nieto and Izaskun Oregi and Javier Del Ser",
   keywords = "Multi-objective optimization, Metaheuristics, Software framework, Python, Statistical analysis, Visualization",
}