-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAgent.py
58 lines (45 loc) · 1.11 KB
/
Agent.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from math import sqrt
def sum(values):
s = 0
for i in values: s += i
return total
class Operator:
def __init__(self, function, cost):
self.function = function
self.cost = cost
def f(self, x):
return self.function(x)
class Agent:
def __init__(self, operators, memory=0):
self.operators = operators
self.memory = []
self.fitness = 0
self.perform = 0
self.gain = 0
self.cost = 0
self.rate = 0.001
for i in range(memory):
self.memory.append(0)
def exec(self, f, x):
self.cost += self.operators[f].cost
return self.operators[f].f(x)
def eval(self):
self.perform = self.gain
if self.cost != 0: self.perform /= self.cost
self.fitness += self.rate * (self.perform-1)
def call(self, values):
self.gain = sum(values)
self.cost = sqrt(len(values))/2
for f in range(len(self.operators)):
values = self.comp(f, values)
self.eval()
self.save(values)
return self.send(values)
def comp(self, f, values):
for i in range(len(values)):
values[i] = self.exec(f, values[i])
return values
def save(self, values):
return
def send(self, values):
return values