Issues (61)

_test_memory_warm_start_n_jobs.py (3 issues)

1
import time
2
import pytest
3
import numpy as np
4
import pandas as pd
5
6
from hyperactive import Hyperactive
7
8
############################## create search spaces
9
size = 1000
10
11
dim_full = list(range(0, size))
12
dim_cat = list(range(round(size / 3)))
13
dim_10 = list(range(round(size ** 0.1)))
14
15
search_space_0 = {
16
    "x1": dim_full,
17
}
18
19
search_space_1 = {
20
    "x1": dim_cat,
21
    "x2": list(range(3)),
22
}
23
24
search_space_2 = {
25
    "x1": dim_10,
26
    "x2": dim_10,
27
    "x3": dim_10,
28
    "x4": dim_10,
29
    "x5": dim_10,
30
    "x6": dim_10,
31
    "x7": dim_10,
32
    "x8": dim_10,
33
    "x9": dim_10,
34
    "x10": dim_10,
35
}
36
37
search_space_3 = {
38
    "x1": dim_10,
39
    "x2": dim_10,
40
    "x3": dim_10,
41
    "x4": dim_10,
42
    "x5": dim_10,
43
    "x6": dim_10,
44
    "x7": dim_10,
45
    "x8": dim_10,
46
    "x9": dim_10,
47
    "x10": dim_10,
48
    "x11": [1],
49
    "x12": [1],
50
    "x13": [1],
51
    "x14": [1],
52
    "x15": [1],
53
}
54
55
search_space_4 = {
56
    "x1": dim_cat,
57
    "str1": ["0", "1", "2"],
58
}
59
60
61
def func1():
62
    pass
63
64
65
def func2():
66
    pass
67
68
69
def func3():
70
    pass
71
72
73
search_space_5 = {
74
    "x1": dim_cat,
75
    "func1": [func1, func2, func3],
76
}
77
78
79
class class1:
80
    pass
81
82
83
class class2:
84
    pass
85
86
87
class class3:
88
    pass
89
90
91
def wr_func_1():
92
    return class1
93
94
95
def wr_func_2():
96
    return class2
97
98
99
def wr_func_3():
100
    return class3
101
102
103
search_space_6 = {
104
    "x1": dim_cat,
105
    "class_1": [wr_func_1, wr_func_2, wr_func_3],
106
}
107
108
109
class class1_o:
110
    def __init__(self):
111
        pass
112
113
114
class class2_o:
115
    def __init__(self):
116
        pass
117
118
119
class class3_o:
120
    def __init__(self):
121
        pass
122
123
124
def wr_func_1():
125
    return class1_o()
126
127
128
def wr_func_2():
129
    return class2_o()
130
131
132
def wr_func_3():
133
    return class3_o()
134
135
136
search_space_7 = {
137
    "x1": dim_cat,
138
    "class_obj_1": [wr_func_1, wr_func_2, wr_func_3],
139
}
140
141
142
def wr_func_1():
143
    return [1, 0, 0]
144
145
146
def wr_func_2():
147
    return [0, 1, 0]
148
149
150
def wr_func_3():
151
    return [0, 0, 1]
152
153
154
search_space_8 = {
155
    "x1": dim_cat,
156
    "list_1": [wr_func_1, wr_func_2, wr_func_3],
157
}
158
159
160
def wr_func_1():
161
    return np.array([1, 0, 0])
162
163
164
def wr_func_2():
165
    return np.array([0, 1, 0])
166
167
168
def wr_func_3():
169
    return np.array([0, 0, 1])
170
171
172
search_space_9 = {
173
    "x1": dim_cat,
174
    "array_1": [wr_func_1, wr_func_2, wr_func_3],
175
}
176
177
178
def wr_func_1():
179
    return pd.DataFrame(np.array([1, 0, 0]))
180
181
182
def wr_func_2():
183
    return pd.DataFrame(np.array([0, 1, 0]))
184
185
186
def wr_func_3():
187
    return pd.DataFrame(np.array([0, 0, 1]))
