Total Complexity | 10 |
Total Lines | 48 |
Duplicated Lines | 0 % |
Changes | 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 |