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.
Note
📚 New to jMetalPy? Start with the Getting Started guide for a quick introduction.
Warning
Documentation of jMetal 1.9.0 is a work in progress! Some information may be missing or outdated.
| Target doc | v1.9.0 | 
jMetalPy (v1.9.0) provides:
Local search, genetic algorithms, evolution strategies, simulated annealing, NSGA-II, NSGA-III, SMPSO, OMOPSO, MOEA/D, SMS-EMOA, GDE3, SPEA2, HYPE, IBEA, and preference-based variants.
Benchmark problems (ZDT, DTLZ, FDA, LZ09, RE, RWA), constrained and unconstrained benchmark problems.
Quality indicators (hypervolume, IGD, IGD+, epsilon), statistical testing, visualization, and experimental frameworks.
Parallel computing (Apache Spark, Dask), real-time plotting, and dynamic algorithms.
from jmetal.algorithm.multiobjective.nsgaii import NSGAII
from jmetal.problem import ZDT1
problem = ZDT1()
algorithm = NSGAII(problem=problem, population_size=100)
algorithm.run()
solutions = algorithm.get_result()
📖 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
@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",
}