tests.test_optimizers.test_backend_api   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 49
dl 0
loc 73
rs 10
c 0
b 0
f 0
wmc 4

2 Functions

Rating   Name   Duplication   Size   Complexity  
A test_backend_api_0() 0 24 3
A objective_function() 0 2 1
1
import pytest
2
import random
3
import numpy as np
4
5
from gradient_free_optimizers.optimizers.core_optimizer.converter import Converter
6
7
from ._parametrize import optimizers
8
9
10
def objective_function(para):
11
    return -(para["x1"] + para["x1"])
12
13
14
search_space1 = {
15
    "x1": np.array([1]),
16
    "x2": np.arange(-10, 10, 1),
17
}
18
19
search_space2 = {
20
    "x1": np.arange(-10, 10, 1),
21
    "x2": np.array([1]),
22
}
23
24
search_space3 = {
25
    "x1": np.arange(-10, 10, 1),
26
    "x2": np.array([1]),
27
    "x3": np.array([1]),
28
}
29
30
search_space4 = {
31
    "x1": np.arange(-10, 10, 1),
32
    "x2": np.array([1]),
33
    "x3": np.array([1]),
34
    "x4": np.array([1]),
35
}
36
37
38
objective_para = (
39
    "search_space",
40
    [
41
        (search_space1),
42
        (search_space2),
43
        (search_space3),
44
        (search_space4),
45
    ],
46
)
47
48
49
@pytest.mark.parametrize(*objective_para)
50
@pytest.mark.parametrize(*optimizers)
51
def test_backend_api_0(Optimizer, search_space):
52
    opt = Optimizer(search_space)
53
54
    conv = Converter(search_space)
55
56
    n_inits = len(opt.init.init_positions_l)
57
58
    for _ in range(n_inits):
59
        pos = opt.init_pos()
60
        value = conv.position2value(pos)
61
        para = conv.value2para(value)
62
        score = objective_function(para)
63
        opt.evaluate(score)
64
65
    opt.finish_initialization()
66
67
    for _ in range(20):
68
        pos = opt.iterate()
69
        value = conv.position2value(pos)
70
        para = conv.value2para(value)
71
        score = objective_function(para)
72
        opt.evaluate(score)
73