tests.test_optimization_strategies.test_search_space_pruning   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

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

1 Function

Rating   Name   Duplication   Size   Complexity  
A test_memory_Warm_start_smbo_0() 0 47 1
1
"""Test module for search space pruning optimization strategy."""
2
3
import time
4
5
import numpy as np
6
import pytest
7
8
from hyperactive import Hyperactive
9
from hyperactive.optimizers import GridSearchOptimizer
10
from hyperactive.optimizers.strategies import CustomOptimizationStrategy
11
12
from ._parametrize import optimizers_smbo
13
14
15
@pytest.mark.parametrize(*optimizers_smbo)
16
def test_memory_Warm_start_smbo_0(Optimizer_smbo):
17
    """Test memory warm start with SMBO optimizers and custom optimization strategy."""
18
19
    def objective_function(opt):
20
        time.sleep(0.01)
21
        score = -(opt["x1"] * opt["x1"])
22
        return score
23
24
    search_space = {
25
        "x1": list(np.arange(0, 100, 1)),
26
    }
27
28
    optimizer1 = GridSearchOptimizer()
29
    optimizer2 = Optimizer_smbo()
30
31
    opt_strat = CustomOptimizationStrategy()
32
33
    duration_1 = 0.8
34
    duration_2 = 0.2
35
36
    opt_strat.add_optimizer(optimizer1, duration=duration_1)
37
    opt_strat.add_optimizer(optimizer2, duration=duration_2)
38
39
    n_iter = 20
40
41
    hyper = Hyperactive()
42
    hyper.add_search(
43
        objective_function,
44
        search_space,
45
        optimizer=opt_strat,
46
        n_iter=n_iter,
47
        memory=True,
48
    )
49
    hyper.run()
50
51
    search_data = hyper.search_data(objective_function)
52
53
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
54
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
55
56
    assert len(search_data) == n_iter
57
58
    assert len(optimizer1.search_data) == int(n_iter * duration_1)
59
    assert len(optimizer2.search_data) == int(n_iter * duration_2)
60
61
    assert optimizer1.best_score <= optimizer2.best_score
62