I liked this suggestion of yours from the tournament results thread:
Idea: everyone has access to a constant ‘m’, which they can use in their bot’s code however they like. m is set by the botwriter’s initial conditions, then when a bot has offspring in the natural selection tournament, one-third of the offspring have their m incremented by 1, one-third have theirs decremented by 1, and one third has their m remain the same. In this manner, you may plug m into any formulas you want to mutate over time.
Your post on IPD mechanics is very interesting! I’m going to implement TFT-Dn, TFT-DnC, and CRD alongside TFT, Cooperate, Defect, and GrimTrigger as basic types of bots. Not sure if I’ll include them in the tournaments, though.
No; but that particular concept is trivially easy to include (and will be included unless I come up with something better). It’s literally a change from YourBot.new(gamelength) toYourBot.new(gamelength, m). I’m thinking about other ways to allow interesting evolution. The current best idea is something like providing an Evolution object that has all sorts of interesting numbers that change in all sorts of interesting ways with each population step. (The biggest bother I had with the m concept was that you can’t have monotonically increasing numbers to plug into bots that want to do interesting things over time—for example, “play tit for tat until population step 1000, and now that all the silly strategies are dead and it’s a pool of tit-for-tatters, play CliqueBot”)
I don’t see this as a problem at all; in fact if you could turn TFT into a CliqueBot at an arbitrary point in the tournament, this could hardly be called evolution. I mean the whole point of this idea was to theoretically have a gaussian distribution around your starting value, and then see which value is the most successful, right? So for example, you could start with m = 10, and have a strategy TFT-nD with n = floor(abs(m/10)). This might result in high values for n if the pool is such that TFT-1D strategies are successful at first; causing lower m to die out and higher m to strive, thus shifting the bell curve.
Mmm, I thought about this and you’re right. Monotonically increasing numbers might make a meta-level “defect last N” game out of the evolution—turn Clique a turn before the others do. Of course, now I also think there’s a way to turn m into an increasing number as well.
I mean the whole point of this idea was to theoretically have a gaussian distribution around your starting value, and then see which value is the most successful, right?
Actually the interesting part is whether you can use m cleverly, such that your mutation/evolution takes advantage of likely mutations/evolutions in other bots. Staying two steps ahead in the arms race at all times would allow you to dominate the genetic pool, because the change in bots would be the new constant. (My first idea along these lines was to have TFT-nD with n being decremented by 2 when m is decremented by one, and likewise for increments—so that my bot would become the parasite of other likely TFT-variable-nDs).
I liked this suggestion of yours from the tournament results thread:
Did you do any experiments on this since then?
Your post on IPD mechanics is very interesting! I’m going to implement TFT-Dn, TFT-DnC, and CRD alongside TFT, Cooperate, Defect, and GrimTrigger as basic types of bots. Not sure if I’ll include them in the tournaments, though.
No; but that particular concept is trivially easy to include (and will be included unless I come up with something better). It’s literally a change from YourBot.new(gamelength) toYourBot.new(gamelength, m). I’m thinking about other ways to allow interesting evolution. The current best idea is something like providing an Evolution object that has all sorts of interesting numbers that change in all sorts of interesting ways with each population step. (The biggest bother I had with the m concept was that you can’t have monotonically increasing numbers to plug into bots that want to do interesting things over time—for example, “play tit for tat until population step 1000, and now that all the silly strategies are dead and it’s a pool of tit-for-tatters, play CliqueBot”)
I don’t see this as a problem at all; in fact if you could turn TFT into a CliqueBot at an arbitrary point in the tournament, this could hardly be called evolution. I mean the whole point of this idea was to theoretically have a gaussian distribution around your starting value, and then see which value is the most successful, right? So for example, you could start with m = 10, and have a strategy TFT-nD with n = floor(abs(m/10)). This might result in high values for n if the pool is such that TFT-1D strategies are successful at first; causing lower m to die out and higher m to strive, thus shifting the bell curve.
Mmm, I thought about this and you’re right. Monotonically increasing numbers might make a meta-level “defect last N” game out of the evolution—turn Clique a turn before the others do. Of course, now I also think there’s a way to turn m into an increasing number as well.
Actually the interesting part is whether you can use m cleverly, such that your mutation/evolution takes advantage of likely mutations/evolutions in other bots. Staying two steps ahead in the arms race at all times would allow you to dominate the genetic pool, because the change in bots would be the new constant. (My first idea along these lines was to have TFT-nD with n being decremented by 2 when m is decremented by one, and likewise for increments—so that my bot would become the parasite of other likely TFT-variable-nDs).