|
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