https://github.com/mikediessner/benchfuncs
Benchmark functions to test optimisation algorithms.
https://github.com/mikediessner/benchfuncs
benchmark-functions numpy optimization test-functions
Last synced: 3 months ago
JSON representation
Benchmark functions to test optimisation algorithms.
- Host: GitHub
- URL: https://github.com/mikediessner/benchfuncs
- Owner: mikediessner
- License: mit
- Created: 2022-08-07T10:58:34.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-12-20T20:57:17.000Z (about 3 years ago)
- Last Synced: 2025-03-02T19:37:24.802Z (11 months ago)
- Topics: benchmark-functions, numpy, optimization, test-functions
- Language: Python
- Homepage:
- Size: 23.4 KB
- Stars: 1
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# IN DEVELOPMENT: benchfuncs
The `benchfuncs` package offers a selection of benchmark functions that can be used to test optimisation algorithms. Below is an example that shows (a) how `bencfuncs` can be used to generate training points for modelling and machine learning and (b) how functions can be solved with an optimiser (in this case the L-BFGS-B solver from the `scipy.optimize`package.)
```python
from benchfuncs import Sphere
import numpy as np
from scipy.optimize import minimize
# define benchmark function
func = Sphere(dims=4)
# sample training data
x = np.random.uniform(low=func.bounds[:, 0], high=func.bounds[:, 1], size=(3, func.dims))
# get training data outpus
y = func(x)
# print results
print("Inputs: ", x)
print("Outputs: ", y)
```
```
Inputs: [[-2.69264719 2.34062409 -0.16280928 -0.55581425]
[ 1.60939843 0.28119955 -0.47671281 -0.51286048]
[ 2.32721282 0.32551319 -1.25113608 -4.29779957]]
Outputs: [13.0643064 3.15951746 25.55830099]
```
```python
# optimise benchmark function
x0 = np.random.uniform(low=func.bounds[:, 0], high=func.bounds[:, 1], size=func.dims)
results = minimize(func, x0, method='L-BFGS-B', bounds=func.bounds)
# compare solution with global minimum
print(f"Solution: \t Inputs: {results['x']} \t Output: {results['fun']}")
print(f"Optimum: \t Inputs: {func.optimum['inputs']} \t Output: {func.optimum['output']}")
```
```
Solution: Inputs: [-4.92781912e-09 -4.96113870e-09 -4.99729987e-09 -5.03493624e-09] Output: 9.921988747713389e-17
Optimum: Inputs: [[0. 0. 0. 0.]] Output: [0.]
```