Completed
Push — master ( f67568...5e5af8 )
by Simon
01:28
created

tests.optimizer_parameter.EvolutionStrategy   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 36
dl 0
loc 56
rs 10
c 0
b 0
f 0
wmc 9

4 Functions

Rating   Name   Duplication   Size   Complexity  
A test_individuals() 0 7 2
A test_mutation_rate() 0 7 2
A test_crossover_rate() 0 7 2
A sphere_function() 0 8 3
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
import numpy as np
6
7
from hyperactive import Hyperactive
8
9
X, y = np.array([0]), np.array([0])
10
memory = False
11
n_iter = 25
12
13
14
def sphere_function(para, X_train, y_train):
15
    loss = []
16
    for key in para.keys():
17
        if key == "iteration":
18
            continue
19
        loss.append(para[key] * para[key])
20
21
    return -np.array(loss).sum()
22
23
24
search_config = {
25
    sphere_function: {"x1": np.arange(-3, 3, 0.1), "x2": np.arange(-3, 3, 0.1)}
26
}
27
28
29
def test_individuals():
30
    for individuals in [2, 10, 20, 50]:
31
        opt = Hyperactive(X, y, memory=memory)
32
        opt.search(
33
            search_config,
34
            n_iter=n_iter,
35
            optimizer={"EvolutionStrategy": {"individuals": individuals}},
36
        )
37
38
39
def test_mutation_rate():
40
    for mutation_rate in [0.1, 0.9]:
41
        opt = Hyperactive(X, y, memory=memory)
42
        opt.search(
43
            search_config,
44
            n_iter=n_iter,
45
            optimizer={"EvolutionStrategy": {"mutation_rate": mutation_rate}},
46
        )
47
48
49
def test_crossover_rate():
50
    for crossover_rate in [0.1, 0.9]:
51
        opt = Hyperactive(X, y, memory=memory)
52
        opt.search(
53
            search_config,
54
            n_iter=n_iter,
55
            optimizer={"EvolutionStrategy": {"crossover_rate": crossover_rate}},
56
        )
57