Passed
Push — master ( d39371...69bf6f )
by Simon
03:38
created

BaseOptimizer.evaluate()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nop 2
dl 0
loc 5
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.eval_times = []
16
        self.iter_times = []
17
18
    def _evaluate_new2current(self, score_new):
19
        if score_new >= self.score_current:
20
            self.score_current = score_new
21
            self.pos_current = self.pos_new
22
23
    def _evaluate_current2best(self):
24
        if self.score_current >= self.score_best:
25
            self.score_best = self.score_current
26
            self.pos_best = self.pos_current
27
28
    def _current2best(self):
29
        self.score_best = self.score_current
30
        self.pos_best = self.pos_current
31
32
    def _new2current(self):
33
        self.score_current = self.score_new
34
        self.pos_current = self.pos_new
35
36
    def move_random(self):
37
        self.pos_new = np.random.randint(self.space_dim, size=self.space_dim.shape)
38
        return self.pos_new
39
40
    def init_pos(self, pos):
41
        self.pos_new = pos
42
43
    def evaluate(self, score_new):
44
        self.score_new = score_new
45
46
        self._evaluate_new2current(score_new)
47
        self._evaluate_current2best()
48