Issues (58)

_test_strategy_combinations.py (3 issues)

1
import pytest
2
import numpy as np
3
4
5
from hyperactive import Hyperactive
6
from hyperactive.optimizers.strategies import CustomOptimizationStrategy
7
8
from ._parametrize import optimizers, optimizers_strat
9
10
11
def objective_function(opt):
12
    score = -(opt["x1"] * opt["x1"] + opt["x2"] * opt["x2"])
13
    return score
14
15
16
search_space = {
17
    "x1": list(np.arange(-3, 3, 1)),
18
    "x2": list(np.arange(-3, 3, 1)),
19
}
20
21
22 View Code Duplication
@pytest.mark.parametrize(*optimizers)
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
23
@pytest.mark.parametrize(*optimizers_strat)
24
def test_strategy_combinations_0(Optimizer, Optimizer_strat):
25
    optimizer1 = Optimizer()
26
    optimizer2 = Optimizer_strat()
27
28
    opt_strat = CustomOptimizationStrategy()
29
    opt_strat.add_optimizer(optimizer1, duration=0.5)
30
    opt_strat.add_optimizer(optimizer2, duration=0.5)
31
32
    n_iter = 30
33
34
    hyper = Hyperactive()
35
    hyper.add_search(
36
        objective_function,
37
        search_space,
38
        optimizer=opt_strat,
39
        n_iter=n_iter,
40
        memory=False,
41
    )
42
    hyper.run()
43
44
    search_data = hyper.search_data(objective_function)
45
46
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
47
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
48
49
    assert len(search_data) == n_iter
50
51
    assert len(optimizer1.search_data) == 15
52
    assert len(optimizer2.search_data) == 15
53
54
    assert optimizer1.best_score <= optimizer2.best_score
55
56
57 View Code Duplication
@pytest.mark.parametrize(*optimizers)
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
58
@pytest.mark.parametrize(*optimizers_strat)
59
def test_strategy_combinations_1(Optimizer, Optimizer_strat):
60
    optimizer1 = Optimizer()
61
    optimizer2 = Optimizer_strat()
62
63
    opt_strat = CustomOptimizationStrategy()
64
    opt_strat.add_optimizer(optimizer1, duration=0.1)
65
    opt_strat.add_optimizer(optimizer2, duration=0.9)
66
67
    n_iter = 10
68
69
    hyper = Hyperactive()
70
    hyper.add_search(
71
        objective_function,
72
        search_space,
73
        optimizer=opt_strat,
74
        n_iter=n_iter,
75
        memory=False,
76
    )
77
    hyper.run()
78
79
    search_data = hyper.search_data(objective_function)
80
81
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
82
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
83
84
    assert len(search_data) == n_iter
85
86
    assert len(optimizer1.search_data) == 1
87
    assert len(optimizer2.search_data) == 9
88
89
    assert optimizer1.best_score <= optimizer2.best_score
90
91
92 View Code Duplication
@pytest.mark.parametrize(*optimizers)
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
93
@pytest.mark.parametrize(*optimizers_strat)
94
def test_strategy_combinations_2(Optimizer, Optimizer_strat):
95
    optimizer1 = Optimizer()
96
    optimizer2 = Optimizer_strat()
97
98
    opt_strat = CustomOptimizationStrategy()
99
    opt_strat.add_optimizer(optimizer1, duration=0.9)
100
    opt_strat.add_optimizer(optimizer2, duration=0.1)
101
102
    n_iter = 10
103
104
    hyper = Hyperactive()
105
    hyper.add_search(
106
        objective_function,
107
        search_space,
108
        optimizer=opt_strat,
109
        n_iter=n_iter,
110
        memory=False,
111
    )
112
    hyper.run()
113
114
    search_data = hyper.search_data(objective_function)
115
116
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
117
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
118
119
    assert len(search_data) == n_iter
120
121
    assert len(optimizer1.search_data) == 9
122
    assert len(optimizer2.search_data) == 1
123
124
    assert optimizer1.best_score <= optimizer2.best_score
125
126
127
@pytest.mark.parametrize(*optimizers)
128
@pytest.mark.parametrize(*optimizers_strat)
129
def test_strategy_combinations_3(Optimizer, Optimizer_strat):
130
    optimizer1 = Optimizer()
131
    optimizer2 = Optimizer_strat()
132
    optimizer3 = Optimizer_strat()
133
134
    opt_strat = CustomOptimizationStrategy()
135
    opt_strat.add_optimizer(optimizer1, duration=10)
136
    opt_strat.add_optimizer(optimizer2, duration=20)
137
    opt_strat.add_optimizer(optimizer3, duration=30)
138
139
    n_iter = 100
140
141
    hyper = Hyperactive()
142
    hyper.add_search(
143
        objective_function,
144
        search_space,
145
        optimizer=opt_strat,
146
        n_iter=n_iter,
147
        memory=False,
148
    )
149
    hyper.run()
150
151
    search_data = hyper.search_data(objective_function)
152
153
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
154
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
155
    optimizer3 = hyper.opt_pros[0].optimizer_setup_l[2]["optimizer"]
156
157
    assert len(search_data) == n_iter
158
159
    assert len(optimizer1.search_data) == round(n_iter * 10 / 60)
160
    assert len(optimizer2.search_data) == round(n_iter * 20 / 60)
161
    assert len(optimizer3.search_data) == round(n_iter * 30 / 60)
162
163
    assert optimizer1.best_score <= optimizer2.best_score <= optimizer3.best_score
164