Programming-Chaos / evolvedTD

Evolutionary tower defense game from the University of Idaho
GNU General Public License v3.0
5 stars 2 forks source link

getGamete instead of getGametes #53

Closed higles closed 9 years ago

higles commented 9 years ago

@andschwa our getgamete function in the genome class returns 2 mutated gametes per creature into the gamete pool. This is an issue because when dealing with proximity the creature will place 2 gametes in the same location and they will be chosen to mate. This will severely limit evolution by always self mating.

We need to take both chromosomes and immediately get rid of one at random, then mutate and pass the other into the gamete pool.

Programming-Chaos commented 9 years ago

Getting rid of one gamete won't help much if the creature evolves to produce multiple gametes at once/very close together. E.g. it stores up energy until it has a big reservoir and then pumps out gametes. Gametes could be tagged to avoid self mating, or could drift a little. Of course, if the population tends to converge on one creature type there won't be much difference between self and non-self mating.

andyleejordan commented 9 years ago

This is an excellent point. @higles would tagging to avoid self mating be acceptable? I think I could wrap it into the compatibility check of two chromosomes per #52.

higles commented 9 years ago

tagging would not help as self mating is possible in hermaphroditism. Or so that's what Barry and Sam tell me. So we need to allow for that possibility. Self mating will be fixed once they evolve into male or female form because speciation will check for that in compatibility.

I've proposed a time delay between gametes with a multiplier gene as a way to solve this issue. The biology behind this would be that it takes energy and time to create gametes in nature. So perhaps I can add a gamete pool to the creatures so they may store up gametes (like an egg sack) and then pop them out as they see fit.

Coming back around to the original issue, I still think we need to only pass out 1 gamete from each creature because self mating is possible in the current model but should be decently rare.

andyleejordan commented 9 years ago

@higles If you look at f1694900517ef5c16460614c40f7f8fbb3e3e63b, I don't think this is a bug. Proximity breeding works fine with pairs of produced gametes, including compatibility check of said gametes.