Passed
Push — master ( 3b1c03...442101 )
by Simon
01:21
created

LongTermMemory.__init__()   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 4
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 hashlib
6
import inspect
7
8
import numpy as np
9
10
from .memory_load import MemoryLoad
11
from .memory_dump import MemoryDump
12
13
14
class Memory:
15
    def __init__(self):
16
        pass
17
18
19
class BaseMemory:
20
    def __init__(self, _space_, _main_args_, _cand_):
21
        self._space_ = _space_
22
        self._main_args_ = _main_args_
23
24
        self.pos_best = None
25
        self.score_best = -np.inf
26
27
        self.memory_type = _main_args_.memory
28
        self.memory_dict = {}
29
30
        self.meta_data_found = False
31
32
        self.n_dims = None
33
34
35
class ShortTermMemory(BaseMemory):
36
    def __init__(self, _space_, _main_args_, _cand_):
37
        super().__init__(_space_, _main_args_, _cand_)
38
39
40
class LongTermMemory(BaseMemory):
41
    def __init__(self, _space_, _main_args_, _cand_):
42
        super().__init__(_space_, _main_args_, _cand_)
43
44
        self._load_ = MemoryLoad(_space_, _main_args_, _cand_)
45
        self._dump_ = MemoryDump(_space_, _main_args_, _cand_)
46
47
    def load_memory(self, _cand_, _verb_):
48
        self.memory_dict = self._load_._load_memory(_cand_, _verb_, self.memory_dict)
49
50
    def save_memory(self, _main_args_, _opt_args_, _cand_):
51
        self._dump_._save_memory(_main_args_, _opt_args_, _cand_, self.memory_dict)
52
53
    def _get_hash(self, object):
54
        return hashlib.sha1(object).hexdigest()
55
56
    def _get_func_str(self, func):
57
        return inspect.getsource(func)
58
59
    def _obj2hash(self):
60
        obj2hash_dict = {}
61
        para_hash_list = self._get_para_hash_list()
62
63
        for para_hash in para_hash_list:
64
            obj = self._read_dill(para_hash)
65
            obj2hash_dict[para_hash] = obj
66
67
        return obj2hash_dict
68