-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathConnectionGene.py
68 lines (48 loc) · 1.48 KB
/
ConnectionGene.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
59
60
61
62
63
64
65
66
67
68
from Gene import *
from NodeGene import *
from Constants import *
class ConnectionGene(Gene):
origin = NodeGene(-1)
target = NodeGene(-1)
weight=-1
enabled = True
def __init__(self, nOrigin, nTarget):
self.origin = nOrigin
self.target = nTarget
def getOrigin(self):
return self.origin
def setOrigin(self, nOrigin):
self.origin = nOrigin
def getTarget(self):
return self.target
def setTarget(self, nTarget):
self.target = ntarget
def getWeight(self):
return self.weight
def setWeight(self, nWeight):
self.weight = nWeight
def isEnabled(self):
return self.enabled
def enable(self):
self.enabled = True
def disable(self):
self.enabled = False
def toggle(self):
if(self.isEnabled()):
self.disable()
else:
self.enable()
def setEnabled(self, state):
if(type(state) == bool):
self.enabled = state
def equals(self, obj):
if(not isinstance(obj, NodeGene)):
return False
return (self.origin==obj.getOrigin() & self.target==obj.getTarget())
def hashCode(self):
hash =23
hash= hash *31 +self.getOrigin().getInnovationNum()
hash= hash *31 +self.getTarget().getInnovationNum()
hash= hash *31 +MAX_NODES
return hash
#return self.getOrigin().getInnovationNum() * MAX_NODES * self.getTarget().getInnovationNum()