Passed
Push — master ( 199200...2b2f7b )
by Simon
04:29
created

objective_function()   A

Complexity

Conditions 1

Size

Total Lines 4
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
import time
2
import pytest
3
import numpy as np
4
5
6
from hyperactive import Hyperactive
7
from hyperactive.optimizers.strategies import CustomOptimizationStrategy
8
from hyperactive.optimizers import GridSearchOptimizer
9
10
from ._parametrize import optimizers_non_smbo
11
12
13
def objective_function(opt):
14
    time.sleep(0.01)
15
    score = -(opt["x1"] * opt["x1"])
16
    return score
17
18
19
search_space = {
20
    "x1": list(np.arange(0, 100, 1)),
21
}
22
23
24
def test_memory_Warm_start_0():
25
    optimizer1 = GridSearchOptimizer()
26
    optimizer2 = GridSearchOptimizer()
27
28
    opt_strat = CustomOptimizationStrategy()
29
    opt_strat.add_optimizer(optimizer1, duration=0.2)
30
    opt_strat.add_optimizer(optimizer2, duration=0.8)
31
32
    n_iter = 1000
33
34
    c_time = time.time()
35
36
    hyper = Hyperactive()
37
    hyper.add_search(
38
        objective_function,
39
        search_space,
40
        optimizer=opt_strat,
41
        n_iter=n_iter,
42
        memory=True,
43
    )
44
    hyper.run()
45
46
    d_time = time.time() - c_time
47
48
    search_data = hyper.search_data(objective_function)
49
    
50
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
51
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
52
53
    assert len(search_data) == n_iter
54
55
    assert len(optimizer1.search_data) == 200
56
    assert len(optimizer2.search_data) == 800
57
58
    assert optimizer1.best_score <= optimizer2.best_score
59
60
    print("\n d_time", d_time)
61
62
    assert d_time < 3
63
64
65 View Code Duplication
def test_memory_Warm_start_1():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
66
    optimizer1 = GridSearchOptimizer()
67
    optimizer2 = GridSearchOptimizer()
68
69
    opt_strat = CustomOptimizationStrategy()
70
    opt_strat.add_optimizer(optimizer1, duration=0.2)
71
    opt_strat.add_optimizer(optimizer2, duration=0.8)
72
73
    n_iter = 100
74
75
    search_space = {
76
        "x1": list(np.arange(0, 1, 1)),
77
    }
78
79
    c_time = time.time()
80
81
    hyper = Hyperactive()
82
    hyper.add_search(
83
        objective_function,
84
        search_space,
85
        optimizer=opt_strat,
86
        n_iter=n_iter,
87
        memory=False,
88
    )
89
    hyper.run()
90
91
    d_time = time.time() - c_time
92
93
    search_data = hyper.search_data(objective_function)
94
95
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
96
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
97
98
    assert len(search_data) == n_iter
99
100
    assert len(optimizer1.search_data) == 20
101
    assert len(optimizer2.search_data) == 80
102
103
    assert optimizer1.best_score <= optimizer2.best_score
104
105
    print("\n d_time", d_time)
106
107
    assert d_time > 0.95
108
109
110
111 View Code Duplication
@pytest.mark.parametrize(*optimizers_non_smbo)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
112
def test_memory_Warm_start_2(Optimizer_non_smbo):
113
    optimizer1 = GridSearchOptimizer()
114
    optimizer2 = Optimizer_non_smbo()
115
116
    opt_strat = CustomOptimizationStrategy()
117
    opt_strat.add_optimizer(optimizer1, duration=0.5)
118
    opt_strat.add_optimizer(optimizer2, duration=0.5)
119
120
    search_space = {
121
        "x1": list(np.arange(0, 50, 1)),
122
    }
123
124
    n_iter = 100
125
126
    c_time = time.time()
127
128
    hyper = Hyperactive()
129
    hyper.add_search(
130
        objective_function,
131
        search_space,
132
        optimizer=opt_strat,
133
        n_iter=n_iter,
134
        memory=True,
135
    )
136
    hyper.run()
137
138
    d_time = time.time() - c_time
139
140
    search_data = hyper.search_data(objective_function)
141
142
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
143
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
144
145
    assert len(search_data) == n_iter
146
147
    assert len(optimizer1.search_data) == 50
148
    assert len(optimizer2.search_data) == 50
149
150
    assert optimizer1.best_score <= optimizer2.best_score
151
152
    print("\n d_time", d_time)
153
154
    assert d_time < 0.9
155