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

tests.test_optimizers.test_optimization_strategies   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 56
Duplicated Lines 58.93 %

Importance

Changes 0
Metric Value
eloc 37
dl 33
loc 56
rs 10
c 0
b 0
f 0
wmc 2

2 Functions

Rating   Name   Duplication   Size   Complexity  
A objective_function() 0 3 1
A test_strategy_combinations_0() 33 33 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

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