Passed
Push — master ( 82a436...3434da )
by Simon
02:00
created

tests.test_optimization_strategies.test_search_space_pruning   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 39
dl 0
loc 58
rs 10
c 0
b 0
f 0
wmc 1

1 Function

Rating   Name   Duplication   Size   Complexity  
A test_memory_Warm_start_smbo_0() 0 45 1
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_smbo
11
12
13
@pytest.mark.parametrize(*optimizers_smbo)
14
def test_memory_Warm_start_smbo_0(Optimizer_smbo):
15
    def objective_function(opt):
16
        time.sleep(0.01)
17
        score = -(opt["x1"] * opt["x1"])
18
        return score
19
20
    search_space = {
21
        "x1": list(np.arange(0, 100, 1)),
22
    }
23
24
    optimizer1 = GridSearchOptimizer()
25
    optimizer2 = Optimizer_smbo()
26
27
    opt_strat = CustomOptimizationStrategy()
28
29
    duration_1 = 0.8
30
    duration_2 = 0.2
31
32
    opt_strat.add_optimizer(optimizer1, duration=duration_1)
33
    opt_strat.add_optimizer(optimizer2, duration=duration_2)
34
35
    n_iter = 20
36
37
    hyper = Hyperactive()
38
    hyper.add_search(
39
        objective_function,
40
        search_space,
41
        optimizer=opt_strat,
42
        n_iter=n_iter,
43
        memory=True,
44
    )
45
    hyper.run()
46
47
    search_data = hyper.search_data(objective_function)
48
49
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
50
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
51
52
    assert len(search_data) == n_iter
53
54
    assert len(optimizer1.search_data) == int(n_iter * duration_1)
55
    assert len(optimizer2.search_data) == int(n_iter * duration_2)
56
57
    assert optimizer1.best_score <= optimizer2.best_score
58