Passed
Push — master ( 4ef66c...afb360 )
by Simon
03:52
created

test_TabuOptimizer_convergence()   A

Complexity

Conditions 2

Size

Total Lines 18
Code Lines 15

Duplication

Lines 18
Ratio 100 %

Importance

Changes 0
Metric Value
cc 2
eloc 15
nop 0
dl 18
loc 18
rs 9.65
c 0
b 0
f 0
1
import numpy as np
2
from tqdm import tqdm
3
4
from gradient_free_optimizers import (
5
    HillClimbingOptimizer,
6
    StochasticHillClimbingOptimizer,
7
    TabuOptimizer,
8
    RandomSearchOptimizer,
9
    RandomRestartHillClimbingOptimizer,
10
    RandomAnnealingOptimizer,
11
    SimulatedAnnealingOptimizer,
12
    ParallelTemperingOptimizer,
13
    ParticleSwarmOptimizer,
14
    EvolutionStrategyOptimizer,
15
    BayesianOptimizer,
16
    TreeStructuredParzenEstimators,
17
    DecisionTreeOptimizer,
18
)
19
20
21
optimizer_dict = {
22
    "HillClimbing": HillClimbingOptimizer,
23
    "StochasticHillClimbing": StochasticHillClimbingOptimizer,
24
    "TabuSearch": TabuOptimizer,
25
    "RandomSearch": RandomSearchOptimizer,
26
    "RandomRestartHillClimbing": RandomRestartHillClimbingOptimizer,
27
    "RandomAnnealing": RandomAnnealingOptimizer,
28
    "SimulatedAnnealing": SimulatedAnnealingOptimizer,
29
    "ParallelTempering": ParallelTemperingOptimizer,
30
    "ParticleSwarm": ParticleSwarmOptimizer,
31
    "EvolutionStrategy": EvolutionStrategyOptimizer,
32
    "Bayesian": BayesianOptimizer,
33
    "TreeStructured": TreeStructuredParzenEstimators,
34
    "DecisionTree": DecisionTreeOptimizer,
35
}
36
37
38
def objective_function(pos_new):
39
    score = -pos_new[0] * pos_new[0]
40
    return score
41
42
43
search_space = [np.arange(-100, 100, 1)]
44
initialize = {"grid": 4, "random": 2, "vertices": 4}
45
46
n_opts = 100
47
n_iter = 50
48
min_score_accept = -100
49
50
51 View Code Duplication
def test_HillClimbingOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
52
    scores = []
53
    for rnd_st in tqdm(range(n_opts)):
54
        opt = HillClimbingOptimizer(search_space)
55
        opt.search(
56
            objective_function,
57
            n_iter=n_iter,
58
            random_state=rnd_st,
59
            memory=False,
60
            print_results=False,
61
            progress_bar=False,
62
            initialize=initialize,
63
        )
64
65
        scores.append(opt.best_score)
66
67
    score_mean = np.array(scores).mean()
68
    assert min_score_accept < score_mean
69
70
71 View Code Duplication
def test_StochasticHillClimbingOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
72
    scores = []
73
    for rnd_st in tqdm(range(n_opts)):
74
        opt = StochasticHillClimbingOptimizer(search_space)
75
        opt.search(
76
            objective_function,
77
            n_iter=n_iter,
78
            random_state=rnd_st,
79
            memory=False,
80
            print_results=False,
81
            progress_bar=False,
82
            initialize=initialize,
83
        )
84
85
        scores.append(opt.best_score)
86
87
    score_mean = np.array(scores).mean()
88
    assert min_score_accept < score_mean
89
90
91 View Code Duplication
def test_TabuOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
92
    scores = []
93
    for rnd_st in tqdm(range(n_opts)):
94
        opt = TabuOptimizer(search_space)
95
        opt.search(
96
            objective_function,
97
            n_iter=n_iter,
98
            random_state=rnd_st,
99
            memory=False,
100
            print_results=False,
101
            progress_bar=False,
102
            initialize=initialize,
103
        )
104
105
        scores.append(opt.best_score)
106
107
    score_mean = np.array(scores).mean()
108
    assert min_score_accept < score_mean
109
110
111 View Code Duplication
def test_RandomSearchOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
112
    scores = []
113
    for rnd_st in tqdm(range(n_opts)):
114
        opt = RandomSearchOptimizer(search_space)
115
        opt.search(
116
            objective_function,
117
            n_iter=n_iter,
118
            random_state=rnd_st,
119
            memory=False,
120
            print_results=False,
121
            progress_bar=False,
122
            initialize=initialize,
123
        )
124
125
        scores.append(opt.best_score)
126
127
    score_mean = np.array(scores).mean()
128
    assert min_score_accept < score_mean
129
130
131 View Code Duplication
def test_RandomRestartHillClimbingOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
132
    scores = []
133
    for rnd_st in tqdm(range(n_opts)):
134
        opt = RandomRestartHillClimbingOptimizer(search_space)
135
        opt.search(
136
            objective_function,
137
            n_iter=n_iter,
138
            random_state=rnd_st,
139
            memory=False,
140
            print_results=False,
141
            progress_bar=False,
142
            initialize=initialize,
143
        )
