Passed
Push — master ( 485d4c...ca6528 )
by Simon
04:24
created

objective_function()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
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 HillClimbingOptimizer
8
9
from ._parametrize import optimizers
10
11
12
def objective_function(opt):
13
    score = -(opt["x1"] * opt["x1"] + opt["x2"] * opt["x2"])
14
    return score
15
16
17
search_space = {
18
    "x1": list(np.arange(-3, 3, 1)),
19
    "x2": list(np.arange(-3, 3, 1)),
20
}
21
22
23 View Code Duplication
@pytest.mark.parametrize(*optimizers)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
24
def test_strategy_combinations_0(Optimizer):
25
    optimizer1 = Optimizer()
26
    optimizer2 = HillClimbingOptimizer()
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 = 4
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
        initialize={"random": 1},
42
    )
43
    hyper.run()
44
45
    search_data = hyper.search_data(objective_function)
46
47
    optimizer1 = hyper.opt_pros[0].optimizer_setup_l[0]["optimizer"]
48
    optimizer2 = hyper.opt_pros[0].optimizer_setup_l[1]["optimizer"]
49
50
    assert len(search_data) == n_iter
51
52
    assert len(optimizer1.search_data) == 2
53
    assert len(optimizer2.search_data) == 2
54
55
    assert optimizer1.best_score <= optimizer2.best_score
56