Skip to content

About

This package aims to provide tools for calculating the key metrics used to compare multiobjective optimization methods.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

Repository files navigation

MultiObjectiveMetrics.jl

Docs (dev) CI Coverage

Performance indicators for multiobjective optimization: Purity, Γ-spread, Δ-spread, Covering and exact hypervolume, built on dominance with an explicit tolerance. Each indicator is implemented from its primary source, with every edge-case convention documented. Requires Julia 1.10 or later; no runtime dependencies.

Installation

The package is not registered. Add it from its GitHub repository:

import Pkg
Pkg.add(url = "https://github.com/VectorOptimizationGroup/MultiObjectiveMetrics.jl")

Quick Example

using MultiObjectiveMetrics

A = [[0.0, 1.0], [0.25, 0.75], [0.5, 0.5], [1.0, 0.0]]   # front of solver A
B = [[0.1, 0.8], [0.6, 0.45], [0.7, 0.7]]                # front of solver B

R = nondominated(vcat(nondominated(A), nondominated(B))) # reference front

purity(A, R)                       # fraction of A in R (higher is better)
gamma_spread(A, R)                 # largest gap (lower is better)
delta_spread(A, R)                 # uniformity of the spread (lower is better)
covering(A, B)                     # fraction of B weakly dominated by A
hypervolume(A, [1.1, 1.1])         # exact, explicit reference point
normalized_hypervolume(A, R)       # normalized by ideal and nadir of R

Point sets can also be the columns or rows of a matrix: eachcol(M), eachrow(M). All objectives are minimized.

Documentation

The documentation gives the definition and source of each indicator, the conventions for edge cases, how to build performance profiles, and the API reference. Instructions for building it locally are in docs/README.md.

Run the tests from the package directory:

julia --project -e 'using Pkg; Pkg.test()'

Acknowledgements

The MetricsRel.jl module of MAMBO-paper, by N. Fazzio, L. F. Prudente and M. L. Schuverdt, motivated this package and served as its reference implementation; the parity values in the test suite were computed with it. The code of this package was written independently from the primary sources.

Citation

If you use MultiObjectiveMetrics.jl in research, please cite the software using the metadata in CITATION.cff.

License

MultiObjectiveMetrics.jl is distributed under the MIT License.

About

This package aims to provide tools for calculating the key metrics used to compare multiobjective optimization methods.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages