A collection of analytical benchmark functions in multiple fidelities
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
Documentation is available at mf2.readthedocs.io
The recommended way to install
mf2 is with Python's
python3 -m pip install --user mf2
or alternatively using
conda install -c conda-forge mf2
For the latest version, you can install directly from source:
python3 -m pip install --user https://github.com/sjvrijn/mf2/archive/master.zip
To work in your own version locally, it is best to clone the repository first, and additionally install the dev-requirements:
git clone https://github.com/sjvrijn/mf2.git cd mf2 python3 -m pip install --user -e .[dev]
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.
Contributions to this project such as bug reports or benchmark function
suggestions are more than welcome! Please refer to
CONTRIBUTING.md for more
The Gitter channel is the preferred way to get in touch for any other questions, comments or discussions about this package.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size mf2-2020.8.0-py3-none-any.whl (40.9 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size mf2-2020.8.0.tar.gz (31.6 kB)||File type Source||Python version None||Upload date||Hashes View|