Passed
Push — master ( 502a6e...660aa4 )
by Simon
04:50 queued 14s
created

tests.test_parameters.test_hill_climbing   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 35
rs 10
c 0
b 0
f 0
wmc 2

2 Functions

Rating   Name   Duplication   Size   Complexity  
A parabola_function() 0 3 1
A test_epsilon_0() 0 12 1
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
import pytest
6
import numpy as np
7
8
9
from gradient_free_optimizers import HillClimbingOptimizer
10
11
12
def parabola_function(para):
13
    loss = para["x"] * para["x"] + para["y"] * para["y"]
14
    return -loss
15
16
17
search_space = {
18
    "x": np.arange(-10, 11, 1),
19
    "y": np.arange(-10, 11, 1),
20
}
21
22
23
def test_epsilon_0():
24
    epsilon = 1 / np.inf
25
26
    opt = HillClimbingOptimizer(
27
        search_space, initialize={"vertices": 1}, epsilon=epsilon
28
    )
29
    opt.search(parabola_function, n_iter=100)
30
31
    search_data = opt.search_data
32
    scores = search_data["score"].values
33
34
    assert np.all(scores == -200)
35