144
145
        scores.append(opt.best_score)
146
147
    score_mean = np.array(scores).mean()
148
    assert min_score_accept < score_mean
149
150
151 View Code Duplication
def test_RandomAnnealingOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
152
    scores = []
153
    for rnd_st in tqdm(range(n_opts)):
154
        opt = RandomAnnealingOptimizer(search_space)
155
        opt.search(
156
            objective_function,
157
            n_iter=n_iter,
158
            random_state=rnd_st,
159
            memory=False,
160
            print_results=False,
161
            progress_bar=False,
162
            initialize=initialize,
163
        )
164
165
        scores.append(opt.best_score)
166
167
    score_mean = np.array(scores).mean()
168
    assert min_score_accept < score_mean
169
170
171 View Code Duplication
def test_SimulatedAnnealingOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
172
    scores = []
173
    for rnd_st in tqdm(range(n_opts)):
174
        opt = SimulatedAnnealingOptimizer(search_space)
175
        opt.search(
176
            objective_function,
177
            n_iter=n_iter,
178
            random_state=rnd_st,
179
            memory=False,
180
            print_results=False,
181
            progress_bar=False,
182
            initialize=initialize,
183
        )
184
185
        scores.append(opt.best_score)
186
187
    score_mean = np.array(scores).mean()
188
    assert min_score_accept < score_mean
189
190
191 View Code Duplication
def test_ParallelTemperingOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
192
    scores = []
193
    for rnd_st in tqdm(range(n_opts)):
194
        opt = ParallelTemperingOptimizer(search_space)
195
        opt.search(
196
            objective_function,
197
            n_iter=n_iter,
198
            random_state=rnd_st,
199
            memory=False,
200
            print_results=False,
201
            progress_bar=False,
202
            initialize=initialize,
203
        )
204
205
        scores.append(opt.best_score)
206
207
    score_mean = np.array(scores).mean()
208
    assert min_score_accept < score_mean
209
210
211 View Code Duplication
def test_ParticleSwarmOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
212
    scores = []
213
    for rnd_st in tqdm(range(n_opts)):
214
        opt = ParticleSwarmOptimizer(search_space)
215
        opt.search(
216
            objective_function,
217
            n_iter=n_iter,
218
            random_state=rnd_st,
219
            memory=False,
220
            print_results=False,
221
            progress_bar=False,
222
            initialize=initialize,
223
        )
224
225
        scores.append(opt.best_score)
226
227
    score_mean = np.array(scores).mean()
228
    assert min_score_accept < score_mean
229
230
231 View Code Duplication
def test_EvolutionStrategyOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
232
    scores = []
233
    for rnd_st in tqdm(range(n_opts)):
234
        opt = EvolutionStrategyOptimizer(search_space)
235
        opt.search(
236
            objective_function,
237
            n_iter=n_iter,
238
            random_state=rnd_st,
239
            memory=False,
240
            print_results=False,
241
            progress_bar=False,
242
            initialize=initialize,
243
        )
244
245
        scores.append(opt.best_score)
246
247
    score_mean = np.array(scores).mean()
248
    assert min_score_accept < score_mean
249
250
251 View Code Duplication
def test_BayesianOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
252
    scores = []
253
    for rnd_st in tqdm(range(n_opts)):
254
        opt = BayesianOptimizer(search_space)
255
        opt.search(
256
            objective_function,
257
            n_iter=n_iter,
258
            random_state=rnd_st,
259
            memory=False,
260
            print_results=False,
261
            progress_bar=False,
262
            initialize=initialize,
263
        )
264
265
        scores.append(opt.best_score)
266
267
    score_mean = np.array(scores).mean()
268
    assert min_score_accept < score_mean
269
270
271 View Code Duplication
def test_TreeStructuredParzenEstimators_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
272
    scores = []
273
    for rnd_st in tqdm(range(n_opts)):
274
        opt = TreeStructuredParzenEstimators(search_space)
275
        opt.search(
276
            objective_function,
277
            n_iter=n_iter,
278
            random_state=rnd_st,
279
            memory=False,
280
            print_results=False,
281
            progress_bar=False,
282
            initialize=initialize,
283
        )
284
285
        scores.append(opt.best_score)
286
287
    score_mean = np.array(scores).mean()
288
    assert min_score_accept < score_mean
289
290
291 View Code Duplication
def test_DecisionTreeOptimizer_convergence():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
292
    scores = []
293
    for rnd_st in tqdm(range(n_opts)):
294
        opt = DecisionTreeOptimizer(search_space)
295
        opt.search(
296
            objective_function,
297
            n_iter=n_iter,
298
            random_state=rnd_st,
299
            memory=False,
300
            print_results=False,
301
            progress_bar=False,
302
            initialize=initialize,
303
        )
304
305
        scores.append(opt.best_score)
306
307
    score_mean = np.array(scores).mean()
308
    assert min_score_accept < score_mean
309
310
311
test_DecisionTreeOptimizer_convergence()
312