34 releases (breaking)
| 0.32.0 | Aug 22, 2025 |
|---|---|
| 0.31.0 | Jul 11, 2025 |
| 0.30.0 | Jun 27, 2025 |
| 0.27.0 | Mar 13, 2025 |
| 0.4.0 | Jul 9, 2022 |
#6 in #global-optimization
1,962 downloads per month
1MB
18K
SLoC
EGObox - Efficient Global Optimization toolbox
egobox package is the Python binding of the optimizer named Egor and the surrogate model Gpx, mixture of Gaussian processes, from the EGObox libraries written in Rust.
Installation
pip install egobox
Egor optimizer
import numpy as np
import egobox as egx
# Objective function
def f_obj(x: np.ndarray) -> np.ndarray:
return (x - 3.5) * np.sin((x - 3.5) / (np.pi))
# Minimize f_opt in [0, 25]
res = egx.Egor([[0.0, 25.0]], seed=42).minimize(f_obj, max_iters=20)
print(f"Optimization f={res.y_opt} at {res.x_opt}") # Optimization f=[-15.12510323] at [18.93525454]
Gpx surrogate model
import numpy as np
import matplotlib.pyplot as plt
import egobox as egx
# Training
xtrain = np.array([0.0, 1.0, 2.0, 3.0, 4.0])
ytrain = np.array([0.0, 1.0, 1.5, 0.9, 1.0])
gpx = egx.Gpx.builder().fit(xtrain, ytrain)
# Prediction
xtest = np.linspace(0, 4, 100).reshape((-1, 1))
ytest = gpx.predict(xtest)
# Plot
plt.plot(xtest, ytest)
plt.plot(xtrain, ytrain, "o")
plt.show()
See the tutorial notebooks and examples folder for more information on the usage of the optimizer and mixture of Gaussian processes surrogate model.
Dependencies
~24–39MB
~686K SLoC