Add a cache to Genome so that Warrior() doesn't regenerate from scratch on every call
Add speciation based on k-medoids clustering