|
4 | 4 | from bayes_opt import BayesianOptimization
|
5 | 5 | from bayes_opt.logger import ScreenLogger
|
6 | 6 | from bayes_opt.event import Events, DEFAULT_EVENTS
|
7 |
| - |
| 7 | +import pickle |
| 8 | +import os |
8 | 9 |
|
9 | 10 | def target_func(**kwargs):
|
10 | 11 | # arbitrary target func
|
@@ -37,35 +38,35 @@ def test_probe_lazy():
|
37 | 38 |
|
38 | 39 | optimizer.probe(params={"p1": 1, "p2": 2}, lazy=True)
|
39 | 40 | assert len(optimizer.space) == 0
|
40 |
| - assert optimizer._queue.qsize() == 1 |
| 41 | + assert len(optimizer._queue) == 1 |
41 | 42 |
|
42 | 43 | optimizer.probe(params={"p1": 6, "p2": 2}, lazy=True)
|
43 | 44 | assert len(optimizer.space) == 0
|
44 |
| - assert optimizer._queue.qsize() == 2 |
| 45 | + assert len(optimizer._queue) == 2 |
45 | 46 |
|
46 | 47 | optimizer.probe(params={"p1": 6, "p2": 2}, lazy=True)
|
47 | 48 | assert len(optimizer.space) == 0
|
48 |
| - assert optimizer._queue.qsize() == 3 |
| 49 | + assert len(optimizer._queue) == 3 |
49 | 50 |
|
50 | 51 |
|
51 | 52 | def test_probe_eager():
|
52 | 53 | optimizer = BayesianOptimization(target_func, PBOUNDS, random_state=1)
|
53 | 54 |
|
54 | 55 | optimizer.probe(params={"p1": 1, "p2": 2}, lazy=False)
|
55 | 56 | assert len(optimizer.space) == 1
|
56 |
| - assert optimizer._queue.empty() |
| 57 | + assert len(optimizer._queue) == 0 |
57 | 58 | assert optimizer.max["target"] == 3
|
58 | 59 | assert optimizer.max["params"] == {"p1": 1, "p2": 2}
|
59 | 60 |
|
60 | 61 | optimizer.probe(params={"p1": 3, "p2": 3}, lazy=False)
|
61 | 62 | assert len(optimizer.space) == 2
|
62 |
| - assert optimizer._queue.empty() |
| 63 | + assert len(optimizer._queue) == 0 |
63 | 64 | assert optimizer.max["target"] == 6
|
64 | 65 | assert optimizer.max["params"] == {"p1": 3, "p2": 3}
|
65 | 66 |
|
66 | 67 | optimizer.probe(params={"p1": 3, "p2": 3}, lazy=False)
|
67 | 68 | assert len(optimizer.space) == 2
|
68 |
| - assert optimizer._queue.empty() |
| 69 | + assert len(optimizer._queue) == 0 |
69 | 70 | assert optimizer.max["target"] == 6
|
70 | 71 | assert optimizer.max["params"] == {"p1": 3, "p2": 3}
|
71 | 72 |
|
@@ -101,43 +102,43 @@ def test_suggest_with_one_observation():
|
101 | 102 |
|
102 | 103 | def test_prime_queue_all_empty():
|
103 | 104 | optimizer = BayesianOptimization(target_func, PBOUNDS, random_state=1)
|
104 |
| - assert optimizer._queue.empty() |
| 105 | + assert len(optimizer._queue) == 0 |
105 | 106 | assert len(optimizer.space) == 0
|
106 | 107 |
|
107 | 108 | optimizer._prime_queue(init_points=0)
|
108 |
| - assert optimizer._queue.qsize() == 1 |
| 109 | + assert len(optimizer._queue) == 1 |
109 | 110 | assert len(optimizer.space) == 0
|
110 | 111 |
|
111 | 112 |
|
112 | 113 | def test_prime_queue_empty_with_init():
|
113 | 114 | optimizer = BayesianOptimization(target_func, PBOUNDS, random_state=1)
|
114 |
| - assert optimizer._queue.empty() |
| 115 | + assert len(optimizer._queue) == 0 |
115 | 116 | assert len(optimizer.space) == 0
|
116 | 117 |
|
117 | 118 | optimizer._prime_queue(init_points=5)
|
118 |
| - assert optimizer._queue.qsize() == 5 |
| 119 | + assert len(optimizer._queue) == 5 |
119 | 120 | assert len(optimizer.space) == 0
|
120 | 121 |
|
121 | 122 |
|
122 | 123 | def test_prime_queue_with_register():
|
123 | 124 | optimizer = BayesianOptimization(target_func, PBOUNDS, random_state=1)
|
124 |
| - assert optimizer._queue.empty() |
| 125 | + assert len(optimizer._queue) == 0 |
125 | 126 | assert len(optimizer.space) == 0
|
126 | 127 |
|
127 | 128 | optimizer.register(params={"p1": 1, "p2": 2}, target=3)
|
128 | 129 | optimizer._prime_queue(init_points=0)
|
129 |
| - assert optimizer._queue.empty() |
| 130 | + assert len(optimizer._queue) == 0 |
130 | 131 | assert len(optimizer.space) == 1
|
131 | 132 |
|
132 | 133 |
|
133 | 134 | def test_prime_queue_with_register_and_init():
|
134 | 135 | optimizer = BayesianOptimization(target_func, PBOUNDS, random_state=1)
|
135 |
| - assert optimizer._queue.empty() |
| 136 | + assert len(optimizer._queue) == 0 |
136 | 137 | assert len(optimizer.space) == 0
|
137 | 138 |
|
138 | 139 | optimizer.register(params={"p1": 1, "p2": 2}, target=3)
|
139 | 140 | optimizer._prime_queue(init_points=3)
|
140 |
| - assert optimizer._queue.qsize() == 3 |
| 141 | + assert len(optimizer._queue) == 3 |
141 | 142 | assert len(optimizer.space) == 1
|
142 | 143 |
|
143 | 144 |
|
@@ -270,22 +271,22 @@ def reset(self):
|
270 | 271 | )
|
271 | 272 |
|
272 | 273 | optimizer.maximize(init_points=0, n_iter=0)
|
273 |
| - assert optimizer._queue.empty() |
| 274 | + assert optimizer._queue.empty |
274 | 275 | assert len(optimizer.space) == 1
|
275 | 276 | assert tracker.start_count == 1
|
276 | 277 | assert tracker.step_count == 1
|
277 | 278 | assert tracker.end_count == 1
|
278 | 279 |
|
279 | 280 | optimizer.maximize(init_points=2, n_iter=0, alpha=1e-2)
|
280 |
| - assert optimizer._queue.empty() |
| 281 | + assert optimizer._queue.empty |
281 | 282 | assert len(optimizer.space) == 3
|
282 | 283 | assert optimizer._gp.alpha == 1e-2
|
283 | 284 | assert tracker.start_count == 2
|
284 | 285 | assert tracker.step_count == 3
|
285 | 286 | assert tracker.end_count == 2
|
286 | 287 |
|
287 | 288 | optimizer.maximize(init_points=0, n_iter=2)
|
288 |
| - assert optimizer._queue.empty() |
| 289 | + assert optimizer._queue.empty |
289 | 290 | assert len(optimizer.space) == 5
|
290 | 291 | assert tracker.start_count == 3
|
291 | 292 | assert tracker.step_count == 5
|
@@ -320,6 +321,21 @@ def test_single_value_objective():
|
320 | 321 | )
|
321 | 322 |
|
322 | 323 |
|
| 324 | +def test_pickle(): |
| 325 | + """ |
| 326 | + several users have asked that the BO object be 'pickalable' |
| 327 | + This tests that this is the case |
| 328 | + """ |
| 329 | + optimizer = BayesianOptimization( |
| 330 | + f=None, |
| 331 | + pbounds={'x': (-10, 10)}, |
| 332 | + verbose=2, |
| 333 | + random_state=1, |
| 334 | + ) |
| 335 | + with open("test_dump.obj", "wb") as filehandler: |
| 336 | + pickle.dump(optimizer, filehandler) |
| 337 | + os.remove('test_dump.obj') |
| 338 | + |
323 | 339 | if __name__ == '__main__':
|
324 | 340 | r"""
|
325 | 341 | CommandLine:
|
|
0 commit comments