individual.py ************* Define an individual to be used for evolution. Class Variables =============== ``ID`` ------- A trackable ID generator Instance variables ================== ``id`` ------ A trackable identifier for the individual ``chromosomes`` --------------- An ordered collection of the genetic material of this individual. Maintained as a list Methods ======== ``__eq__(self, other)`` ------------------------ Return True if all chromosomes of self and other are equal (and in the same order). Else, return False ``__hash__(self)`` ------------------- Return the hash of the tuple version of all chromosomes ``__len__(self)`` Return the number of chromosomes ``self`` is made of. ``__getitem__(self, i)`` ------------------------ Return the `i` th individual ``__setitem__(self, index, obj)`` --------------------------------- Set obj as the `index`th chromosome of ``self`` ``__contains__(self, chromosome)`` ---------------------------------- Return True if ``chromosome`` is a member of ``self.chromosomes``. Else return False ``__repr__(self)`` ------------------- Return ``self.id`` as a string ``append(self, chrom)`` ----------------------- Append ``chrom`` to ``self.chromosomes`` ``count(self, sub, chrom)`` Return the number of occurrences of ``sub`` in the ``chrom`` th chromosome of ``self``