moocore: Core Algorithms for Multi-Objective Optimization#

Version: 0.1.7.dev0 (What’s new)

Date May 19, 2025

Useful links: Install | Source Repository | Issue Tracker

This webpage documents the moocore Python package. There is also a moocore R package.

The goal of the moocore project (multi-objective/moocore) is to collect fast implementations of core mathematical functions and algorithms for multi-objective optimization and make them available to different programming languages via similar interfaces. These functions include:

  • Identifying and filtering dominated vectors.

  • Quality metrics such as (weighted) hypervolume, epsilon, IGD, etc.

  • Computation of the Empirical Attainment Function. The empirical attainment function (EAF) describes the probabilistic distribution of the outcomes obtained by a stochastic algorithm in the objective space.

Most critical functionality is implemented in C, with the R and Python packages providing convenient interfaces to the C code.

Keywords: empirical attainment function, summary attainment surfaces, EAF differences, multi-objective optimization, bi-objective optimization, performance measures, performance assessment

API Reference

The reference guide contains a detailed description of the functions, modules, and objects.

API reference
Examples

Detailed examples and tutorials.

Examples

Benchmarks#

The following plots compare the speed of computing the hypervolume indicator in 3D and 4D using moocore, pymooo, BoTorch, DEAP-er and jMetalPy.

pic1 pic2

The following plots compare the speed of finding nondominated solutions, equivalent to moocore.is_nondominated(), in 2D and 3D using moocore, pymooo, and BoTorch.

pic3 pic4

The following plot compares the speed of computing the epsilon and IGD+ metrics using moocore, pymooo, and jMetalPy.

pic5 pic6