Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Predictions :D #88

Open
shadowleafy opened this issue Jun 9, 2021 · 10 comments
Open

Predictions :D #88

shadowleafy opened this issue Jun 9, 2021 · 10 comments

Comments

@shadowleafy
Copy link

Anyone interested in making some lighthearted predictions?

Mine are:

  1. The winner will be a strategy with random detection
  2. The winner will have less than 75 lines of code
  3. The winner will be an underdog when competed against the "sample" community repo
  4. The winner will not be a random strategy
  5. The winner will not be a detective strategy
  6. The winner will be a "mostly nice" strategy
@Angel-IG
Copy link

Angel-IG commented Jun 9, 2021

Interesting thread! My predictions are:

  1. The winner won't be any of the example strategies: I'm 100% confident.
  2. The winner will have some random detection system: I'm 75% confident.
  3. The winner will be a nice strategy OR a detective-like strategy: I'm 99.9% confident (it would be nice if I'm wrong and we see something more creative).
  4. If the winner is nice, it will have a forgiving rule to exit D/D loops (or similar situations): I'm 65% confident.
  5. The winner won't be a ML model: I'm 100% confident.

@Barigamb738
Copy link

Anyone interested in making some lighthearted predictions?

Mine are:

  1. The winner will be a strategy with random detection
  2. The winner will have less than 75 lines of code
  3. The winner will be an underdog when competed against the "sample" community repo
  4. The winner will not be a random strategy
  5. The winner will not be a detective strategy
  6. The winner will be a "mostly nice" strategy

My strategy fits this. Yaay.
Although i don't think i will win.

@Barigamb738
Copy link

Interesting thread! My predictions are:

  1. The winner won't be any of the example strategies: I'm 100% confident.
  2. The winner will have some random detection system: I'm 75% confident.
  3. The winner will be a nice strategy OR a detective-like strategy: I'm 99.9% confident (it would be nice if I'm wrong and we see something more creative).
  4. If the winner is nice, it will have a forgiving rule to exit D/D loops (or similar situations): I'm 65% confident.
  5. The winner won't be a ML model: I'm 100% confident.

My strategy also kinda fits this too.

@arielsysdev
Copy link

I think the winner would be the fastest to identify what the opponent is on the least amount of turns then react accordingly, ex: only always defect and random would defect at first turn. Then would have a contingency to poke defects to see if the opponent can be exploited that way while also be forgiving but reactive to unprovoked defects itself. Smough's strats from the enjoyers fork got this well calibrated so my money is on him. Most strats are fearful of the grimtrigger so wouldn't even think of making an unprovoked defect. Which means most strats could be exploited by defect poking.

@WillemPaternotte
Copy link

I think the winning strategy will be very cooperative.
Most strategies will have a response to random defectors (like tit/tat strategy). If both strategies do this you'll end up in a "defecting-loop" resulting in a 1 for both strategies.
It is much safer to always cooperate and get a 3.

@ThatXliner
Copy link

ThatXliner commented Jun 10, 2021

..or cooperate first. That's my prediction: winning algorithm will cooperate first

@arielsysdev
Copy link

The key is to try to force the game back to a cooperate cycle even with unprovoked defects, but still checking if the opponent is still responsive. If not then there is no choice but to always defect.

@iAngquist
Copy link

I predict the winning strategy to be exploitable.

@jichanbachan
Copy link

I predict the winning strategy will be nice too... but I hope I'm wrong. Would be nice to see some super complex (or even simple but effective) detective-likes rather than 1000 matches where the nice strategies are just being nice to each other.

@Rasilu
Copy link

Rasilu commented Jun 15, 2021

tldr at bottom
I think that to create a winning strategy one must first try to predict what kind of strategies are in the pool.

My rough assumptions (probably deviating a bit from actual distribution):

  • most strategies (~95%) aim to maximize their own score
    • I expect to see a lot of strategies that behave similarly to high scoring default strategies like Detective and Tit for Tat
    • they do not care if an opposing strategy scores well against them or not
      • they will not seek revenge against opposing strategies even if they exploit a lot
      • especially if it harms their own score
      • I expect to see few Grim Trigger like strategies as it is IMO objectively worse than Tit for Tat in maximizing their own score
  • some strategies (~25%) are exploitable to some extent
    • because they do no not react very fast to defecting (ex. ftft where it keeps C even if we alternate between C and D)
    • or because they behave randomly
  • a few strategies (~10%) are not very robust
    • leading to them cooperating a lot even if we are defecting a lot
    • leading to them defecting a lot even if both strategies are ready to cooperate (ex. two tft like strats stuck in C/D -> D/C loop)
  • very few strategies (~5%) are trying to "troll" the competition
    • by defecting a lot which only punishes too forgiving strategies (ex. tries to cooperate every couple turns)
    • or implementing Grim Trigger like strategies in order to punish aggressive strategies

Unter these assumptions a winning strategy will probably:

  • defect first
    • to figure out as early as possible if a strategy can be exploited
    • don't care about Grim Trigger like strategies since they should not be very common
    • if we don't test opponent behavior as early as possible we might as well not test at all
  • use Tit for Tat as a base strategy
    • Tit for Tat achieves maximum score against other Tit for Tat (3.0)
    • difficult to exploit
  • try to exploit other strategies as much as possible while keeping opponent defects to a minimum
    • if we are not exploiting other strategies we might miss out on free points
    • should have an average score around 3.8 against default ftft
    • this could backfire if assumption is wrong that there are only very few strategies that are resentful
  • work well with nice strategies like Tit for Tat
    • since we assume Tit for Tat to be the most prominent kind of strategy our strategy should perform very well against those
    • should not get less than an average score of about 2.98 against default Tit for Tat
      • assuming there are about 1/40 as many ftft as there are tft this will roughly equal out to an average score of 3
        (40 * 2.98 + 1 * 3.8) / 41 = 3
  • have some sort of evaluation metric to determine how much we can defect against opponent
    • calculated based on history
      • is done offline -> no need to test opponent with unprovoked defections
      • testing opponent too many times by defecting is expensive
        • net loss of points if opponent behaves like tft: [C/C, C/C] = 6 > [D/C, C/D] = 5
        • can be more if opponent punishes this kind of behavior
    • can be used do detect random with increasing certainty from about turn 20 onward
    • is used to check if exploit is worth
      • stop exploiting completely if not worth and aim for a score as close to 3.0 as possible
    • used to maximize gain from exploit
  • be robust
    • defuses alternating between D/C and C/D loops with other Tit for Tat like strategies by cooperating once
    • tries to avoid getting stuck in situation where both parties only defect by inviting it to cooperate again
      without being overly forgiving to avoid being exploited too much
  • be adaptable
    • constantly analyze opponent to detect changes in their behavior (ex. detective)
    • react fast to change
      • to not waste too many turns loosing points
      • and to show opponent that we are vigilant
    • no hard feelings
      • ready to opponent if it shows it is ready to cooperate even if it has been defecting a lot in the past

Whew, that got a longer than I initially intended...
Here is my strategy if anyone is interested.

tldr
Winning strategy will:

  • defect first
  • use Tit for Tat as a base strategy
  • try to exploit other strategies as much as possible while keeping opponent defects to a minimum
  • work well with nice strategies like Tit for Tat
  • have some sort of evaluation metric to determine how much we can defect against opponent
    -> has no need to test opponent with unprovoked defections
  • be robust
  • be adaptable
  • >100 lines of code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants