diff --git a/.github/workflows/check_python_package.yaml b/.github/workflows/check_python_package.yaml new file mode 100644 index 0000000..5bd82ab --- /dev/null +++ b/.github/workflows/check_python_package.yaml @@ -0,0 +1,33 @@ +name: Check + +on: + push: + pull_request: + branches: ["main"] + +jobs: + test: + strategy: + fail-fast: false + matrix: + runs-on: [ubuntu-latest, macos-latest, windows-latest] + python-version: ["3.10", "3.11", "3.12", "3.13"] + runs-on: ${{matrix.runs-on}} + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + python-version: ${{ matrix.python-version }} + + - name: Install the project + run: uv sync --all-extras --dev + + - name: Lint with ruff + run: uv run ruff check --output-format=github . + + - name: Run tests + run: uv run pytest --cov=opltools --cov-report=term-missing diff --git a/.github/workflows/run_to_html.yml b/.github/workflows/run_to_html.yml index de599d4..2d28e87 100644 --- a/.github/workflows/run_to_html.yml +++ b/.github/workflows/run_to_html.yml @@ -16,25 +16,16 @@ jobs: uses: actions/checkout@v5 with: ref: ${{ github.event.pull_request.head.ref }} - # Value already defaults to true, but `persist-credentials` is required to push new commits to the repository. persist-credentials: true - - - name: Set up Python - uses: actions/setup-python@v4 + - name: Install uv + uses: astral-sh/setup-uv@v7 with: - python-version: '3.x' - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r utils/requirements.txt - + python-version: "3.10" + - name: Install the project + run: uv sync --all-extras --dev - name: Generate html - run: | - python yaml_to_html.py - + run: uv run yaml_to_html.py - name: Commit changes uses: stefanzweifel/git-auto-commit-action@v7 with: - commit_message: "Auto-update HTML files" - + commit_message: "chore: Auto-update HTML files" diff --git a/SCHEMA.md b/SCHEMA.md new file mode 100644 index 0000000..50de382 --- /dev/null +++ b/SCHEMA.md @@ -0,0 +1,307 @@ +# OPL Schema + +The OPL schema catalogs optimization **problems**, **suites**, **generators**, and their **implementations** in a single, machine-readable format. + +Three design choices shape everything below: + +1. **One flat library, keyed by ID.** + Every entity lives in a `Library` dict. + Suites reference problems, problems reference implementations using their respective ID. + There is no embedding of problems or implementations within suites to facilitate reuse. + F.e. an implementation might be referenced by multiple problems or suites. +2. **Numeric fields accept a scalar, a set, or a range.** + A problem may have exactly `2` objectives, one of `{2, 3, 5}`, or any value in `{min: 2, max: 50}`. + The same union type is used for variable dimensions and constraint counts. +3. **Three-valued logic for yes/no fields.** + Many boolean fields (f.e. `hard`, `allows_partial_evaluation`, ...) [`YesNoSome`](#yesnosome) as their value. + We lose some expressive power but simplify the data entry. + If we force authors to decide on yes or no, then we would need more complex structures for variables, constraints etc. and that would make the usual case unnecessarily complex. + +## Contents + +- [Library](#library) +- [Thing types](#thing-types) + - [Implementation](#implementation) + - [ProblemLike](#problemlike) (shared fields) + - [Problem](#problem) + - [Suite](#suite) + - [Generator](#generator) +- [Shared building blocks](#shared-building-blocks) + - [Variable](#variable) / [VariableType](#variabletype) + - [Constraint](#constraint) / [ConstraintType](#constrainttype) + - [Reference](#reference) / [Link](#link) + - [ValueRange](#valuerange) + - [YesNoSome](#yesnosome) + +--- + +## Notation / Conventions + +- When an attribute is followed by a `?`, it is optional and can be left out. +- When we refer to a list of unique items, we call them a set. + Technically they are a set in Python, but in the YAML representation they are a list. + However, they _must_ be unique (i.e. obey the set property) + +## Library + +A `Library` is a dict from ID to a [Thing](#thing-types). +IDs are free-form but must be unique and the convention is to add a prefix marking the type to avoid collisions: + +| Prefix | Type | +|---------|------------------| +| `impl_` | Implementation | +| `fn_` | Problem | +| `suite_`| Suite | +| `gen_` | Generator | + +On load the library validates that every ID referenced by a suite (`problems`) or problem (`implementations`) exists and has the correct type. Suites also have their `fidelity_levels` auto-populated from their problems. + +```yaml +impl_coco: + type: implementation + name: COCO + description: Comparing Continuous Optimisers +fn_sphere: + type: problem + name: Sphere + objectives: [1] + implementations: [impl_coco] +suite_bbob: + type: suite + name: BBOB + problems: [fn_sphere] +``` + +--- + +## Thing types + +All entities inherit from `Thing`, which only carries a discriminator: + +```yaml +type: problem # or: suite | generator | implementation +``` + +We want to have as flat a structure as possible to make exploring and searching OPL as easy as possible. +That's one of the reasons the top level object is a dictionary of dissimilar things. +But we need to be able to tell them apart so we have a `type` field to discriminate between them. + +### Implementation + +A pointer to code that implements one or more problems. +Intentionally minimal so that the schema describes *what* a problem is, not how to run it. +There are separate files which contain curated usage examples for problems or suites keyed by their respective IDs. + +| Field | Type | Notes | +|-------------------|-----------------------------------|----------------------------------------------| +| `name` | str | required | +| `description` | str | required | +| `language` | str? (e.g. `Python`, `C`) | | +| `links` | list of [Link](#link)? | repo, release, docs… | +| `evaluation_time` | set of str? | free-form list ("8 minutes", "fast") | +| `requirements` | str or list of str? | URL to requirements file or list of packages | + +```yaml +impl_coco: + type: implementation + name: COCO + description: Comparing Continuous Optimisers benchmarking platform + language: c + links: + - {type: repository, url: https://github.com/numbbo/coco-experiment} +impl_py_cocoex: + type: implementation + name: Python bindings for COCO + description: The Python bindings for the experimental part of the COCO framework + language: Python + links: + - {type: source, url: https://github.com/numbbo/coco-experiment/tree/main/build/python} + - {type: package, url: https://pypi.org/project/coco-experiment/} +``` + +### ProblemLike + +Fields shared by [Problem](#problem), [Suite](#suite), and [Generator](#generator). +The schema deliberately puts most descriptive fields here so suites can be characterised without explicitly having to add all problems in the suite. + +| Field | Type | Notes | +|------------------------------------------|------------------------------------------------|----------------------------------------------------| +| `name` | str | required | +| `long_name` | str? | | +| `description` | str? (markdown) | longer prose | +| `tags` | set of str? | free-form keywords | +| `references` | set of [Reference](#reference)? | | +| `implementations` | set of IDs? | must resolve to [Implementation](#implementation)s | +| `objectives` | set of int? | e.g. `{1}`, `{2, 3}` — **not** a ValueRange | +| `variables` | set of [Variable](#variable)? | | +| `constraints` | set of [Constraint](#constraint)? | omit entirely for unconstrained | +| `dynamic_type` | set of str? | `{"no"}`, `{"time-varying"}`… | +| `noise_type` | set of str? | `{"none"}`, `{"gaussian"}`… | +| `allows_partial_evaluation` | [YesNoSome](#yesnosome)? | | +| `can_evaluate_objectives_independently` | [YesNoSome](#yesnosome)? | | +| `modality` | set of str? | `{"unimodal"}`, `{"multimodal"}` | +| `fidelity_levels` | set of int? | `{1}` = single-fidelity, `{1,2}` = multi-fidelity | +| `code_examples` | set of str? | paths to example scripts | +| `evaluation_time` | set of str? | free-form list ("8 minutes", "fast") | +| `source` | set of str? | `{"artificial"}`, `{"real-world"}` | + +> `objectives` is a set of integers because we don't assume extreme scalability in this property so explicit enumeration is fine. +> Dimensions of variables on the other hand are ranges because here problems often are scalable over wide ranges. + +When no `evaluation_time` is set, it percolates up from any referenced implementations. +The same is true for the `variables` and `constraints` properties of a suite that has references to problems. + +`fidelity_levels` is auto-unioned from member problems at validation time. + +### Problem + +One optimization problem (possibly parameterised by instances). + +Adds: + +| Field | Type | Notes | +|-------------|--------------------------------------------|--------------------------------------------| +| `instances` | [ValueRange](#valuerange) or list of str? | e.g. `{min: 1, max: 15}` or named variants | + +```yaml +fn_sphere: + type: problem + name: Sphere + objectives: [1] + variables: [{type: continuous, dim: {min: 2, max: 40}}] + modality: [unimodal] + source: [artificial] + instances: {min: 1, max: 15} + implementations: [impl_coco] +``` + +### Suite + +A curated, fixed collection of problems. + +Adds: + +| Field | Type | Notes | +|------------|--------------|-----------------------------------------------| +| `problems` | set of IDs? | must resolve to [Problem](#problem)s | + +```yaml +suite_bbob: + type: suite + name: BBOB + problems: [fn_sphere, fn_rosenbrock, fn_rastrigin] + objectives: [1] + source: [artificial] + implementations: [impl_coco] +``` + +### Generator + +A parametric family of problems — unlike a [Suite](#suite), the member problems are not enumerated. Uses the same fields as [ProblemLike](#problemlike) with no additions; the distinction from [Problem](#problem) is that a generator produces instances on demand. + +```yaml +gen_mpm2: + type: generator + name: MPM2 + description: Multiple peaks model, second instantiation + objectives: [1] + variables: [{type: continuous, dim: {min: 1}}] + modality: [multimodal] +``` + +--- + +## Shared building blocks + +### Variable + +A group of decision variables of the same type. +Multi-type problems list multiple entries. +While you can have multiple entries of the same type, this should be justified in some way like when you can evaluate the problem on only one subset of variables. + +| Field | Type | Default | +|--------|-----------------------------------------------|----------------------| +| `type` | [VariableType](#variabletype) | `unknown` | +| `dim` | int, set of int, [ValueRange](#valuerange), or null | `0` | + +```yaml +variables: + - {type: continuous, dim: 10} + - {type: integer, dim: {min: 1, max: 5}} +``` + +### VariableType + +`continuous | integer | binary | categorical | unknown`. +Use `unknown` for permutation/combinatorial problems the schema doesn't yet distinguish **and** add an appropriate tag. +We are actively watching for unknown variable types and are open to extending the above list if there is a critical mass of problems to justify it. + +### Constraint + +A group of constraints. +To indicate that the problem is unconstrained, you need an _empty_ `constraints` field. +A missing `constraints` field or if it is set to `null` means it is not known if unconstrained. + +| Field | Type | Notes | +|------------|-----------------------------------------------|------------------------------------| +| `type` | [ConstraintType](#constrainttype) | default `unknown` | +| `hard` | [YesNoSome](#yesnosome)? | hard vs. soft | +| `equality` | [YesNoSome](#yesnosome)? | equality vs. inequality | +| `number` | int, set of int, [ValueRange](#valuerange), null | | + +```yaml +constraints: + - {type: box, hard: yes, number: 10} + - {type: linear, hard: some, equality: no, number: {min: 1}} +``` + +### ConstraintType + +`box | linear | function | unknown`. `function` covers non-linear/black-box constraints. + +### Reference + +Bibliographic pointer. +Requires either a `title` or a `link` and optionally a list of `authors`. + +```yaml +references: + - title: "Evolutionsstrategie - Optimisierung technischer Systeme nach Prinzipien der biologischen Evolution" + authors: + - Ingo Rechenberg +``` + +### Link + +`{type?: str, url: str}`. +`type` is free-form (`repository`, `arxiv`, `paper`, `doi`, ...). +`url` is a URL to some resource. + +If `type` is `doi`, please use the full URL (starting with `https://doi.org/...`) instead of the raw DOI. + +### ValueRange + +An inclusive numeric range type. +At least one of `min`/`max` must be given. +If `min` is given and `max` is missing, it does not imply that there is no upper bound. +There might be one, it is just not known. +The same applies for the case where `max` is given and `min` is missing. + +```yaml +dim: {min: 2} # 2 or more +dim: {min: 2, max: 40} # between 2 and 40 +dim: {max: 100} # up to 100 +``` + +Used by `Variable.dim`, `Constraint.number`, `Problem.instances`. + +### YesNoSome + +Three-valued flag: `yes | no | some | ?` (the last serialises as the literal `'?'` string, meaning unknown). +`some` captures the common case where *part* of something has some property. +For example only some constraints might hard but we don't know the exact number of hard and soft constraints, only the total number. + +```yaml +constraints: [{type: box, hard: some}] +allows_partial_evaluation: "unknown" +``` diff --git a/docs/index.html b/docs/index.html index 78f6a70..d0e1c9b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -26,1207 +26,3386 @@
| name | -textual description | -suite/generator/single | -objectives | -dimensionality | -variable type | -constraints | -dynamic | -noise | -multi-fidelity | -source (real-world/artificial) | -reference | -implementation | +ID | +Name | +Type | +Variable Types | +Total Variables | +Objectives | +Properties | +Constraint Types | +Total Constraints | +Dynamics | +Noise | +Partial Evaluations | +Independent Objectives | +Fidelity Levels | +Full Name | +Description | +Tags | +References | +Implementations | +Modality | +Evaluation Time | +Examples | +Source | +Binary Vars | +Categorical Vars | +Continuous Vars | +Integer Vars | +Implementation Names | +Implementation Languages | +Implementation Evaluation Times | +Implementation Links | +Implementation Descriptions | +Implementation Requirements | +Hard Box Constraints | +Soft Box Constraints | +Hard Linear Constraints | +Soft Linear Constraints | +Hard Function Constraints | +Soft Function Constraints |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BBOB | -- | suite | -1 | -scalable | +|||||||||||||||||||||||||||||||||||||||||||||||
| fn_ato | +ATO | +Problem | continuous | -no | -no | -no | -no | -- | https://doi.org/10.1080/10556788.2020.1808977 | -https://github.com/numbbo/coco | -|||||||||||||||||||||||||||||||||||||||||
| BBOB-biobj | -- | suite | +10 | 2 | -2-40 | -continuous | -no | -no | -no | -no | - | https://doi.org/10.48550/arXiv.1604.00359 | -https://github.com/numbbo/coco | -||||||||||||||||||||||||||||||||||||||
| BBOB-noisy | - | suite | -1 | -scalable | -continuous | -no | -no | -yes | -no | - | https://hal.inria.fr/inria-00369466 | -https://web.archive.org/web/20210416065610/https://coco.gforge.inria.fr/doku.php?id=downloads | -|||||||||||||||||||||||||||||||||||||||
| BBOB-largescale | - | suite | -1 | -20-640 | -continuous | -no | -no | -no | +no | - | https://doi.org/10.48550/arXiv.1903.06396 | -https://github.com/numbbo/coco | -|||||||||||||||||||||||||||||||||||||||
| BBOB-mixint | - | suite | -1 | -5-160 | -integer;continuous;mixed | -no | -no | -no | -no | - | https://doi.org/10.1145/3321707.3321868 | -https://github.com/numbbo/coco | -|||||||||||||||||||||||||||||||||||||||
| BBOB-biobj-mixint | +Parameters of the Modules of the Automatic Train Operation are optimized; two objectives: minimizing energy consumption and minimizing driving duration. | - | suite | -2 | -5-160 | -integer;continuous;mixed | -no | -no | -no | -no | - | https://doi.org/10.1145/3321707.3321868 | -https://github.com/numbbo/coco | -||||||||||||||||||||||||||||||||||||||
| BBOB-constrained | - | suite | -1 | -2-40 | -continuous | -yes | -no | -no | -no | +unimodal | - | http://numbbo.github.io/coco-doc/bbob-constrained/ | -https://github.com/numbbo/coco | -||||||||||||||||||||||||||||||||||||||
| MOrepo | - | suite | -2 | -? | -combinatorial | -? | -? | -? | -no | +real-world | - | https://github.com/MCDMSociety/MOrepo | -|||||||||||||||||||||||||||||||||||||||
| ZDT | +10 | +- | suite | -2 | -scalable | -continuous;binary | -no | -no | -no | -no | - | https://doi.org/10.1162/106365600568202 | -https://github.com/anyoptimization/pymoo | -||||||||||||||||||||||||||||||||||||||
| DTLZ | - | suite | -2+ | -scalable | -continuous | -no | -no | -no | -no | - | https://doi.org/10.1109/CEC.2002.1007032 | -https://pymoo.org/problems/many/dtlz.html | -|||||||||||||||||||||||||||||||||||||||
| WFG | - | suite | -2+ | -scalable | -continuous | -no | -no | -no | -no | - | https://doi.org/10.1109/TEVC.2005.861417 | -https://pymoo.org/problems/many/wfg.html | -|||||||||||||||||||||||||||||||||||||||
| CDMP | - | suite | -2+ | -scalable | -continuous | -yes | -? | -? | -no | - | https://doi.org/10.1145/3321707.3321878 | -? | -|||||||||||||||||||||||||||||||||||||||
| SDP | - | suite | -2+ | -scalable | -continuous | -no | -yes | -? | -no | - | https://doi.org/10.1109/TCYB.2019.2896021 | -? | -|||||||||||||||||||||||||||||||||||||||
| MaOP | - | suite | -2+ | -scalable | -continuous | -no | -no | -? | -no | - | https://doi.org/10.1016/j.swevo.2019.02.003 | -? | |||||||||||||||||||||||||||||||||||||||
| BP | +|||||||||||||||||||||||||||||||||||||||||||||||||||
| fn_building_spatial | +Building spatial design | +Problem | +binary | continuous | +>=2 | +2 | - | suite | -2+ | -scalable | -continuous | -no | -no | -? | -no | +unknown | box | +>=2 | - | https://doi.org/10.1109/CEC.2019.8790277 | -? | -||||||||||||||||||||||||||||||||
| GPD | - | generator | -2+ | -scalable | -continuous | -optional | -no | -optional | no | - | https://doi.org/10.1016/j.asoc.2020.106139 | -? | -|||||||||||||||||||||||||||||||||||||||
| ETMOF | - | suite | -2-50 | -25-10000 | -continuous | -no | -yes | -no | -no | - | https://doi.org/10.48550/arXiv.2110.08033 | -https://github.com/songbai-liu/etmo | -|||||||||||||||||||||||||||||||||||||||
| MMOPP | +Optimise the spatial layout of a building to minimise energy consumption for climate control and minimise the strain on the structure. Many hard constraints; mixed-variable (continuous+binary); expensive evaluations. | - | suite | -2-7 | -? | -? | -yes | -no | -no | -no | +Building spatial design, https://hdl.handle.net/1887/81789 | +impl_bso_toolbox | - | http://www5.zzu.edu.cn/system/_content/download.jsp?urltype=news.DownloadAttachUrl&owner=1327567121&wbfileid=4764412 | -http://www5.zzu.edu.cn/ecilab/info/1036/1251.htm | -||||||||||||||||||||||||||||||||||||
| CFD | -expensive evaluations 30s-15m | -suite | -1-2 | -scalable | -? | -yes | -no | -no | -no | -real world | -https://doi.org/10.1007/978-3-319-99259-4_24 | -https://bitbucket.org/arahat/cfd-test-problem-suite | -|||||||||||||||||||||||||||||||||||||||
| GBEA | -expensive evaluations 5s-35s, RW-GAN-Mario and TopTrumps are part of GBEA | -suite | -1-2 | -scalable | -continuous | -no | -no | -yes | -no | -real world | -https://doi.org/10.1145/3321707.3321805 | -https://github.com/ttusar/coco-gbea | -|||||||||||||||||||||||||||||||||||||||
| Car structure | -54 constraints | -suite | -2 | -144-222 | -discrete | -yes | -no | -no | -no | -real world | -https://doi.org/10.1145/3205651.3205702 | -http://ladse.eng.isas.jaxa.jp/benchmark/ | -|||||||||||||||||||||||||||||||||||||||
| EMO2017 | +["1 second", "40 seconds"] | - | suite | -2 | -4-24 | -continuous | -no | -no | -no | -no | -real world | -https://www.ini.rub.de/PEOPLE/glasmtbl/projects/bbcomp/ | -https://www.ini.rub.de/PEOPLE/glasmtbl/projects/bbcomp/downloads/realworld-problems-bbcomp-EMO-2017.zip | -||||||||||||||||||||||||||||||||||||||
| JSEC2019 | -expensive evaluations 3s; 22 constraints | -single | -1-5 | -32 | -continuous | -yes | -no | -no | -no | -real world | -http://www.jpnsec.org/files/competition2019/EC-Symposium-2019-Competition-English.html | -http://www.jpnsec.org/files/competition2019/EC-Symposium-2019-Competition-English.html | -|||||||||||||||||||||||||||||||||||||||
| RE | +real-world | +>=1 | - | suite | -2-9 | -2-7 | -continuous;integer;mixed | -no | -no | -no | -no | -real world like | -https://doi.org/10.1016/j.asoc.2020.106078 | -https://github.com/ryojitanabe/reproblems | -|||||||||||||||||||||||||||||||||||||
| CRE | +>=1 | - | suite | -2-5 | -3-7 | -continuous;integer;mixed | -yes | -no | -no | -no | -real world like | -https://doi.org/10.1016/j.asoc.2020.106078 | -https://github.com/ryojitanabe/reproblems | -||||||||||||||||||||||||||||||||||||||
| Radar waveform | +BSO-toolbox | +C++ | +{'40 seconds', '1 second'} | +https://github.com/TUe-excellent-buildings/BSO-toolbox | +Building Spatial Design toolbox (TU/e) | - | single | -9 | -4-12 | -integer | -yes | -no | -no | -no | -real world | -https://doi.org/10.1007/978-3-540-70928-2_53 | -http://code.evanhughes.org/ | -||||||||||||||||||||||||||||||||||
| MF2 | +>=1 | - | suite | -1 | -1-n | -continuous | -no | -no | -no | -yes | - | https://doi.org/10.21105/joss.02049 | -https://github.com/sjvrijn/mf2 | -||||||||||||||||||||||||||||||||||||||
| AMVOP | - | suite | -1 | -scalable | -mixed continuous+ordinal+categorical+both | -no | -no | -no | -no | - | https://doi.org/10.1109/TEVC.2013.2281531 | -? | -|||||||||||||||||||||||||||||||||||||||
| RWMVOP | - | suite | -1 | -scalable | -continuous;mixed continuous+ordinal+categorical+both | -yes | -no | -no | -no | -real world | -https://doi.org/10.1109/TEVC.2013.2281531 | -? | |||||||||||||||||||||||||||||||||||||||
| SBOX-COST | -problems from BBOB but allows instances with the optimum close to the boundary | -suite | -1 | -scalable | +|||||||||||||||||||||||||||||||||||||||||||||||
| fn_convex_dtlz2 | +Convex DTLZ2 | +Problem | continuous | -no | -no | -no | -no | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | Variant of DTLZ2 with a convex Pareto front (instead of concave) | ++ | Convex DTLZ2, https://doi.org/10.1109/TEVC.2013.2281535 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | - | https://doi.org/10.48550/arXiv.2305.12221 | -https://github.com/IOHprofiler/IOHexperimenter/ | -||||||||||||||
| ρMNK-Landscapes | -tunable variable and objective dimensions; tunable multimodality and correlation between objectives | -generator | -scalable | -scalable | -binary | -no | -no | -no | -no | - | https://doi.org/10.1016/j.ejor.2012.12.019 | -https://gitlab.com/aliefooghe/mocobench/ | -|||||||||||||||||||||||||||||||||||||||
| mUBQP | -tunable variable and objective dimensions; tunable density and correlation between objectives | -generator | -scalable | -scalable | -binary | -no | -no | -no | -no | - | https://doi.org/10.1016/j.asoc.2013.11.008 | -https://gitlab.com/aliefooghe/mocobench/ | -|||||||||||||||||||||||||||||||||||||||
| ρmTSP | -tunable variable and objective dimensions; tunable instance type (euclidian/random); tunable correlation between objectives | -generator | -scalable | -scalable | -permutations | -no (apart from being permutations) | -no | -no | -no | - | https://doi.org/10.1007/978-3-319-45823-6_40 | -https://gitlab.com/aliefooghe/mocobench/ | -|||||||||||||||||||||||||||||||||||||||
| CEC2015-DMOO | - | suite | -2-3 | -? | -continuous | -? | -yes | -no | -no | - | Benchmark Functions for CEC 2015 Special Session and Competition on Dynamic Multi-objective Optimization | ||||||||||||||||||||||||||||||||||||||||
| Ealain | -Real-world-like, easily extensible to increase complexity | -generator | -1+ | -scalable | -continuous,binary,integer | -optional | -optional | -no | -optional | -Real-world-like | -https://doi.org/10.1145/3638530.3654299 | -https://github.com/qrenau/Ealain | -|||||||||||||||||||||||||||||||||||||||
| MA-BBOB | -Generator that creates affine combinations of BBOB functions | -generator | +|||||||||||||||||||||||||||||||||||||||||||||||||
| fn_emdo | +Electric Motor Design Optimization | +Problem | +integer | continuous | +26 | 1 | -scalable | -continuous | -no | -no | -no | +noisy | +unknown | box | +>=14 | ++ | noisy | no | -artificial | -https://doi.org/10.1145/3673908 | -https://github.com/IOHprofiler/IOHexperimenter/blob/master/example/Competitions/MA-BBOB/Example_MABBOB.ipynb | ++ | + | Electric Motor Design Optimization | +# Goal\nFind a design of a synchronous electric motor for power steering systems that minimizes costs and satisfies all constraints.\n\n# Motivation\nChallenging to find good solutions in a limited time.\n\n# Key Challenges\n* Time-consuming solution evaluation\n* Highly-constrained problem\n* Constraints are multimodal\n\nThis is not an available problem, but could be interesting to show to researchers which difficulties appear in real-world problems. | ++ | A Multi-Step Evaluation Process in Electric Motor Design, Tea Tušar; Peter Korošec; Bogdan Filipič, https://dis.ijs.si/tea/Publications/Tusar23Multistep.pdf | +impl_emdo | +multimodal | +8 minutes | ++ | real-world | ++ | + | 13 | +13 | +Electric Motor Design Optimization | +Python | +{'8 minutes'} | ++ | Not publicly available | ++ | >=1 | ++ | + | + | + | ||||||
| MPM2 | -nonlinear nonseparable nonsymmetric; scalable in terms of time to evaluate the objective function | -generator | +|||||||||||||||||||||||||||||||||||||||||||||||||
| fn_fleetopt | +FleetOpt | +Problem | +integer | +{54, 13208} | 1 | -scalable | -continuous | -no | -no | -no | -no | - | https://ls11-www.cs.tu-dortmund.de/_media/techreports/tr15-01.pdf | -https://github.com/jakobbossek/smoof/blob/master/inst/mpm2.py | -|||||||||||||||||||||||||||||||||||||
| Convex DTLZ2 | -Variant of DTLZ2 with a convex Pareto front (instead of concave) | -single | -2+ | -scalable | -continuous | -no | -no | -no | -no | +unknown | +>=1 | ++ | + | yes | ++ | + | + | UK healthcare organisation fleet optimisation: reduce the fleet of non-emergency healthcare trip vehicles while still ensuring all trips can be covered. Bilevel: upper level 54 vars, lower level 13208 vars. | ++ | FleetOpt, https://dl.acm.org/doi/abs/10.1145/3638530.3664137 | ++ | + | + | + | real-world | ++ | + | + | {54, 13208} | ++ | + | + | + | + | + | - | https://doi.org/10.1109/TEVC.2013.2281535 | -? | -|||||||||||||
| Inverted DTLZ1 | -Variant of DTLZ1 with an inverted Pareto front | -single | -2+ | -scalable | -continuous | -no | -no | -no | -no | - | https://doi.org/10.1109/TEVC.2013.2281534 | -? | -|||||||||||||||||||||||||||||||||||||||
| Minus DTLZ | -Variant of DTLZ that minimises the inverse of the base DTLZ functions | -suite | -2+ | -scalable | -continuous | -no | -no | -no | -no | - | https://doi.org/10.1109/TEVC.2016.2587749 | -? | -|||||||||||||||||||||||||||||||||||||||
| Minus WFG | -Variant of WFG that minimises the inverse of the base WFG functions | -suite | -2+ | -scalable | -continuous | -no | -no | -no | -no | - | https://doi.org/10.1109/TEVC.2016.2587749 | -? | -|||||||||||||||||||||||||||||||||||||||
| L1-ZDT | -Variant of ZDT with linkages between variables within one of two groups but not between variables in a different group; Linear recombination operators can potentially take advantage of the problem structure | -suite | -2 | -scalable | -continuous;binary | -no | -no | -no | -no | - | https://doi.org/10.1145/1143997.1144179 | -? | |||||||||||||||||||||||||||||||||||||||
| L2-ZDT | -Variant of ZDT with linkages between all variables; Linear recombination operators can potentially take advantage of the problem structure | -suite | +|||||||||||||||||||||||||||||||||||||||||||||||||
| fn_gasoline | +Gasoline direct injection engine design | +Problem | +integer | continuous | +14 | 2 | -scalable | -continuous;binary | -no | -no | -no | -no | +multi-fidelity | +unknown | +5 | ++ | + | + | + | [1, 2] | ++ | Multi-objective optimization to minimize fuel consumption and NOx emissions over a two-minute dynamic duty cycle, subject to five constraints (turbine inlet temperature, knock occurrences, peak cylinder pressure, peak cylinder pressure rise, total work). Seven decision variables cover hardware choices and engine control parameters. | ++ | Gasoline direct injection engine design, https://doi.org/10.1016/j.ejor.2022.08.032 | +impl_gasoline | ++ | [] | ++ | real-world | ++ | + | 7 | +7 | +Gasoline direct injection engine design | +Matlab Simulink / Wave RT | ++ | https://doi.org/10.1016/j.ejor.2022.08.032 | +Proprietary Matlab Simulink + Wave RT co-simulation | ++ | + | + | + | + | - | https://doi.org/10.1145/1143997.1144179 | -? | ||||||
| L3-ZDT | -Variant of L2-ZDT using a mapping to prevent linear recombination operators from potentially taking advantage of the problem structure | -suite | +|||||||||||||||||||||||||||||||||||||||||||||||||
| fn_invdeceptive_deceptive_rotell | +InverseDeceptiveTrap+RotatedEllipsoid / DeceptiveTrap+RotatedEllipsoid | +Problem | +binary | continuous | +>=2 | 2 | -scalable | -continuous;binary | -no | -no | -no | -no | - | https://doi.org/10.1145/1143997.1144179 | -? | -|||||||||||||||||||||||||||||||||||||
| L2-DTLZ | -Variant of DTLZ2 and DTLZ3 with linkages between all variables; Linear recombination operators can potentially take advantage of the problem structure | -suite | -2+ | -scalable | -continuous | -no | -no | -no | -no | - | https://doi.org/10.1145/1143997.1144179 | -? | -|||||||||||||||||||||||||||||||||||||||
| L3-DTLZ | -Variant of L2-DTLZ using a mapping to prevent linear recombination operators from potentially taking advantage of the problem structure | -suite | -2+ | -scalable | -continuous | -no | -no | -no | -no | - | https://doi.org/10.1145/1143997.1144179 | -? | -|||||||||||||||||||||||||||||||||||||||
| CEC2018 DT - CEC2018 Competition on Dynamic Multiobjective Optimisation | -14 problems. Time-dependent: Pareto front/Pareto set geometry; irregular Pareto front shapes; variable-linkage; number of disconnected Pareto front segments; etc. | -suite | -2 or 3 | -scalable? | -? | -no | -yes | -no | -no | ++ | + | + | + | + | + | + | + | Mixed-variable multi-objective test problems, https://doi.org/10.1145/3449726.3459521 | ++ | + | + | artificial | -https://www.academia.edu/download/94499025/TR-CEC2018-DMOP-Competition.pdf | -https://pymoo.org/problems/dynamic/df.html | -|||||||||||||||||||||||||||
| MODAct - multiobjective design of actuators | -Realistic Constrained Multi-Objective Optimization Benchmark Problems from Design. Need the https://github.com/epfl-lamd/modact package installed; evaluation times around 20ms | -suite | -2 3 4 or 5 | -20 | -mixed; integer and continuous | -yes | -no | -no | -no | -real-world | -https://doi.org/10.1109/TEVC.2020.3020046 | -https://pymoo.org/problems/constrained/modact.html | -|||||||||||||||||||||||||||||||||||||||
| IOHClustering | -Set of benchmark problems from clustering: optimization task is selecting cluster centers for a given set of data, with the number of clusters defining problem dimensionality. Includes both a suite and a generator. Based on ML clustering datasets | -suite; generator | -1 | -scalable | -continuous | -no | -no | -no | -no | -artificial, but based on real data | -https://arxiv.org/pdf/2505.09233 | -https://github.com/IOHprofiler/IOHClustering | +>=1 | ++ | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | ||||||||||||||||||||||||
| GNBG-II | -Generalized Numerical Benchmark Generator (version 2). Also in IOH https://github.com/IOHprofiler/IOHGNBG | -suite; generator | -1 | -scalable | +|||||||||||||||||||||||||||||||||||||||||||||||
| fn_inverted_dtlz1 | +Inverted DTLZ1 | +Problem | continuous | -no | -no | -no | -no | -artificial | -https://dl.acm.org/doi/pdf/10.1145/3712255.3734271 | -https://github.com/rohitsalgotra/GNBG-II | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | Variant of DTLZ1 with an inverted Pareto front | ++ | Inverted DTLZ1, https://doi.org/10.1109/TEVC.2013.2281534 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | |||||||
| GNBG | -Generalized Numerical Benchmark Generator | -suite; generator | -1 | -scalable | +|||||||||||||||||||||||||||||||||||||||||||||||
| fn_jsec2019 | +JSEC2019 | +Problem | continuous | -no | -no | -no | -no | +32 | +[1, 2, 3, 4, 5] | ++ | unknown | +22 | ++ | + | + | + | + | + | expensive evaluations 3s; 22 constraints | ++ | JPNSEC EC-Symposium 2019 competition, http://www.jpnsec.org/files/competition2019/EC-Symposium-2019-Competition-English.html | +impl_jsec2019 | ++ | 3s | ++ | real-world | ++ | + | 32 | ++ | JSEC 2019 competition | ++ | {'3s'} | +http://www.jpnsec.org/files/competition2019/EC-Symposium-2019-Competition-English.html | +JPNSEC EC-Symposium 2019 competition problem | ++ | + | + | + | + | + | + | |||||||||
| fn_onemax_sphere_deceptive_rotell | +Onemax+Sphere / DeceptiveTrap+RotatedEllipsoid | +Problem | +binary | continuous | +>=2 | +2 | ++ | + | + | + | + | + | + | + | + | + | + | Mixed-variable multi-objective test problems, https://doi.org/10.1145/3449726.3459521 | ++ | + | + | artificial | -https://arxiv.org/abs/2312.07083 | -https://github.com/Danial-Yazdani/GNBG-Generator | +>=1 | ++ | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| DynamicBinVal | -Four versions of the dynamic binary value problem | -suite | -1 | -scalable | -binary | -no | -yes | -no | -no | +||||||||||||||||||||||||||||||||||||||||||
| fn_onemax_sphere_zeromax_sphere | +Onemax+Sphere / Zeromax+Sphere | +Problem | +binary | continuous | +>=2 | +2 | ++ | + | + | + | + | + | + | + | + | + | + | Onemax+Sphere / Zeromax+Sphere, https://doi.org/10.1145/3449726.3459521 | ++ | + | + | artificial | -https://arxiv.org/pdf/2404.15837 | -https://github.com/IOHprofiler/IOHexperimenter | +>=1 | ++ | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| PBO | -Suite of 25 binary optimization problems | -suite | -1 | -scalable | -binary | -no | -no | -no | +|||||||||||||||||||||||||||||||||||||||||||
| fn_radar_waveform | +Radar waveform | +Problem | +integer | +4-12 | +9 | ++ | unknown | +>=1 | ++ | + | + | + | + | + | + | + | Radar waveform design, https://doi.org/10.1007/978-3-540-70928-2_53 | +impl_radar_waveform | ++ | [] | ++ | real-world | ++ | + | + | 4-12 | +Evan Hughes radar waveform code | ++ | + | http://code.evanhughes.org/ | +Radar waveform design reference implementation | ++ | + | + | + | + | + | + | |||||||||||||
| gen_beacon | +BEACON | +Generator | +continuous | +>=1 | +2 | ++ | box | +0 | ++ | no | ++ | + | Continuous Bi-objective Benchmark problems with Explicit Adjustable COrrelatioN control | +Generator for bi-objective benchmark problems with explicitly controlled correlations in continuous spaces. Multimodal with random structure. | ++ | BEACON, https://dl.acm.org/doi/10.1145/3712255.3734303 | +impl_beacon | +multimodal | +negligible | +artificial | -https://dl.acm.org/doi/pdf/10.1145/3319619.3326810 | -https://github.com/IOHprofiler/IOHexperimenter | ++ | + | >=1 | ++ | BEACON | +Python | +{'negligible'} | +https://github.com/Stebbet/BEACON/ | +Continuous Bi-objective Benchmark with Explicit Adjustable COrrelatioN control | ++ | 0 | ++ | + | + | + | ||||||||||||||
| W-model | -Tunable generator for binary optimization based on several difficulty features | -generator | -1 | -scalable | -binary | -no | -no | -no | +|||||||||||||||||||||||||||||||||||||||||||
| gen_bono_bench | +BONO-Bench | +Generator | +continuous | +>=1 | +2 | ++ | box | +>=1 | ++ | no | ++ | + | Bi-objective Numerical Optimization Benchmark | +Bi-objective problem generator and suite with scalable continuous decision space. Features complex problem properties and Pareto front approximations with error guarantees for the hypervolume and exact R2 indicators. | ++ | + | impl_bonobench | +multimodal | +[] | +artificial | -https://dl.acm.org/doi/abs/10.1145/3205651.3208240?casa_token=S4U_Pi9f6MwAAAAA:U9ztNTPwmupT8K3GamWZfBL7-8fqjxPtr_kprv51vdwA-REsp0EyOFGa99BtbANb0XbqyrVg795hIw | -https://github.com/thomasWeise/BBDOB_W_Model | ++ | + | >=1 | ++ | BONO-Bench | +Python | ++ | https://github.com/schaepermeier/bonobench | +Bi-objective Numerical Optimization Benchmark (BONO-Bench) | ++ | >=1 | ++ | + | + | + | ||||||||||||||
| Submodular Optimitzation | -set of graph-based submodular optimization problems from 4 problem types | -suite | -1 | -scalable | -binary | -no | -no | -no | -no | +||||||||||||||||||||||||||||||||||||||||||
| gen_ealain | +Ealain | +Generator | +binary | continuous | integer | +>=3 | +[1, 10, 2, 3, 4, 5, 6, 7, 8, 9] | +dynamic | multi-fidelity | +unknown | +>=1 | +optional | ++ | + | + | [1, 2] | ++ | Real-world-like, easily extensible to increase complexity | ++ | Ealain, https://doi.org/10.1145/3638530.3654299 | +impl_ealain | ++ | [] | ++ | real-world-like | +>=1 | ++ | >=1 | +>=1 | +Ealain | ++ | + | https://github.com/qrenau/Ealain | +Real-world-like extensible benchmark problem generator | ++ | + | + | + | + | + | + | |||||||||||||
| gen_gnbg | +GNBG | +Generator | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Generator counterpart of GNBG. | ++ | GNBG, https://arxiv.org/abs/2312.07083 | +impl_gnbg | ++ | [] | ++ | artificial | ++ | + | >=1 | ++ | GNBG Generator | ++ | + | https://github.com/Danial-Yazdani/GNBG-Generator | +Generalized Numerical Benchmark Generator | ++ | + | + | + | + | + | + | |||||||||||||
| gen_gnbg_ii | +GNBG-II | +Generator | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Generator counterpart of GNBG-II. | ++ | GNBG-II, https://dl.acm.org/doi/pdf/10.1145/3712255.3734271 | +["impl_gnbg_ii", "impl_iohgnbg"] | ++ | [] | ++ | artificial | ++ | + | >=1 | ++ | IOHGNBG | GNBG-II | ++ | + | https://github.com/IOHprofiler/IOHGNBG | https://github.com/rohitsalgotra/GNBG-II | +IOHprofiler version of GNBG | Generalized Numerical Benchmark Generator version 2 | ++ | + | + | + | + | + | + | |||||||||||||
| gen_gpd | +GPD | +Generator | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | +noisy | +unknown | +>=1 | ++ | optional | ++ | + | + | + | + | + | GPD generator, https://doi.org/10.1016/j.asoc.2020.106139 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| gen_iohclustering | +IOHClustering | +Generator | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Generator counterpart of the IOHClustering suite. | ++ | IOHClustering, https://arxiv.org/pdf/2505.09233 | +impl_iohclustering | +multimodal | +[] | ++ | artificial-from-real-data | ++ | + | >=1 | ++ | IOHClustering | ++ | + | https://github.com/IOHprofiler/IOHClustering | +Clustering-based optimization benchmark built on ML datasets | ++ | + | + | + | + | + | + | |||||||||||||
| gen_ma_bbob | +MA-BBOB | +Generator | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Generator that creates affine combinations of BBOB functions | ++ | MA-BBOB, https://doi.org/10.1145/3673908 | +["impl_iohexperimenter", "impl_ma_bbob"] | +multimodal | +[] | ++ | artificial | ++ | + | >=1 | ++ | MA-BBOB (IOHexperimenter) | IOHexperimenter | +C++/Python | ++ | https://github.com/IOHprofiler/IOHexperimenter/blob/master/example/Competitions/MA-BBOB/Example_MABBOB.ipynb | https://github.com/IOHprofiler/IOHexperimenter | +Example notebook for MA-BBOB in IOHexperimenter | IOHprofiler experimenter framework | ++ | + | + | + | + | + | + | |||||||||||||
| gen_mpm2 | +MPM2 | +Generator | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | nonlinear nonseparable nonsymmetric; scalable in terms of time to evaluate the objective function | ++ | MPM2 technical report TR15-01, https://ls11-www.cs.tu-dortmund.de/_media/techreports/tr15-01.pdf | +impl_mpm2 | +multimodal | +[] | ++ | + | + | + | >=1 | ++ | MPM2 (smoof) | +Python | ++ | https://github.com/jakobbossek/smoof/blob/master/inst/mpm2.py | +Python implementation of MPM2 distributed with smoof | ++ | + | + | + | + | + | + | |||||||||||||
| gen_mubqp | +mUBQP | +Generator | +binary | +>=1 | +[1, 10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | tunable variable and objective dimensions; tunable density and correlation between objectives | ++ | mUBQP benchmark, https://doi.org/10.1016/j.asoc.2013.11.008 | +impl_mocobench | +["multimodal", "quadratic"] | +[] | ++ | + | >=1 | ++ | + | + | mocobench | +C++ | ++ | https://gitlab.com/aliefooghe/mocobench/ | +Multi-objective combinatorial optimization benchmark | ++ | + | + | + | + | + | + | |||||||||||||
| gen_puboi | +PUBOi | +Generator | +binary | +>=1 | +1 | ++ | + | + | + | + | no | ++ | + | Polynomial Unconstrained Binary Optimization with tunable importance | +A benchmark in which variable importance is tunable, based on the Walsh function. | ++ | PUBOi, https://link.springer.com/chapter/10.1007/978-3-031-04148-8_12 | +impl_puboi | ++ | [] | ++ | artificial | +>=1 | ++ | + | + | PUBO Importance Benchmark | +Python / C++ | ++ | https://gitlab.com/verel/pubo-importance-benchmark | +A benchmark in which variable importance is tunable, based on the Walsh function | ++ | + | + | + | + | + | + | |||||||||||||
| gen_randoptgen | +RandOptGen | +Generator | +binary | continuous | integer | +>=3 | +[1, 10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | no | ++ | + | RandOptGen | +A Unified Random Problem Generator for Single- and Multi-Objective Optimization Problems with Mixed-Variable Input Spaces. | ++ | + | impl_randoptgen | +multimodal | +milliseconds | ++ | artificial | +>=1 | ++ | >=1 | +>=1 | +RandOptGen | +Python | +{'milliseconds'} | +https://github.com/MALEO-research-group/RandOptGen | https://doi.org/10.1145/3712256.3726478 | +Unified Random Problem Generator for Single- and Multi-Objective Optimization with Mixed-Variable Input Spaces | ++ | + | + | + | + | + | + | |||||||||||||
| gen_rho_mnk_landscapes | +ρMNK-Landscapes | +Generator | +binary | +>=1 | +[1, 10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | tunable variable and objective dimensions; tunable multimodality and correlation between objectives | ++ | On the design of multi-objective evolutionary algorithms based on NK-landscapes, https://doi.org/10.1016/j.ejor.2012.12.019 | +impl_mocobench | +multimodal | +[] | ++ | + | >=1 | ++ | + | + | mocobench | +C++ | ++ | https://gitlab.com/aliefooghe/mocobench/ | +Multi-objective combinatorial optimization benchmark | ++ | + | + | + | + | + | + | |||||||||||||
| gen_rho_mtsp | +ρmTSP | +Generator | +unknown | +>=1 | +[1, 10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | tunable variable and objective dimensions; tunable instance type (euclidean/random); tunable correlation between objectives | ++ | On the impact of multi-objective scalability for the ρmTSP, https://doi.org/10.1007/978-3-319-45823-6_40 | +impl_mocobench | +["multimodal", "quadratic"] | +[] | ++ | + | + | + | + | + | mocobench | +C++ | ++ | https://gitlab.com/aliefooghe/mocobench/ | +Multi-objective combinatorial optimization benchmark | ++ | + | + | + | + | + | + | |||||||||||||
| gen_wmodel | +W-model | +Generator | +binary | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Tunable generator for binary optimization based on several difficulty features | ++ | W-model, https://dl.acm.org/doi/abs/10.1145/3205651.3208240 | +impl_wmodel | ++ | [] | ++ | artificial | +>=1 | ++ | + | + | BBDOB W-Model | ++ | + | https://github.com/thomasWeise/BBDOB_W_Model | +Tunable generator for binary optimization | ++ | + | + | + | + | + | + | |||||||||||||
| suite_amvop | +AMVOP | +Suite | +categorical | continuous | integer | +>=3 | +1 | ++ | + | + | + | + | + | + | + | + | + | + | AMVOP, https://doi.org/10.1109/TEVC.2013.2281531 | ++ | multimodal | ++ | + | + | + | >=1 | +>=1 | +>=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_bbob | +BBOB | +Suite | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | + | + | COCO: a platform for comparing continuous optimizers in a black-box setting, https://doi.org/10.1080/10556788.2020.1808977 | +impl_coco | +multimodal | ++ | + | + | + | + | >=1 | ++ | COCO framework | +C/Python | ++ | https://github.com/numbbo/coco | +Comparing Continuous Optimizers: black-box optimization benchmarking platform | ++ | + | + | + | + | + | + | |||||||||||||
| suite_bbob_biobj | +BBOB-biobj | +Suite | +continuous | +2-40 | +2 | ++ | + | + | + | + | + | + | + | + | + | + | BBOB bi-objective test suite, https://doi.org/10.48550/arXiv.1604.00359 | +impl_coco | +multimodal | ++ | + | + | + | + | 2-40 | ++ | COCO framework | +C/Python | ++ | https://github.com/numbbo/coco | +Comparing Continuous Optimizers: black-box optimization benchmarking platform | ++ | + | + | + | + | + | + | |||||||||||||
| suite_bbob_biobj_mixint | +BBOB-biobj-mixint | +Suite | +integer | continuous | +10-320 | +2 | ++ | + | + | + | + | + | + | + | + | + | + | BBOB bi-objective mixed-integer test suite, https://doi.org/10.1145/3321707.3321868 | +impl_coco | +multimodal | ++ | + | + | + | + | 5-160 | +5-160 | +COCO framework | +C/Python | ++ | https://github.com/numbbo/coco | +Comparing Continuous Optimizers: black-box optimization benchmarking platform | ++ | + | + | + | + | + | + | |||||||||||||
| suite_bbob_constrained | +BBOB-constrained | +Suite | +continuous | +2-40 | +1 | ++ | unknown | +>=1 | ++ | + | + | + | + | + | + | + | bbob-constrained documentation, http://numbbo.github.io/coco-doc/bbob-constrained/ | +impl_coco | +multimodal | ++ | + | + | + | + | 2-40 | ++ | COCO framework | +C/Python | ++ | https://github.com/numbbo/coco | +Comparing Continuous Optimizers: black-box optimization benchmarking platform | ++ | + | + | + | + | + | + | |||||||||||||
| suite_bbob_largescale | +BBOB-largescale | +Suite | +continuous | +20-640 | +1 | ++ | + | + | + | + | + | + | + | + | + | + | BBOB large-scale test suite, https://doi.org/10.48550/arXiv.1903.06396 | +impl_coco | +multimodal | ++ | + | + | + | + | 20-640 | ++ | COCO framework | +C/Python | ++ | https://github.com/numbbo/coco | +Comparing Continuous Optimizers: black-box optimization benchmarking platform | ++ | + | + | + | + | + | + | |||||||||||||
| suite_bbob_mixint | +BBOB-mixint | +Suite | +integer | continuous | +10-320 | +1 | ++ | + | + | + | + | + | + | + | + | + | + | BBOB mixed-integer test suite, https://doi.org/10.1145/3321707.3321868 | +impl_coco | +multimodal | ++ | + | + | + | + | 5-160 | +5-160 | +COCO framework | +C/Python | ++ | https://github.com/numbbo/coco | +Comparing Continuous Optimizers: black-box optimization benchmarking platform | ++ | + | + | + | + | + | + | |||||||||||||
| suite_bbob_noisy | +BBOB-noisy | +Suite | +continuous | +>=1 | +1 | +noisy | ++ | + | + | noisy | ++ | + | + | + | + | + | Real-parameter black-box optimization benchmarking: noisy functions definitions, https://hal.inria.fr/inria-00369466 | +impl_coco_legacy | +multimodal | ++ | + | + | + | + | >=1 | ++ | COCO legacy (bbob-noisy) | +C/Python | ++ | https://web.archive.org/web/20210416065610/https://coco.gforge.inria.fr/doku.php?id=downloads | +Archived COCO download page that hosted the bbob-noisy suite | ++ | + | + | + | + | + | + | |||||||||||||
| suite_bp | +BP | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | +noisy | ++ | + | + | unknown | ++ | + | + | + | + | + | BP benchmark, https://doi.org/10.1109/CEC.2019.8790277 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_brachytherapy | +Brachytherapy treatment planning | +Suite | +continuous | +100-500 | +[2, 3] | +multi-fidelity | +unknown | +>=1 | ++ | + | yes | ++ | [1, 2] | +Brachytherapy treatment planning | +Treatment planning for internal radiation therapy. Multi-objective with aggregated objectives; no public source code. | ++ | Brachytherapy treatment planning, https://www.sciencedirect.com/science/article/pii/S1538472123016781 | ++ | multimodal | ++ | + | real-world | ++ | + | 100-500 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_car_structure | +Car structure | +Suite | +integer | +144-222 | +2 | ++ | unknown | +54 | ++ | + | + | + | + | + | 54 constraints | ++ | Car structure design benchmark, https://doi.org/10.1145/3205651.3205702 | +impl_car_structure | ++ | + | + | real-world | ++ | + | + | 144-222 | +Car-structure benchmark | ++ | + | http://ladse.eng.isas.jaxa.jp/benchmark/ | +JAXA LADSE benchmark problems | ++ | + | + | + | + | + | + | |||||||||||||
| suite_cdmp | +CDMP | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | +dynamic | noisy | +unknown | +>=1 | +unknown | +unknown | ++ | + | + | + | + | + | CDMP benchmark, https://doi.org/10.1145/3321707.3321878 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_cec2013 | +CEC2013 | +Suite | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | suite used for cec2013 competition. Also in IOH. | ++ | CEC2013 definitions, https://peerj.com/articles/cs-2671/CEC2013.pdf | +["impl_cec2013", "impl_iohexperimenter"] | ++ | + | + | artificial | ++ | + | >=1 | ++ | IOHexperimenter | CEC2013 reference code | +C++/Python | ++ | https://github.com/IOHprofiler/IOHexperimenter | https://github.com/P-N-Suganthan/CEC2013 | +IOHprofiler experimenter framework | Suganthan's reference implementation | ++ | + | + | + | + | + | + | |||||||||||||
| suite_cec2015_dmoo | +CEC2015-DMOO | +Suite | +continuous | +0 | +[2, 3] | +dynamic | +unknown | +>=1 | +dynamic | ++ | + | + | + | + | + | + | Benchmark Functions for CEC 2015 Special Session and Competition on Dynamic Multi-objective Optimization | ++ | + | + | + | + | + | + | 0 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_cec2018_dt | +CEC2018 DT | +Suite | +unknown | +>=1 | +[2, 3] | +dynamic | ++ | + | dynamic | ++ | + | + | + | CEC2018 Competition on Dynamic Multiobjective Optimisation | +14 problems. Time-dependent: Pareto front/Pareto set geometry; irregular Pareto front shapes; variable-linkage; number of disconnected Pareto front segments; etc. | ++ | CEC2018 DMOP Competition TR, https://www.academia.edu/download/94499025/TR-CEC2018-DMOP-Competition.pdf | +impl_pymoo | ++ | + | + | artificial | ++ | + | + | + | pymoo | +Python | ++ | https://github.com/anyoptimization/pymoo | +Multi-objective optimization in Python | ++ | + | + | + | + | + | + | |||||||||||||
| suite_cec2022 | +CEC2022 | +Suite | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | suite used for cec2022 competition. Also in IOH. | ++ | CEC2022 TR, https://github.com/P-N-Suganthan/2022-SO-BO/blob/main/CEC2022%20TR.pdf | +["impl_cec2022", "impl_iohexperimenter"] | ++ | + | + | artificial | ++ | + | >=1 | ++ | IOHexperimenter | CEC2022 reference code | +C++/Python | ++ | https://github.com/IOHprofiler/IOHexperimenter | https://github.com/P-N-Suganthan/2022-SO-BO | +IOHprofiler experimenter framework | Suganthan's reference implementation | ++ | + | + | + | + | + | + | |||||||||||||
| suite_cfd | +CFD | +Suite | +unknown | +>=1 | +[1, 2] | ++ | unknown | +>=1 | ++ | + | + | + | + | + | expensive evaluations 30s-15m | ++ | CFD test problem suite, https://doi.org/10.1007/978-3-319-99259-4_24 | +impl_cfd | ++ | + | + | real-world | ++ | + | + | + | CFD test problem suite | ++ | {'15m', '30s'} | +https://bitbucket.org/arahat/cfd-test-problem-suite | +Expensive real-world CFD-based test problems | ++ | + | + | + | + | + | + | |||||||||||||
| suite_cre | +CRE | +Suite | +integer | continuous | +6-14 | +[2, 3, 4, 5] | ++ | unknown | +>=1 | ++ | + | + | + | + | + | + | + | Easy-to-evaluate real-world multi-objective optimization problems, Ryoji Tanabe; Hisao Ishibuchi, https://doi.org/10.1016/j.asoc.2020.106078 | +impl_reproblems | ++ | + | + | real-world-like | ++ | + | 3-7 | +3-7 | +reproblems | +Python | ++ | https://github.com/ryojitanabe/reproblems | +Real-world inspired multi-objective optimization problem suite | ++ | + | + | + | + | + | + | |||||||||||||
| suite_cuter | +CUTEr | +Suite | +binary | continuous | integer | +>=3 | +1 | ++ | unknown | +>=1 | ++ | + | no | ++ | + | + | A constrained and unconstrained testing environment. | ++ | CUTEr, https://dl.acm.org/doi/10.1145/962437.962439 | ++ | + | + | + | artificial | +>=1 | ++ | >=1 | +>=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_cutest | +CUTEst | +Suite | +binary | continuous | integer | +>=3 | +1 | ++ | unknown | box | +>=2 | ++ | + | no | ++ | + | Constrained and Unconstrained Testing Environment with safe threads | +CUTEst for optimization software | ++ | CUTEst, https://link.springer.com/article/10.1007/s10589-014-9687-3 | +impl_pycutest | +multimodal | ++ | + | artificial | +>=1 | ++ | >=1 | +>=1 | +pycutest | +Python / C++ / Fortran | ++ | https://github.com/jfowkes/pycutest | +Python interface to CUTEst | ++ | >=1 | ++ | + | + | + | + | |||||||||||||
| suite_dtlz | +DTLZ | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | + | + | Scalable multi-objective optimization test problems, Kalyanmoy Deb; Lothar Thiele; Marco Laumanns; Eckart Zitzler, https://doi.org/10.1109/CEC.2002.1007032 | +impl_pymoo | ++ | + | + | + | + | + | >=1 | ++ | pymoo | +Python | ++ | https://github.com/anyoptimization/pymoo | +Multi-objective optimization in Python | ++ | + | + | + | + | + | + | |||||||||||||
| suite_dynamicbinval | +DynamicBinVal | +Suite | +binary | +>=1 | +1 | +dynamic | ++ | + | dynamic | ++ | + | + | + | + | Four versions of the dynamic binary value problem | ++ | DynamicBinVal, https://arxiv.org/pdf/2404.15837 | +impl_iohexperimenter | ++ | + | + | artificial | +>=1 | ++ | + | + | IOHexperimenter | +C++/Python | ++ | https://github.com/IOHprofiler/IOHexperimenter | +IOHprofiler experimenter framework | ++ | + | + | + | + | + | + | |||||||||||||
| suite_emo2017 | +EMO2017 | +Suite | +continuous | +4-24 | +2 | ++ | + | + | + | + | + | + | + | + | + | + | BBComp EMO 2017, https://www.ini.rub.de/PEOPLE/glasmtbl/projects/bbcomp/ | +impl_emo2017 | ++ | + | + | real-world | ++ | + | 4-24 | ++ | EMO 2017 real-world problems | ++ | + | https://www.ini.rub.de/PEOPLE/glasmtbl/projects/bbcomp/downloads/realworld-problems-bbcomp-EMO-2017.zip | +BBComp EMO-2017 real-world problem archive | ++ | + | + | + | + | + | + | |||||||||||||
| suite_etmof | +ETMOF | +Suite | +continuous | +25-10000 | +[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 4, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 5, 50, 6, 7, 8, 9] | +dynamic | ++ | + | dynamic | ++ | + | + | + | + | + | + | Evolutionary many-task optimization framework, https://doi.org/10.48550/arXiv.2110.08033 | +impl_etmof | ++ | + | + | + | + | + | 25-10000 | ++ | ETMOF | ++ | + | https://github.com/songbai-liu/etmo | +Evolutionary many-task optimization framework | ++ | + | + | + | + | + | + | |||||||||||||
| suite_expobench | +EXPObench | +Suite | +continuous | categorical | integer | +30-405 | +1 | +noisy | +unknown | box | +>=2 | ++ | ["observational", "real-life"] | +no | ++ | + | EXPensive Optimization benchmark library | +Wind farm layout optimization, gas filter design, pipe shape optimization, hyperparameter tuning, and hospital simulation | ++ | EXPObench, https://doi.org/10.1016/j.asoc.2023.110744 | +impl_expobench | ++ | + | + | real-world | ++ | 10-135 | +10-135 | +10-135 | +EXPObench | +Python | +{'2 seconds', '80 seconds'} | +https://github.com/AlgTUDelft/ExpensiveOptimBenchmark | +EXPensive Optimization benchmark library (wind farm layout, gas filter design, pipe shape, hyperparameter tuning, hospital simulation) | ++ | >=1 | ++ | + | + | + | + | |||||||||||||
| suite_gbea | +GBEA | +Suite | +continuous | +>=1 | +[1, 2] | +noisy | ++ | + | + | noisy | ++ | + | + | + | expensive evaluations 5s-35s, RW-GAN-Mario and TopTrumps are part of GBEA | ++ | Game benchmark for evolutionary algorithms, https://doi.org/10.1145/3321707.3321805 | +impl_gbea | +multimodal | ++ | + | real-world | ++ | + | >=1 | ++ | coco-gbea | ++ | {'34 seconds', '5 seconds'} | +https://github.com/ttusar/coco-gbea | +Game-Benchmark for Evolutionary Algorithms (COCO fork) | ++ | + | + | + | + | + | + | |||||||||||||
| suite_gnbg | +GNBG | +Suite | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Generalized Numerical Benchmark Generator | ++ | GNBG, https://arxiv.org/abs/2312.07083 | +impl_gnbg | ++ | + | + | artificial | ++ | + | >=1 | ++ | GNBG Generator | ++ | + | https://github.com/Danial-Yazdani/GNBG-Generator | +Generalized Numerical Benchmark Generator | ++ | + | + | + | + | + | + | |||||||||||||
| suite_gnbg_ii | +GNBG-II | +Suite | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Generalized Numerical Benchmark Generator (version 2). Also available in IOH. | ++ | GNBG-II, https://dl.acm.org/doi/pdf/10.1145/3712255.3734271 | +["impl_gnbg_ii", "impl_iohgnbg"] | ++ | + | + | artificial | ++ | + | >=1 | ++ | IOHGNBG | GNBG-II | ++ | + | https://github.com/IOHprofiler/IOHGNBG | https://github.com/rohitsalgotra/GNBG-II | +IOHprofiler version of GNBG | Generalized Numerical Benchmark Generator version 2 | ++ | + | + | + | + | + | + | |||||||||||||
| suite_iohclustering | +IOHClustering | +Suite | +continuous | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Set of benchmark problems from clustering: optimization task is selecting cluster centers for a given set of data. | ++ | IOHClustering, https://arxiv.org/pdf/2505.09233 | +impl_iohclustering | +multimodal | ++ | + | artificial-from-real-data | ++ | + | >=1 | ++ | IOHClustering | ++ | + | https://github.com/IOHprofiler/IOHClustering | +Clustering-based optimization benchmark built on ML datasets | ++ | + | + | + | + | + | + | |||||||||||||
| suite_kinematics_robotarm | +KinematicsRobotArm | +Suite | +continuous | +21 | +1 | ++ | + | + | + | + | + | + | + | + | + | + | Kinematics of a robot arm, https://doi.org/10.1023/A:1013258808932 | +impl_transfer_rf_bbob_rw | +unimodal | ++ | + | real-world | ++ | + | 21 | ++ | Transfer Random Forests BBOB Real-world | ++ | + | https://github.com/ShuaiqunPan/Transfer_Random_forests_BBOB_Real_world | +Real-world BBOB-like problem implementations (Porkchop, KinematicsRobotArm) | ++ | + | + | + | + | + | + | |||||||||||||
| suite_l1_zdt | +L1-ZDT | +Suite | +binary | continuous | +>=2 | +2 | ++ | + | + | + | + | + | + | + | + | Variant of ZDT with linkages between variables within groups | ++ | Linkage ZDT/DTLZ variants, https://doi.org/10.1145/1143997.1144179 | ++ | + | + | + | + | >=1 | ++ | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_l2_dtlz | +L2-DTLZ | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | Variant of DTLZ2/DTLZ3 with linkages between all variables | ++ | Linkage ZDT/DTLZ variants, https://doi.org/10.1145/1143997.1144179 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_l2_zdt | +L2-ZDT | +Suite | +binary | continuous | +>=2 | +2 | ++ | + | + | + | + | + | + | + | + | Variant of ZDT with linkages between all variables | ++ | Linkage ZDT/DTLZ variants, https://doi.org/10.1145/1143997.1144179 | ++ | + | + | + | + | >=1 | ++ | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_l3_dtlz | +L3-DTLZ | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | Variant of L2-DTLZ with anti-linkage mapping | ++ | Linkage ZDT/DTLZ variants, https://doi.org/10.1145/1143997.1144179 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_l3_zdt | +L3-ZDT | +Suite | +binary | continuous | +>=2 | +2 | ++ | + | + | + | + | + | + | + | + | Variant of L2-ZDT with anti-linkage mapping | ++ | Linkage ZDT/DTLZ variants, https://doi.org/10.1145/1143997.1144179 | ++ | + | + | + | + | >=1 | ++ | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_maop | +MaOP | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | +noisy | ++ | + | + | unknown | ++ | + | + | + | + | + | MaOP benchmark, https://doi.org/10.1016/j.swevo.2019.02.003 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_mechbench | +MECHBench | +Suite | +continuous | +>=1 | +1 | ++ | unknown | +{1, 2} | ++ | + | no | ++ | + | MECHBench | +Set of problems inspired by Structural Mechanics Design Optimization. Embeds physical simulations (plasticity only, no fracture/damage). Unstructured/non-isotropic multimodality. | ++ | MECHBench, https://arxiv.org/abs/2511.10821 | +impl_mechbench | +multimodal | ++ | + | real-world | ++ | + | >=1 | ++ | MECHBench | +Python | +{'1 minute', '7 minutes'} | +https://github.com/BayesOptApp/MECHBench | +Structural mechanics design optimization benchmark | ++ | + | + | + | + | + | + | |||||||||||||
| suite_mf2 | +MF2 | +Suite | +continuous | +>=1 | +1 | +multi-fidelity | ++ | + | + | + | + | + | [1, 2] | ++ | + | + | mf2: a collection of multi-fidelity benchmark functions in Python, https://doi.org/10.21105/joss.02049 | +impl_mf2 | ++ | + | + | + | + | + | >=1 | ++ | mf2 | +Python | ++ | https://github.com/sjvrijn/mf2 | +Multi-fidelity test function collection | ++ | + | + | + | + | + | + | |||||||||||||
| suite_minus_dtlz | +Minus DTLZ | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | Variant of DTLZ that minimises the inverse of the base DTLZ functions | ++ | Minus DTLZ / Minus WFG, https://doi.org/10.1109/TEVC.2016.2587749 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_minus_wfg | +Minus WFG | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | Variant of WFG that minimises the inverse of the base WFG functions | ++ | Minus DTLZ / Minus WFG, https://doi.org/10.1109/TEVC.2016.2587749 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | + | |||||||||||||
| suite_mmopp | +MMOPP | +Suite | +unknown | +0 | +[2, 3, 4, 5, 6, 7] | ++ | unknown | +>=1 | ++ | + | + | + | + | + | + | + | MMOPP technical report, http://www5.zzu.edu.cn/system/_content/download.jsp?urltype=news.DownloadAttachUrl&owner=1327567121&wbfileid=4764412 | +impl_mmopp | +multimodal | ++ | + | + | + | + | + | + | MMOPP | ++ | + | http://www5.zzu.edu.cn/ecilab/info/1036/1251.htm | +ECI lab distribution page for MMOPP | ++ | + | + | + | + | + | + | |||||||||||||
| suite_modact | +MODAct | +Suite | +continuous | integer | +40 | +[2, 3, 4, 5] | ++ | unknown | +>=1 | ++ | + | + | + | + | multiobjective design of actuators | +Realistic Constrained Multi-Objective Optimization Benchmark Problems from Design. | ++ | MODAct, https://doi.org/10.1109/TEVC.2020.3020046 | +["impl_modact", "impl_pymoo"] | ++ | + | + | real-world | ++ | + | 20 | +20 | +pymoo | modact | +Python | +{'20ms'} | +https://github.com/anyoptimization/pymoo | https://github.com/epfl-lamd/modact | +Multi-objective optimization in Python | EPFL-LAMD modact package | ++ | + | + | + | + | + | + | |||||||||||||
| suite_morepo | +MOrepo | +Suite | +unknown | +0 | +2 | +dynamic | noisy | +unknown | +>=1 | +unknown | +unknown | ++ | + | + | + | + | + | + | impl_morepo | ++ | + | + | + | + | + | + | + | MOrepo | ++ | + | https://github.com/MCDMSociety/MOrepo | +Multi-objective optimisation problem repository | ++ | + | + | + | + | + | + | |||||||||||||
| suite_pbo | +PBO | +Suite | +binary | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | Suite of 25 binary optimization problems | ++ | PBO benchmarks, https://dl.acm.org/doi/pdf/10.1145/3319619.3326810 | +impl_iohexperimenter | ++ | + | artificial | -https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10254181 | +>=1 | ++ | + | + | IOHexperimenter | +C++/Python | +https://github.com/IOHprofiler/IOHexperimenter | +IOHprofiler experimenter framework | ++ | + | + | + | + | + | |||||||||||||||
| CEC2013 | -suite used for cec2013 competition. Also in IOH https://github.com/IOHprofiler/IOHexperimenter | -suite | -1 | -scalable | +|||||||||||||||||||||||||||||||||||||||||||||||
| suite_porkchop | +PorkchopPlotInterplanetaryTrajectory | +Suite | continuous | -no | -no | -no | -no | -artificial | -https://peerj.com/articles/cs-2671/CEC2013.pdf | -https://github.com/P-N-Suganthan/CEC2013 | -|||||||||||||||||||||||||||||||||||||||||
| CEC2022 | -suite used for cec2022 competition. Also in IOH https://github.com/IOHprofiler/IOHexperimenter | -suite | +2 | 1 | -scalable | -continuous | -no | -no | -no | -no | -artificial | -https://github.com/P-N-Suganthan/2022-SO-BO/blob/main/CEC2022%20TR.pdf | -https://github.com/P-N-Suganthan/2022-SO-BO | -||||||||||||||||||||||||||||||||||||||
| Onemax+Sphere / Zeromax+Sphere | - | single | -2 | -scalable | -binary and continuous;mixed; | -no | -no | -no | -no | -artificial | -https://doi.org/10.1145/3449726.3459521 | -None | -|||||||||||||||||||||||||||||||||||||||
| Onemax+Sphere / DeceptiveTrap+RotatedEllipsoid | - | single | -2 | -scalable | -binary and continuous;mixed; | -no | -no | -no | -no | -artificial | -https://doi.org/10.1145/3449726.3459521 | -None | -|||||||||||||||||||||||||||||||||||||||
| InverseDeceptiveTrap+RotatedEllipsoid / DeceptiveTrap+RotatedEllipsoid | - | single | -2 | -scalable | -binary and continuous;mixed; | -no | -no | -no | -no | -artificial | -https://doi.org/10.1145/3449726.3459521 | -None | -|||||||||||||||||||||||||||||||||||||||
| PorkchopPlotInterplanetaryTrajectory | - | suite | -1 | -2 | -continuous | -no | -no | -no | -no | -real-world | -https://doi.org/10.1109/CEC65147.2025.11042973 | -https://github.com/ShuaiqunPan/Transfer_Random_forests_BBOB_Real_world | -|||||||||||||||||||||||||||||||||||||||
| KinematicsRobotArm | - | suite | -1 | -21 | -continuous | -no | -no | -no | -no | ++ | + | + | + | + | + | Porkchop plot interplanetary trajectory benchmark, https://doi.org/10.1109/CEC65147.2025.11042973 | +impl_transfer_rf_bbob_rw | +multimodal | ++ | real-world | -https://doi.org/10.1023/A:1013258808932 | ++ | + | 2 | ++ | Transfer Random Forests BBOB Real-world | ++ | https://github.com/ShuaiqunPan/Transfer_Random_forests_BBOB_Real_world | +Real-world BBOB-like problem implementations (Porkchop, KinematicsRobotArm) | ++ | + | + | + | + | + | ||||||||||||||||
| VehicleDynamics | +|||||||||||||||||||||||||||||||||||||||||||||||||||
| suite_re | +RE | +Suite | +integer | continuous | +4-14 | +[2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | + | + | Easy-to-evaluate real-world multi-objective optimization problems, Ryoji Tanabe; Hisao Ishibuchi, https://doi.org/10.1016/j.asoc.2020.106078 | +impl_reproblems | +- | suite | ++ | real-world-like | ++ | + | 2-7 | +2-7 | +reproblems | +Python | ++ | https://github.com/ryojitanabe/reproblems | +Real-world inspired multi-objective optimization problem suite | ++ | + | + | + | + | + | + | |||||||||||||
| suite_rwmvop | +RWMVOP | +Suite | +categorical | continuous | integer | +>=3 | 1 | -2 | -continuous | -no | -no | -no | -no | ++ | unknown | +>=1 | ++ | + | + | + | + | + | + | + | RWMVOP, https://doi.org/10.1109/TEVC.2013.2281531 | ++ | + | + | real-world | -https://www.scitepress.org/Papers/2023/121580/121580.pdf | -https://zenodo.org/records/8307853 | ++ | >=1 | +>=1 | +>=1 | ++ | + | + | + | + | + | + | + | + | + | + | |||||||
| MECHBench | -This is a set of problems with inspiration from Structural Mechanics Design Optimization. The suite comprises three physical models, from which the user may define different kind of problems which impact the final design output. | -Problem Suite | +|||||||||||||||||||||||||||||||||||||||||||||||||
| suite_sbox_cost | +SBOX-COST | +Suite | +continuous | +>=1 | 1 | -scalable' | -Continuous | -yes | -no | -no | -no | -Real-World Application | -https://arxiv.org/abs/2511.10821 | -https://github.com/BayesOptApp/MECHBench | ++ | + | + | + | + | + | + | + | + | problems from BBOB but allows instances with the optimum close to the boundary | ++ | SBOX-COST, https://doi.org/10.48550/arXiv.2305.12221 | +impl_iohexperimenter | +multimodal | ++ | + | + | + | + | >=1 | ++ | IOHexperimenter | +C++/Python | ++ | https://github.com/IOHprofiler/IOHexperimenter | +IOHprofiler experimenter framework | ++ | + | + | + | + | + | |||||
| EXPObench | -Wind farm layout optimization, gas filter design, pipe shape optimization, hyperparameter tuning, and hospital simulation | -Problem Suite | -1 | -10 to 135 | -Continuous, Integer, Categorical, Conditional | -yes | -no | -yes | -no | -Real-World Application | -https://doi.org/10.1016/j.asoc.2023.110744 | -https://github.com/AlgTUDelft/ExpensiveOptimBenchmark | +|||||||||||||||||||||||||||||||||||||||
| suite_sdp | +SDP | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | +dynamic | noisy | ++ | + | dynamic | +unknown | ++ | + | + | + | + | + | SDP dynamic multi-objective benchmark, https://doi.org/10.1109/TCYB.2019.2896021 | ++ | + | + | + | + | + | + | >=1 | ++ | + | + | + | + | + | + | + | + | + | + | + | ||||||||||||||
| Gasoline direct injection engine design | -A multi-objective optimization problem seeking to minimize fuel consumption and NOx emissions over a two-minute dynamic duty cycle, subject to five constraints (turbine inlet temperature, number of knock occurrences, peak cylinder pressure, peak cylinder pressure rise, total work). Seven decision variables are defined: four define the hardware choices of cylinder compression ratio, turbo machinery and EGR cooler sizing; three relate to control variables that parameterise the engine control logic. | -Single Problem | -2 | -7 | -Continuous, Ordinal | -yes | -no | -no | -yes | -Real-World Application | +|||||||||||||||||||||||||||||||||||||||||
| suite_submodular | +Submodular Optimization | +Suite | +binary | +>=1 | +1 | ++ | + | + | + | + | + | + | + | + | set of graph-based submodular optimization problems from 4 problem types | ++ | Submodular optimization benchmark, https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10254181 | +impl_iohexperimenter | ++ | + | + | artificial | +>=1 | ++ | + | + | IOHexperimenter | +C++/Python | ++ | https://github.com/IOHprofiler/IOHexperimenter | +IOHprofiler experimenter framework | ++ | + | + | + | + | - | https://doi.org/10.1016/j.ejor.2022.08.032 | -|||||||||||||
| BEACON | -Generator for bi-objective benchmark problems with explicitly controlled correlations in continuous spaces. | -Generator | -2 | -scalable | -Continuous | -no | -no | -no | -no | -Artificially Generated | -https://dl.acm.org/doi/10.1145/3712255.3734303 | -https://github.com/Stebbet/BEACON/ | |||||||||||||||||||||||||||||||||||||||
| suite_tulipa_energy | TulipaEnergy | -Determine the optimal investment and operation decisions for different types of assets in the energy system (production, consumption, conversion, storage, and transport), while minimizing loss of load. | -Problem Suite | +Suite | +continuous | +>=1 | 1 | -scalable | -Continuous | -yes | -no | -yes | -yes | -Real-World Application | -See https://tulipaenergy.github.io/TulipaEnergyModel.jl/stable/40-scientific-foundation/45-scientific-references | -https://tulipaenergy.github.io/TulipaEnergyModel.jl/stable/ | -|||||||||||||||||||||||||||||||||||
| ATO | -Parameters of the Modules of the Automatic Train Operation should be optimized. The parameters are continuous with different ranges. There are two objectives (minimizing energy consumption, minimizing driving duration. | -Single Problem | -2 | -10 | -Continuous | -no | -no | -no | -no | -Real-World Application | +noisy | multi-fidelity | +unknown | +>=2 | ++ | parameter | ++ | + | [1, 2] | +TulipaEnergyModel.jl | +Determine the optimal investment and operation decisions for different assets in the energy system (production, consumption, conversion, storage, transport) while minimizing loss of load. Modelled as a potentially very large linear program with multiple fidelity levels. | ++ | TulipaEnergyModel.jl scientific references, https://tulipaenergy.github.io/TulipaEnergyModel.jl/stable/40-scientific-foundation/45-scientific-references | +impl_tulipa | +unimodal | ++ | + | real-world | ++ | + | >=1 | ++ | TulipaEnergyModel.jl | +Julia / JuMP | +{'minutes', 'hours'} | +https://tulipaenergy.github.io/TulipaEnergyModel.jl/stable/ | https://github.com/TulipaEnergy/Tulipa-OBZ-CaseStudy | +Large linear program for optimal investment and operation of energy systems | ++ | + | + | + | - | - | -|||||||||
| Brachytherapy treatment planning | -Treatment planning for internal radiation therapy | -Problem Suite | -2-3 | -100-500 | -Continuous | -yes | -no | -no | -yes | -Real-World Application | -https://www.sciencedirect.com/science/article/pii/S1538472123016781 | ||||||||||||||||||||||||||||||||||||||||
| FleetOpt | -Healthcare organisation in the UK provided data about their current fleet of vehicles to conduct non-emergency heathcare trips in the Argyll and Bute region of Scotland, UK. They also provided historical data about the trips the vehicles took and about the bases which the vehicles return to. The aim is to reduce the existing fleet of vehicles while still ensuring all trips can be covered. Moving a vehicle from one base to another to help cover trips is OK as long as the original base can still cover its trips. Link to paper with more details: https://dl.acm.org/doi/abs/10.1145/3638530.3664137 | -Single Problem | -1 | -Upper level: 54; lower level: 13208 | -Integer | -yes | -no | -no | -no | -Real-World Application | -https://dl.acm.org/doi/abs/10.1145/3638530.3664137 | -Not public: was done for real client with their private data | -|||||||||||||||||||||||||||||||||||||||
| Building spatial design | -Optimise the spatial layout of a building to: minimise energy consumption for climate control, and minimise the strain on the structure | -Single Problem | +|||||||||||||||||||||||||||||||||||||||||||||||||
| suite_vehicle_dynamics | +VehicleDynamics | +Suite | +continuous | 2 | -scalable depending on problem size (e.g. 90 for) | -Continuous, Boolean | -yes | -no | -no | -no | -Real-World Application | -https://hdl.handle.net/1887/81789 | -https://github.com/TUe-excellent-buildings/BSO-toolbox | -||||||||||||||||||||||||||||||||||||||
| Electric Motor Design Optimization | -The goal is to find a design of a synchronous electric motor for power steering systems that minimizes costs and satisfies all constraints. | -Single Problem | 1 | -13 | -Continuous, Integer | -yes | -no | -yes | -no | -Real-World Application | -https://dis.ijs.si/tea/Publications/Tusar23Multistep.pdf (paper in Slovene) | -Implementation not freely available | -|||||||||||||||||||||||||||||||||||||||
| BONO-Bench | -Bi-objective problem generator and suite with scalable continuous decision space. Features complex problem properties (different types of multimodality and challenges in decision and objective space) as well as Pareto front approximations with error guarantees for the hypervolume and exact R2 indicators. | -Generator | ++ | + | + | + | + | + | + | + | + | + | + | VehicleDynamics benchmark, https://www.scitepress.org/Papers/2023/121580/121580.pdf | +impl_vehicle_dynamics | +multimodal | ++ | + | real-world | ++ | 2 | -scalable | -Continuous | -no | -no | -no | -no | -Artificially Generated | - | https://github.com/schaepermeier/bonobench | -|||||||||||||||||||||
| RandOptGen | -RandOptGen: A Unified Random Problem Generator for Single-and Multi-Objective Optimization Problems with Mixed-Variable Input Spaces | -Generator | -scalable | -scalable | -Continuous, Integer, Boolean | -no | -no | -no | -no | -Artificially Generated | +VehicleDynamics (Zenodo) | ++ | + | https://zenodo.org/records/8307853 | +Zenodo archive for the vehicle dynamics benchmark | ++ | + | + | + | + | - | https://github.com/MALEO-research-group/RandOptGen | -|||||||||||||||||||||||||||||
| CUTEr | -A constrained and unconstrained testing environment | -Problem Suite | -1 | -scalable | -Continuous, Integer, Boolean | -yes | -no | -no | -no | -Artificially Generated | -https://dl.acm.org/doi/10.1145/962437.962439 | -Not Found | |||||||||||||||||||||||||||||||||||||||
| CUTEst | -The Constrained and Unconstrained Testing Environment with safe threads (CUTEst) for optimization software | -Problem Suite | -1 | -scalable | -Continuous, Integer, Boolean | -yes | -no | -no | -no | -Artificially Generated | -https://link.springer.com/article/10.1007/s10589-014-9687-3 | -https://github.com/jfowkes/pycutest | +|||||||||||||||||||||||||||||||||||||||
| suite_wfg | +WFG | +Suite | +continuous | +>=1 | +[10, 2, 3, 4, 5, 6, 7, 8, 9] | ++ | + | + | + | + | + | + | + | + | + | + | A review of multiobjective test problems and a scalable test problem toolkit, Simon Huband; Philip Hingston; Luigi Barone; Lyndon While, https://doi.org/10.1109/TEVC.2005.861417 | +impl_pymoo | ++ | + | + | + | + | + | >=1 | ++ | pymoo | +Python | ++ | https://github.com/anyoptimization/pymoo | +Multi-objective optimization in Python | ++ | + | + | + | + | + | ||||||||||||||
| PUBOi | -A benchmark in which variable importance is tunable, based on the Walsh function | -Generator | -1 | -scalable | -Boolean | -no | -no | -no | -no | -Artificially Generated | -https://link.springer.com/chapter/10.1007/978-3-031-04148-8_12 | -https://gitlab.com/verel/pubo-importance-benchmark | +|||||||||||||||||||||||||||||||||||||||
| suite_zdt | +ZDT | +Suite | +binary | continuous | +>=2 | +2 | ++ | + | + | + | + | + | + | + | + | + | + | Comparison of multiobjective evolutionary algorithms: empirical results, Eckart Zitzler; Kalyanmoy Deb; Lothar Thiele, https://doi.org/10.1162/106365600568202 | +impl_pymoo | ++ | + | + | + | >=1 | ++ | >=1 | ++ | pymoo | +Python | ++ | https://github.com/anyoptimization/pymoo | +Multi-objective optimization in Python | ++ | + | + | + | + | + | ||||||||||||||
| name | textual description | suite/generator/single | objectives | dimensionality | variable type | constraints | dynamic | noise | multi-fidelity | source (real-world/artificial) | reference | implementation |
call_{problem