Each agent is represented by a function; for concreteness let it be a real function of some relevant subset of previous turns. If the return value on a given turn is positive, the agent cooperates, else it defects. The function is represented as a tree; each node is a function with a fixed number of parameters (zero parameters = constant). Mutations are realised as cutting random branches and replacing them by constants. Sexual reproduction would take two functions and swap some branches. Population dynamics would be basically the same as in the last tournament.
Variable match length:
I would simply make up a number N which I will not tell anyone before the game starts. Then, each match would be preceded by generating a random real number x between 0 and 1, and the match length would be set to exp(xN) rounded up to integers, or something similar.
This sounds interesting, however the longer I think about it, the less I’m in support of it.
Regarding match length, I think the main issue here is not that it is variable, but that it is unknown to the agents. This will lead to a tournament of nice strategies first exterminating all non-nice strategies, then always cooperating with each other. This won’t change even if you can simulate your opponents, because the smartest way to play against TFT is still TFT (CooperateBot). If you take away the whole concept of parasites, I don’t see much of interest left.
I don’t see random mutations coupled with sexual reproduction work either; primarily because there is no compressed blueprint that can be altered, which means that entropy will increase. I feel that purposeful evolution of an intelligent design, like shokwave’s proposal of a parameter with a gaussian distribution that can be included in any way you like, is a more viable option.
I’m also not sure whether evolution and simulation go well together at all, because ultimately you want to play optimally against every other strategy, no matter how many and which other strategies are in the pool. If you can’t simulate your opponent, evolution is there to help you adapting to the changing pool of strategies, but if you can, it seems kind of pointless to me.
Evolution:
Each agent is represented by a function; for concreteness let it be a real function of some relevant subset of previous turns. If the return value on a given turn is positive, the agent cooperates, else it defects. The function is represented as a tree; each node is a function with a fixed number of parameters (zero parameters = constant). Mutations are realised as cutting random branches and replacing them by constants. Sexual reproduction would take two functions and swap some branches. Population dynamics would be basically the same as in the last tournament.
Variable match length:
I would simply make up a number N which I will not tell anyone before the game starts. Then, each match would be preceded by generating a random real number x between 0 and 1, and the match length would be set to exp(xN) rounded up to integers, or something similar.
This sounds interesting, however the longer I think about it, the less I’m in support of it.
Regarding match length, I think the main issue here is not that it is variable, but that it is unknown to the agents. This will lead to a tournament of nice strategies first exterminating all non-nice strategies, then always cooperating with each other. This won’t change even if you can simulate your opponents, because the smartest way to play against TFT is still TFT (CooperateBot). If you take away the whole concept of parasites, I don’t see much of interest left.
I don’t see random mutations coupled with sexual reproduction work either; primarily because there is no compressed blueprint that can be altered, which means that entropy will increase. I feel that purposeful evolution of an intelligent design, like shokwave’s proposal of a parameter with a gaussian distribution that can be included in any way you like, is a more viable option.
I’m also not sure whether evolution and simulation go well together at all, because ultimately you want to play optimally against every other strategy, no matter how many and which other strategies are in the pool. If you can’t simulate your opponent, evolution is there to help you adapting to the changing pool of strategies, but if you can, it seems kind of pointless to me.