Have you tried testing your models by simulating a bunch of tournaments with various bot mixes and checking whether your predictions are confirmed? After all, this is the essence of rationality.
Sort of. I have not written any code that would allow me to pit actual algorithmic strategies against each other and see what happens. I did however write a deterministic program that allows me to simulate tournaments of strategies that are defined by how high they score against any strategy in the pool. None of the observations made contradicted any of the principles and theories (that I had devised beforehand), and nothing much else of interest was observed.
In the end, that program is little more than a calculator for a very complicated equation with lots of variables that can be broken down into smaller chunks which are pretty much the rules posited.
I have uploaded a few images of some test tournaments for visualization of these rules as well as your entertainment. Note that since I purposely didn’t do any integer truncation, strategies are only actually extinct once there’s a stable dominant strategy. Each image covers 1280 generations of 25-turn matches.
Initial setup; only TFT-nD with n ranging from 0 to 5 (corresponding to the digits on the graph) are present, each equally well represented. Obviously the highest n wins in the end.
Adding TFT-D3C (index 6), we see pretty much what we would have expected to see.
Adding TFT-D2CD (index 7), the parasite of TFT-D3C, we see of course TFT-D3C losing pretty badly, but we also see TFT-4D coming back from the dead because TFT-D2CD performs worse against itself then TFT-D3 does. Would you have predicted what happened next? (5120 generations)
Adding TFT-D4C (index 8), we see something similar but a lot faster, since TFT-D4C is pretty much TFT-5D on steroids.
Removing TFT-4D, parasite of TFT-3D and TFT-D2CD as well as host of TFT-5D and TFT-D4C, we see again TFT-D2CD triumphing because the link to the higher-n strategies has been severed.
Next up is outputting results from a round robin, then figuring out rules for changing the population after each turn. Suggestions and forks are welcome.
Have you tried testing your models by simulating a bunch of tournaments with various bot mixes and checking whether your predictions are confirmed? After all, this is the essence of rationality.
Sort of. I have not written any code that would allow me to pit actual algorithmic strategies against each other and see what happens. I did however write a deterministic program that allows me to simulate tournaments of strategies that are defined by how high they score against any strategy in the pool. None of the observations made contradicted any of the principles and theories (that I had devised beforehand), and nothing much else of interest was observed.
In the end, that program is little more than a calculator for a very complicated equation with lots of variables that can be broken down into smaller chunks which are pretty much the rules posited.
I have uploaded a few images of some test tournaments for visualization of these rules as well as your entertainment. Note that since I purposely didn’t do any integer truncation, strategies are only actually extinct once there’s a stable dominant strategy. Each image covers 1280 generations of 25-turn matches.
Initial setup; only TFT-nD with n ranging from 0 to 5 (corresponding to the digits on the graph) are present, each equally well represented. Obviously the highest n wins in the end.
Adding TFT-D3C (index 6), we see pretty much what we would have expected to see.
Adding TFT-D2CD (index 7), the parasite of TFT-D3C, we see of course TFT-D3C losing pretty badly, but we also see TFT-4D coming back from the dead because TFT-D2CD performs worse against itself then TFT-D3 does. Would you have predicted what happened next? (5120 generations)
Adding TFT-D4C (index 8), we see something similar but a lot faster, since TFT-D4C is pretty much TFT-5D on steroids.
Removing TFT-4D, parasite of TFT-3D and TFT-D2CD as well as host of TFT-5D and TFT-D4C, we see again TFT-D2CD triumphing because the link to the higher-n strategies has been severed.
And so on and back and forth and...
I wrote code, since I’d like to eventually test random and evolutionary models: https://github.com/danielharan/prisoners_dilemma
Next up is outputting results from a round robin, then figuring out rules for changing the population after each turn. Suggestions and forks are welcome.