Feedback is always appreciated!
I've been pretty exhausted from work recently, so I'm struggling to find time and energy to actually work on personal projects, but all of your suggestions are great, and I'll certainly put them in when I have the time.
The genealogy tree functions have been mostly disabled by default, but it wouldn't be a huge amount of effort to make them configurable. The code's all there and working, just disabled by a flag. The program for visualising the tree is pretty rough around the edges, but that all works too. I'll see if I can get that upped for you.
If by "advanced characters" you mean unicode, it's a bit of unexpected behaviour that I thought was pretty cool. By default, Java's String objects are unicode, and the code I'm using to mutate the string works at byte level. What this essentially works out as is that while most mutations result in a standard ASCII character, if you get the right mutations next to each other, this can create a unicode character. The interesting bit comes from the fact that the DNA processing will get the value of the next valid character, be it unicode or ASCII. This means that while I had only initially intended operators to work on values of 0 to 256, a bot can sometimes save itself some work (ie, multiply 256 by 4 to check energy against) by getting the value of a unicode character, with values up to 65536 (iirc).