Passed
Push — master ( 4ef66c...afb360 )
by Simon
03:52
created

BaseOptimizer._evaluate_new2current()   A

Complexity

Conditions 2

Size

Total Lines 4
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nop 2
dl 0
loc 4
rs 10
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
from .search_tracker import SearchTracker
7
8
9
class BaseOptimizer(SearchTracker):
10
    def __init__(self, search_space):
11
        super().__init__()
12
        self.search_space = search_space
13
        self.space_dim = np.array([array.size - 1 for array in search_space])
14
15
        self.optimizers = [self]
16
17
    def move_random(self):
18
        self.pos_new = np.random.randint(self.space_dim, size=self.space_dim.shape)
19
        return self.pos_new
20
21
    def iter_dec(func):
22
        def wrapper(self, *args, **kwargs):
23
            self.nth_iter = len(self.score_new_list)
24
            return func(self, *args, **kwargs)
25
26
        return wrapper
27
28
    @iter_dec
29
    def init_pos(self, pos):
30
        self.pos_new = pos
31
32
    def evaluate(self, score_new):
33
        self.score_new = score_new
34
35
        self._evaluate_new2current(score_new)
36
        self._evaluate_current2best()
37