Passed
Push — master ( 7f8683...e38cf2 )
by Simon
02:14
created

align_para_names()   A

Complexity

Conditions 2

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 9
nop 1
dl 0
loc 11
rs 9.95
c 0
b 0
f 0
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
import numpy as np
6
7
indent = "  "
8
9
10
def _print_times(eval_time, iter_time, n_iter):
11
12
    opt_time = iter_time - eval_time
13
    iterPerSec = n_iter / iter_time
14
15
    print(
16
        indent,
17
        "Evaluation time   :",
18
        eval_time,
19
        "sec",
20
        indent,
21
        "[{} %]".format(round(eval_time / iter_time * 100, 2)),
22
    )
23
    print(
24
        indent,
25
        "Optimization time :",
26
        opt_time,
27
        "sec",
28
        indent,
29
        "[{} %]".format(round(opt_time / iter_time * 100, 2)),
30
    )
31
    if iterPerSec >= 1:
32
        print(
33
            indent,
34
            "Iteration time    :",
35
            iter_time,
36
            "sec",
37
            indent,
38
            "[{} iter/sec]".format(round(iterPerSec, 2)),
39
        )
40
    else:
41
        secPerIter = iter_time / n_iter
42
        print(
43
            indent,
44
            "Iteration time    :",
45
            iter_time,
46
            "sec",
47
            indent,
48
            "[{} sec/iter]".format(round(secPerIter, 2)),
49
        )
50
    print(" ")
51
52
53
def align_para_names(para_names):
54
    str_lengths = [len(str_) for str_ in para_names]
55
    max_length = max(str_lengths)
56
57
    para_names_aligned = []
58
    for para_name, str_length in zip(para_names, str_lengths):
59
        added_spaces = max_length - str_length
60
        para_name_aligned = para_name + " " * added_spaces
61
        para_names_aligned.append(para_name_aligned)
62
63
    return para_names_aligned
64
65
66
def _print_results(objective_function, score_best, para_best):
67
    para_names = list(para_best.keys())
68
    para_names_aligned = align_para_names(para_names)
69
70
    print("\nResults: '{}'".format(objective_function.__name__), " ")
71
    if para_best is None:
72
        print(indent, "Best score:", score_best, " ")
73
        print(indent, "Best parameter:", para_best, " ")
74
    else:
75
        print(indent, "Best score:", score_best, " ")
76
        print(indent, "Best parameter:")
77
        for para_key, para_name_aln in zip(para_best.keys(), para_names_aligned):
78
            print(
79
                indent, indent, "'{}':".format(para_name_aln), para_best[para_key], " "
80
            )
81
    print(" ")
82
83
84
def print_info(
85
    verbosity,
86
    objective_function,
87
    score_best,
88
    para_best,
89
    eval_times,
90
    iter_times,
91
    n_iter,
92
):
93
94
    eval_time = np.array(eval_times).sum()
95
    iter_time = np.array(iter_times).sum()
96
97
    if "print_results" in verbosity:
98
        _print_results(objective_function, score_best, para_best)
99
100
    if "print_times" in verbosity:
101
        _print_times(eval_time, iter_time, n_iter)
102