188
189
190
search_space_10 = {
191
    "x1": dim_cat,
192
    "df_1": [wr_func_1, wr_func_2, wr_func_3],
193
}
194
195
search_space_list = [
196
    (search_space_0),
197
    (search_space_1),
198
    (search_space_2),
199
    (search_space_3),
200
    (search_space_4),
201
    (search_space_5),
202
    (search_space_6),
203
    (search_space_7),
204
    (search_space_8),
205
    (search_space_9),
206
    (search_space_10),
207
]
208
209
############################## start tests
210
211
212
def objective_function(opt):
213
    time.sleep(0.003)
214
    return 0
215
216
217 View Code Duplication
@pytest.mark.parametrize("search_space", search_space_list)
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
218
def test_memory_warm_start_0(search_space):
219
    n_iter = 1500
220
221
    c_time = time.perf_counter()
222
    hyper0 = Hyperactive(distribution="pathos")
223
    hyper0.add_search(
224
        objective_function, search_space, n_iter=n_iter, n_jobs=2, memory=True
225
    )
226
    hyper0.run()
227
    d_time_1 = time.perf_counter() - c_time
228
229
    search_data0 = hyper0.search_data(objective_function)
230
231
    c_time = time.perf_counter()
232
    hyper1 = Hyperactive()
233
    hyper1.add_search(
234
        objective_function,
235
        search_space,
236
        n_iter=n_iter,
237
        memory_warm_start=search_data0,
238
        memory=True,
239
    )
240
    hyper1.run()
241
    d_time_2 = time.perf_counter() - c_time
242
243
    d_time_frac = d_time_1 / d_time_2
244
245
    print("\n d_time_1 ", d_time_1)
246
    print("\n d_time_2 ", d_time_2)
247
248
    assert d_time_frac > 1.5
249
250
251 View Code Duplication
@pytest.mark.parametrize("search_space", search_space_list)
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
252
def test_memory_warm_start_1(search_space):
253
    n_iter = 1500
254
255
    c_time = time.perf_counter()
256
    hyper0 = Hyperactive()
257
    hyper0.add_search(objective_function, search_space, n_iter=n_iter, memory=True)
258
    hyper0.run()
259
    d_time_1 = time.perf_counter() - c_time
260
261
    search_data0 = hyper0.search_data(objective_function)
262
263
    c_time = time.perf_counter()
264
    hyper1 = Hyperactive(distribution="pathos")
265
    hyper1.add_search(
266
        objective_function,
267
        search_space,
268
        n_iter=n_iter,
269
        n_jobs=2,
270
        memory=True,
271
        memory_warm_start=search_data0,
272
    )
273
    hyper1.run()
274
    d_time_2 = time.perf_counter() - c_time
275
276
    d_time_frac = d_time_1 / d_time_2
277
278
    print("\n d_time_1 ", d_time_1)
279
    print("\n d_time_2 ", d_time_2)
280
281
    assert d_time_frac > 1.5
282
283
284 View Code Duplication
@pytest.mark.parametrize("search_space", search_space_list)
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
285
def test_memory_warm_start_1(search_space):
286
    n_iter = 1500
287
288
    c_time = time.perf_counter()
289
    hyper0 = Hyperactive(distribution="pathos")
290
    hyper0.add_search(
291
        objective_function, search_space, n_iter=n_iter, n_jobs=2, memory=True
292
    )
293
    hyper0.run()
294
    d_time_1 = time.perf_counter() - c_time
295
296
    search_data0 = hyper0.search_data(objective_function)
297
298
    c_time = time.perf_counter()
299
    hyper1 = Hyperactive(distribution="pathos")
300
    hyper1.add_search(
301
        objective_function,
302
        search_space,
303
        n_iter=n_iter,
304
        n_jobs=2,
305
        memory=True,
306
        memory_warm_start=search_data0,
307
    )
308
    hyper1.run()
309
    d_time_2 = time.perf_counter() - c_time
310
311
    d_time_frac = d_time_1 / d_time_2
312
313
    print("\n d_time_1 ", d_time_1)
314
    print("\n d_time_2 ", d_time_2)
315
316
    assert d_time_frac > 1.5
317