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

gradient_free_optimizers.optimizers.base_optimizer   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 33
dl 0
loc 48
rs 10
c 0
b 0
f 0
wmc 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A BaseOptimizer._evaluate_new2current() 0 4 2
A BaseOptimizer.init_pos() 0 2 1
A BaseOptimizer.move_random() 0 3 1
A BaseOptimizer.__init__() 0 7 1
A BaseOptimizer._current2best() 0 3 1
A BaseOptimizer._new2current() 0 3 1
A BaseOptimizer._evaluate_current2best() 0 4 2
A BaseOptimizer.evaluate() 0 5 1
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