Passed
Push — master ( bac9d4...455948 )
by Simon
04:25
created

create_convergence_data.create_convergence_data()   A

Complexity

Conditions 2

Size

Total Lines 28
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 22
nop 1
dl 0
loc 28
rs 9.352
c 0
b 0
f 0
1
from tqdm import tqdm
2
import numpy as np
3
import pandas as pd
4
5
from gradient_free_optimizers import (
6
    HillClimbingOptimizer,
7
    StochasticHillClimbingOptimizer,
8
    TabuOptimizer,
9
    RandomSearchOptimizer,
10
    RandomRestartHillClimbingOptimizer,
11
    RandomAnnealingOptimizer,
12
    SimulatedAnnealingOptimizer,
13
    ParallelTemperingOptimizer,
14
    ParticleSwarmOptimizer,
15
    EvolutionStrategyOptimizer,
16
    BayesianOptimizer,
17
    TreeStructuredParzenEstimators,
18
    DecisionTreeOptimizer,
19
)
20
21
22
optimizer_dict = {
23
    "HillClimbing": HillClimbingOptimizer,
24
    "StochasticHillClimbingOptimizer": StochasticHillClimbingOptimizer,
25
}
26
27
28
def create_convergence_data(optimizer_key):
29
    def objective_function(para):
30
        score = -para["x1"] * para["x1"]
31
        return score
32
33
    search_space = {"x1": np.arange(-100, 101, 1)}
34
    initialize = {"vertices": 2}
35
36
    n_opts = 30
37
    n_iter = 100
38
39
    scores_list = []
40
    for rnd_st in tqdm(range(n_opts)):
41
        opt = optimizer_dict[optimizer_key](search_space)
42
        opt.search(
43
            objective_function,
44
            n_iter=n_iter,
45
            random_state=rnd_st,
46
            memory=False,
47
            verbosity=False,
48
            initialize=initialize,
49
        )
50
51
        scores_list.append(opt.results["score"])
52
53
    convergence_data = pd.concat(scores_list, axis=1)
54
    convergence_data.to_csv(
55
        "./data/" + optimizer_key + "_convergence_data", index=False
56
    )
57
58
59
for opt_key in optimizer_dict.keys():
60
    create_convergence_data(opt_key)
61