Total Complexity | 3 |
Total Lines | 64 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | # Author: Simon Blanke |
||
2 | # Email: [email protected] |
||
3 | # License: MIT License |
||
4 | |||
5 | import pytest |
||
6 | import numpy as np |
||
7 | |||
8 | from gradient_free_optimizers import ( |
||
9 | BayesianOptimizer, |
||
10 | TreeStructuredParzenEstimators, |
||
11 | DecisionTreeOptimizer, |
||
12 | EnsembleOptimizer, |
||
13 | ) |
||
14 | |||
15 | |||
16 | def objective_function(para): |
||
17 | score = -para["x1"] * para["x1"] |
||
18 | return score |
||
19 | |||
20 | |||
21 | search_space = {"x1": np.arange(-10, 11, 1)} |
||
22 | |||
23 | |||
24 | sbom_para = [ |
||
25 | ({"warm_start_sbom": None}), |
||
26 | ({"warm_start_sbom": None}), |
||
27 | ({"rand_rest_p": 0}), |
||
28 | ({"rand_rest_p": 0.5}), |
||
29 | ({"rand_rest_p": 1}), |
||
30 | ({"rand_rest_p": 10}), |
||
31 | ] |
||
32 | |||
33 | |||
34 | pytest_wrapper = ("para", sbom_para) |
||
35 | |||
36 | optimizers_sbom = ( |
||
37 | "Optimizer", |
||
38 | [ |
||
39 | (BayesianOptimizer), |
||
40 | (TreeStructuredParzenEstimators), |
||
41 | (DecisionTreeOptimizer), |
||
42 | (EnsembleOptimizer), |
||
43 | ], |
||
44 | ) |
||
45 | |||
46 | |||
47 | @pytest.mark.parametrize(*optimizers_sbom) |
||
48 | @pytest.mark.parametrize(*pytest_wrapper) |
||
49 | def test_sbom_para(Optimizer, para): |
||
50 | opt = Optimizer(search_space, **para) |
||
51 | opt.search( |
||
52 | objective_function, |
||
53 | n_iter=10, |
||
54 | memory=False, |
||
55 | verbosity=False, |
||
56 | initialize={"vertices": 2}, |
||
57 | ) |
||
58 | |||
59 | for optimizer in opt.optimizers: |
||
60 | para_key = list(para.keys())[0] |
||
61 | para_value = getattr(optimizer, para_key) |
||
62 | |||
63 | assert para_value == para[para_key] |
||
64 |