MF2

MF2: A Collection of Multi-Fidelity Benchmark Functions in Python - Published in JOSS (2020)

https://github.com/sjvrijn/mf2

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 9 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    1 of 6 committers (16.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

benchmark-functions benchmark-suite benchmarking-suite multi-fidelity python
Last synced: 4 months ago · JSON representation ·

Repository

Collection of Multi-Fidelity benchmark functions

Basic Info
  • Host: GitHub
  • Owner: sjvrijn
  • License: gpl-3.0
  • Language: Python
  • Default Branch: main
  • Homepage: https://mf2.readthedocs.io/
  • Size: 1.1 MB
Statistics
  • Stars: 28
  • Watchers: 2
  • Forks: 8
  • Open Issues: 8
  • Releases: 8
Topics
benchmark-functions benchmark-suite benchmarking-suite multi-fidelity python
Created about 6 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

MF2: Multi-Fidelity-Functions

| Package Info | Status | Support | |----------------------------------------------|-------------------------------------------------------|------------------------------------| | PyPI version | Tests status | Docs Status | | Conda | Coverage Status | Gitter | | PyPI - Python Version | Codacy Badge | | | License: GPL v3 | Project Status: Active | | | DOI | CII Best Practices | | | status | | |

Introduction

The mf2 package provides consistent, efficient and tested Python implementations of a variety of multi-fidelity benchmark functions. The goal is to simplify life for numerical optimization researchers by saving time otherwise spent reimplementing and debugging the same common functions, and enabling direct comparisons with other work using the same definitions, improving reproducibility in general.

A multi-fidelity function usually reprensents an objective which should be optimized. The term 'multi-fidelity' refers to the fact that multiple versions of the objective function exist, which differ in the accuracy to describe the real objective. A typical real-world example would be the aerodynamic efficiency of an airfoil, e.g., its drag value for a given lift value. The different fidelity levels are given by the accuracy of the evaluation method used to estimate the efficiency. Lower-fidelity versions of the objective function refer to less accurate, but simpler approximations of the objective, such as computational fluid dynamic simulations on rather coarse meshes, whereas higher fidelity levels refer to more accurate but also much more demanding evaluations such as prototype tests in wind tunnels. The hope of multi-fildelity optimization approaches is that many of the not-so-accurate but simple low-fidelity evaluations can be used to achieve improved results on the realistic high-fidelity version of the objective where only very few evaluations can be performed.

The only dependency of the mf2 package is the numpy package.

Documentation is available at mf2.readthedocs.io

Installation

The recommended way to install mf2 in your (virtual) environment is with Python's pip: pip install mf2 or alternatively using conda: conda install -c conda-forge mf2

For the latest version, you can install directly from source: pip install https://github.com/sjvrijn/mf2/archive/main.zip

To work in your own version locally, it is best to clone the repository first, and additionally create an editable install that includes the dev-requirements: git clone https://github.com/sjvrijn/mf2.git cd mf2 pip install -e ".[dev]"

Example Usage

```python import mf2 import numpy as np

set numpy random seed for reproducibility

np.random.seed(42)

generate 5 random samples in 2D as matrix

X = np.random.random((5, 2))

print high fidelity function values

print(mf2.branin.high(X))

Out: array([36.78994906 34.3332972 50.48149005 43.0569396 35.5268224 ])

print low fidelity function values

print(mf2.branin.low(X))

Out: array([-5.8762639 -6.66852889 3.84944507 -1.56314141 -6.23242223])

```

For more usage examples, please refer to the full documentation on readthedocs.

Contributing

Contributions to this project such as bug reports or benchmark function suggestions are more than welcome! Please refer to CONTRIBUTING.md for more details.

Contact

The Gitter channel is the preferred way to get in touch for any other questions, comments or discussions about this package.

Citation

Was this package useful to you? Great! If this leads to a publication, we'd appreciate it if you would cite our JOSS paper:

@article{vanRijn2020, doi = {10.21105/joss.02049}, url = {https://doi.org/10.21105/joss.02049}, year = {2020}, publisher = {The Open Journal}, volume = {5}, number = {52}, pages = {2049}, author = {Sander van Rijn and Sebastian Schmitt}, title = {MF2: A Collection of Multi-Fidelity Benchmark Functions in Python}, journal = {Journal of Open Source Software} }

Owner

  • Name: Sander van Rijn
  • Login: sjvrijn
  • Kind: user
  • Location: Leiden, Netherlands
  • Company: @NLeSC

Research Software Engineer at Netherlands eScience Center | Computer Science PhD Candidate at LIACS

JOSS Publication

MF2: A Collection of Multi-Fidelity Benchmark Functions in Python
Published
August 25, 2020
Volume 5, Issue 52, Page 2049
Authors
Sander van Rijn ORCID
Leiden University, The Netherlands
Sebastian Schmitt
Honda Research Institute Europe, Germany
Editor
Melissa Weber Mendonça ORCID
Tags
optimization benchmarks

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "van Rijn"
  given-names: "Sander"
  affiliation: "Leiden University"
  orcid: "https://orcid.org/0000-0001-6159-041X"
- family-names: "Schmitt"
  given-names: "Sebastian"
  affiliation: "Honda Research Institute Europe"
  orcid: "https://orcid.org/0000-0001-7130-5483"
title: "MF2: Multi-Fidelity-Functions"
version: 2021.10.0
doi: 10.5281/zenodo.3610282
date-released: 2021-10-22
url: "https://github.com/sjvrijn/mf2"
license: GPL-3.0
preferred-citation:
  type: article
  authors:
  - family-names: "van Rijn"
    given-names: "Sander"
    affiliation: "Leiden University"
    orcid: "https://orcid.org/0000-0001-6159-041X"
  - family-names: "Schmitt"
    given-names: "Sebastian"
    affiliation: "Honda Research Institute Europe"
    orcid: "https://orcid.org/0000-0001-7130-5483"
  doi: "10.21105/joss.02049"
  journal: "Journal of Open Source Software"
  publisher: "The Open Journal"
  title: "MF2: A Collection of Multi-Fidelity Benchmark Functions in Python"
  pages: 2049
  number: 52
  volume: 5
  year: 2020

GitHub Events

Total
  • Watch event: 3
  • Issue comment event: 1
  • Push event: 8
  • Pull request review event: 1
  • Pull request event: 1
  • Fork event: 1
Last Year
  • Watch event: 3
  • Issue comment event: 1
  • Push event: 8
  • Pull request review event: 1
  • Pull request event: 1
  • Fork event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 350
  • Total Committers: 6
  • Avg Commits per committer: 58.333
  • Development Distribution Score (DDS): 0.023
Past Year
  • Commits: 8
  • Committers: 2
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.125
Top Committers
Name Email Commits
Sander van Rijn s****3@g****m 342
Izaak Beekman z****n@g****m 4
xiaomei 1****5 1
Sourcery AI b****t@s****i 1
Arfon Smith a****n 1
S.J. van Rijn s****2@u****l 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 22
  • Total pull requests: 39
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 5 days
  • Total issue authors: 2
  • Total pull request authors: 5
  • Average comments per issue: 0.36
  • Average comments per pull request: 0.54
  • Merged pull requests: 37
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • sjvrijn (20)
  • torressa (2)
Pull Request Authors
  • sjvrijn (34)
  • xm2325 (2)
  • zbeekman (2)
  • arfon (1)
  • sourcery-ai-bot (1)
Top Labels
Issue Labels
enhancement (11) documentation (3) good first issue (2) New function (2) bug (2) help wanted (1)
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 105 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 15
  • Total maintainers: 1
pypi.org: mf2

A collection of analytical benchmark functions in multiple fidelities

  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 105 Last month
Rankings
Dependent packages count: 10.1%
Forks count: 12.6%
Stargazers count: 13.7%
Dependent repos count: 21.6%
Average: 23.5%
Downloads: 59.5%
Maintainers (1)
Last synced: 4 months ago
conda-forge.org: mf2
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.0%
Average: 44.4%
Forks count: 44.7%
Stargazers count: 47.8%
Dependent packages count: 51.2%
Last synced: 4 months ago

Dependencies

.github/workflows/build_publish_pypi.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • pypa/gh-action-pypi-publish master composite
.github/workflows/tests.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
pyproject.toml pypi
  • numpy *