from itertools import count
- class Individual:
ID = count() def __init__(self, chromosomes):
self.chromosomes = chromosomes[:] # managed as a list as order is used to identify chromosomal functions (i.e. chromosome i encodes functionality f) self.id = self.ID.next()
- def __eq__(self, other):
- return self.chromosomes == other.chromosomes
- def __hash__(self):
- return hash(tuple(tuple(chromosome) for chromosome in self.chromosomes))
- def __len__(self):
- return len(self.chromosomes)
- def __getitem__(self, i):
- return self.chromosomes[i]
- def __setitem__(self, index, obj):
- self.chromosomes[index] = obj
- def __contains__(self, chromosome):
- return chromosome in self.chromosomes
- def __repr__(self):
- return str(self.id)
- def append(self, chrom):
- self.chromosomes.append(chrom)
- def count(self, sub, chrom):
- return self.chromosomes[chrom].count(sub)