Passed
Pull Request — master (#101)
by Simon
01:35
created

tests_old.test_optimization_strategies.test_early_stopping   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 44
dl 0
loc 67
rs 10
c 0
b 0
f 0
wmc 1

1 Function

Rating   Name   Duplication   Size   Complexity  
A test_strategy_early_stopping_0() 0 45 1
1
import pytest
2
import numpy as np
3
4
5
from hyperactive import Hyperactive
6
from hyperactive.optimizers.strategies import CustomOptimizationStrategy
7
from hyperactive.optimizers import RandomSearchOptimizer
8
9
from ._parametrize import optimizers
10
11
12
n_iter_no_change_parametr = (
13
    "n_iter_no_change",
14
    [
15
        (5),
16
        (10),
17
        (15),
18
    ],
19
)
20
21
22
@pytest.mark.parametrize(*n_iter_no_change_parametr)
23
@pytest.mark.parametrize(*optimizers)
24
def test_strategy_early_stopping_0(Optimizer, n_iter_no_change):
25
    def objective_function(para):
26
        score = -para["x1"] * para["x1"]
27
        return score
28
29
    search_space = {
30
        "x1": list(np.arange(0, 100, 0.1)),
31
    }
32
33
    # n_iter_no_change = 5
34
    early_stopping = {
35
        "n_iter_no_change": n_iter_no_change,
36
    }
37
38
    optimizer1 = Optimizer()
39
    optimizer2 = RandomSearchOptimizer()
40
41
    opt_strat = CustomOptimizationStrategy()
42
    opt_strat.add_optimizer(optimizer1, duration=0.9, early_stopping=early_stopping)
43
    opt_strat.add_optimizer(optimizer2, duration=0.1)
44
45
    n_iter = 30
46
47
    hyper = Hyperactive()
48
    hyper.add_search(
49
        objective_function,
50
        search_space,
51
        optimizer=opt_strat,
52
        n_iter=n_iter,
53
        initialize={"warm_start": [{"x1": 0}]},
54
    )
55
    hyper.run()
56
57
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
58
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
59
60
    search_data = optimizer1.search_data
61
    n_performed_iter = len(search_data)
62
63
    print("\n n_performed_iter \n", n_performed_iter)
64
    print("\n n_iter_no_change \n", n_iter_no_change)
65
66
    assert n_performed_iter == (n_iter_no_change + 1)
67