So8res comments on Prisoner's Dilemma (with visible source code) Tournament - Less Wrong

47 Post author: AlexMennen 07 June 2013 08:30AM

You are viewing a comment permalink. View the original post to see all comments and the full post content.

Comments (232)

You are viewing a single comment's thread. Show more comments above.

Comment author: solipsist 24 June 2013 03:07:48PM *  2 points [-]

The MimicBots will dive into an evaluation loop, where my bot evaluates yours on a quine of me, and you evaluate my quine on a quine of you, ad infinitum.

MimicBot, as I described it, breaks out of a simulation probabilistically; it will almost surely not fall into an infinite depth of simulations. MimicBot cooperates with probability ε, and has an expected simulation depth of 1/ε when played against itself. As long as ε<.5, the best action against MimicBot is to cooperate, so the expected simulation depth can be as low as 2.

Comment author: So8res 24 June 2013 03:40:56PM *  0 points [-]

I'd still recommend you refrain from acting as Rank 0 or 1 (from cooperating immediately or from simulating the opponent on a MimicBot who cooperates), as it's likely that there are bots in play that prey on CooperateBots and JusticeBots (as determined by checking if you cooperate DefectBot). Also, I imagine there will probably be a fair number of DefectBots on the field, your MimicBot is exploited by a fraction of them.

I strongly recommend writing a MimicBot that goes through two iterations before allowing itself to exit with a fixed probability. Given that tweak I agree completely that your MimicBot is quite powerful.

Comment author: solipsist 24 June 2013 04:53:20PM *  1 point [-]

I strongly recommend writing a MimicBot that goes through two iterations before allowing itself to exit with a fixed probability.

You can deal with those special cases that way. I was going to use a flatter, less quiny approach.

def special_casing_bot(opponent)
    if acts_like_cooperate_bot(opponent):
        return DEFECT
    elif act_like_other_exploitable_bot(opponent):
        return DEFECT
    elif special_case_3(opponent):
        return DEFECT
    elif special_case_4(opponent):
        return COOPERATE
    elif special_case_5(opponent):
        return DEFECT
    # etc
    else:
        return mimic_bot(opponent)
Comment author: So8res 24 June 2013 05:14:01PM 0 points [-]

Depending upon the implementation of mimic_bot, this is a quiny approach. mimic_bot obviously can't run the opponent on an exact quine of yourself, because then you won't achieve mutual cooperation. (When one of the bots cooperates unconditionally, the other will see that it acts_like_cooperate_bot and defect.) So long as mimic_bot plays opponents against a pure MimicBot instead of a perfect quine, this should work quite well.

On an unrelated note, woah, how'd you get whitespace working?

Comment author: solipsist 24 June 2013 05:20:55PM *  5 points [-]

On an unrelated note, woah, how'd you get whitespace working?

Total kludge. Used exotic unicode whitespace characters, which are displayed unaltered in comments :-).