-
Notifications
You must be signed in to change notification settings - Fork 75
Expand file tree
/
Copy pathtest_lipo.py
More file actions
41 lines (33 loc) · 1.01 KB
/
test_lipo.py
File metadata and controls
41 lines (33 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import numpy as np
import pytest
from hyperactive.opt.lipo import LIPOOptimizer
def sphere(params):
return -(params["x"] ** 2 + params["y"] ** 2)
def test_lipo_basic():
opt = LIPOOptimizer(
search_space={
"x": np.arange(-5, 5, 0.1),
"y": np.arange(-5, 5, 0.1),
},
n_iter=50,
experiment=sphere,
)
best = opt.solve()
assert "x" in best and "y" in best
assert abs(best["x"]) < 1.5 # should be near 0
def test_lipo_categorical():
def fn(p): return 1.0 if p["kernel"] == "rbf" else 0.0
opt = LIPOOptimizer(
search_space={"kernel": ["linear", "rbf", "poly"]},
n_iter=20, experiment=fn,
)
best = opt.solve()
assert best["kernel"] == "rbf"
def test_lipo_snap_to_grid():
def fn(p): return -abs(p["x"] - 3)
opt = LIPOOptimizer(
search_space={"x": np.array([1, 2, 3, 4, 5])},
n_iter=30, experiment=fn,
)
best = opt.solve()
assert best["x"] in [1, 2, 3, 4, 5] # must be on the grid