Skip to main content

MkDocs

ParetoBench

ParetoBench is a Python library that provides a collection of tools for the benchmarking of multi-objective optimization algorithms. It includes the following.

  • Multi-objective benchmark problems including analytical Pareto fronts when available
  • Container objects for storing and manipulating data from optimization algorithms
  • A standardized file format for saving the results of optimizations on benchmark problems
  • Tools for calculating convergence metrics on results and running statistical analyses on them to compare algorithms
  • Plotting utilities for objectives/decision variables and for both populations and series of populations (history objects)

Learn more about the project at the ParetoBench documentation website.

Installation

ParetoBench is available from pip and conda.

pip install paretobench

or

conda install paretobench

Containers and File Format

Objects and a file format for storing data from multi-objective optimization algorithms are included in the package.

  • Population - The atomic class of the library. Represents a single generation in a genetic algorithm complete with variables (x), objectives (f), and constraints (g).
  • History - A collection of populations representing the history of one run of a genetic algorithm.
  • Experiment - A benchmarking experiment with multiple histories representing multiple evaluations of a genetic algorithm, potentially on multiple problems as is used in benchmarking.

The Experiment objects may be saved to a standardized HDF5-backed format for long-term storage and interchange between codes.

Learn more about the containers in the following example notebook.

container_objects.ipynb

Plotting

Tools for plotting the data from multi-objective optimization algorithms are also included.

  • Pairwise decision variables plots for Population and History objects
    • Variable boundaries
    • Color coding or animation for showing multiple populations
    • Markers and alpha to distinguish non-dominated / infeasible solutions
  • Objective scatter plots for Population and History objects
    • Analytical Pareto fronts for library problems
    • Attainment surfaces in 2D and 3D
    • Color coding or animation for showing multiple populations
    • Markers and alpha to distinguish non-dominated / infeasible solutions

See more information in the following notebooks.

Benchmark Problems

Problem Objectives Variables Constraints PF Description
ZDT[1-3] 2 ≥2 0 Y Classic 2-objective suite; convex, non-convex, and disconnected fronts
ZDT4 2 10 0 Y Many local Pareto fronts
ZDT6 2 10 0 Y Non-uniform spacing along front
DTLZ[1-7] ≥2 ≥m 0 Y Scalable suite with varied front geometry and difficulty
DTLZ[8-9] ≥2 ≥m ≥1 Y Scalable constrained problems
WFG[1-9] ≥2 ≥2m 0 Y Scalable suite with diverse transformations and front shapes
CF[1-7] 2 ≥2 1-2 Y CEC 2009 constrained 2-objective problems
CF[8-10] 3 ≥3 1 Y CEC 2009 constrained 3-objective problems
CTP[1-7] 2 ≥2 ≥1 - Constrained problems with varied feasible regions
SCH 2 1 0 - Schaffer's function
FON 2 3 0 - Fonseca-Fleming function
POL 2 2 0 - Poloni's two-objective function
KUR 2 ≥2 0 - Kursawe's function
CONSTR 2 2 2 - Simple constrained 2-objective problem
SRN 2 2 2 - Srinivas-Deb constrained problem
TNK 2 2 2 - Tanaka constrained problem
WATER 5 3 7 - Water resource management problem

Analytical Pareto Fronts

When possible, the benchmark problems include analytical Pareto fronts.

Parameter Naming Conventions

To help standardize the code in this package, the following naming convention is used throughout for parameters.

Some names are reserved for specific purposes. These are the following.

  • n: The dimension of the input vector to the problem, ie the number of decision variables.
  • m: The number of objectives.

All parameters should follow the PEP 8 naming scheme for variables. Whenever this leads to a parameter being named something different than what it was called in the problem's defining paper, this change must be documented in the class.

For Developers

Installation

  1. Install the development conda environment.
conda create env -f environment.yml
  1. Install the package in editing mode (with dependencies required for running tests)
pip install -e .[test]

Testing

Tests are written with the pytest framework. They can be run by calling pytest from the base of this repo with the package installed.

Release files for paretobench 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for paretobench 0.9.0
File Size Uploaded
paretobench-0.9.0.tar.gz 87.3 kB Details

Release files / paretobench-0.9.0.tar.gz

Download URL paretobench-0.9.0.tar.gz
Size 87.3 kB
Tags Source
SHA-256 checksum
How to use checksums
12fa1d7243352f872feaa807e6e9b66efddc7778aefde7ebe204862428cf3127
BLAKE2b-256 checksum
How to use checksums
a09af5b4a2ded32bc376c9f0fa2144ebf20f697b7d985a2ded6987f0667bd8ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.9.0 This release

1 release file

0.8.1

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page