|
Clarste posted:...haven't people already been running these simulations for years/decades by now? Probably an interesting exercise for the programmer, but I wouldn't expect to get any novel results out of this. They've been running a completely vanilla IPD, and it's been a solved problem since 1970 (see: Tit for Tat). I'm running a Bigger Badder Awesomer version that does things to shake the game up a bit. And yeah, the point of the project is more in the making of a nifty tool than the discovery of a revolutionary new strategy.
|
# ? Apr 21, 2014 01:43 |
|
|
# ? May 27, 2024 08:17 |
|
I thought optimal strategy was tit for tat with forgiveness to prevent the infinite loop.
|
# ? Apr 21, 2014 02:02 |
|
The optimal strategy involves antimatter bombs and several other things I can't talk about. I'm having a hard time turning this into code, though.Fedule posted:The Madagascar Gambit
|
# ? Apr 21, 2014 02:04 |
|
curiousCat posted:I thought optimal strategy was tit for tat with forgiveness to prevent the infinite loop. Not really sure what you mean by "infinite loop" here. There's no infinite loop. There's a Nash Equilibrium though - Forgiveness adds a capacity to preempt opponents who aren't persistent betrayers, and therefore has a marginally better rate of point-getting than regular Tit for Tat against such opponents but this is offset by a bigger risk against opponents who are unrepentant assholes.
|
# ? Apr 21, 2014 02:18 |
|
Seconding love for the Madagascar Gambit.Elite posted:Here's my strategy! This actually looks really fun to me. I'll write up a short strategy or two a bit later to throw into the mix.
|
# ? Apr 21, 2014 02:44 |
|
I'm kind of confused on one of the attributes:quote:Facts.deaththreshold - int - players die if they fall below this many points. Disabled if 0 or higher. If I'm understanding this correctly, then players can only die if they reach -2 or lower at the highest of it being enabled. Since -1 would be the highest value that lets this option be enabled.
|
# ? Apr 21, 2014 02:51 |
|
Kgummy posted:I'm kind of confused on one of the attributes: That's my bad, that should read "when they reach this many points".
|
# ? Apr 21, 2014 02:57 |
|
I'll probably do a couple of these, but here's the first.code:
All the jokes are going to be about this bad. Just letting you know up front. E: OK, one more for the road. code:
idonotlikepeas fucked around with this message at 05:25 on Apr 21, 2014 |
# ? Apr 21, 2014 03:44 |
|
idonotlikepeas posted:
I don't quite get how this works. But I have faith that it's probably a good strategy.
|
# ? Apr 21, 2014 07:25 |
|
It's simple - just sing this at the other players, and they'll be too busy jamming out to vote, so will default to "Ally". Then, just hit "Betray".
|
# ? Apr 21, 2014 09:35 |
|
Kangra posted:I don't quite get how this works. But I have faith that it's probably a good strategy. It appears to Ally every 7th game and Betray every 13th and 666th game. Failing that it Betrays any opponent who is known to have murdered at least one person or who has tried to in 80% of applicable games, or Allies with any opponent who is known to have Allied against new opponents 80% of the time. Failing that it resorts to Tit-for-seven-tats. Working strategies that show up here before, say, 9PM GMT Tuesday are likely to show up as cameos in my report, but even failing that I'll likely run some exhibition matches using only goon-written strategies. If we get enough of those, then we can have a proper competition.
|
# ? Apr 21, 2014 09:36 |
|
Note that the "ally with nice people" rule is designed to take precedence over the "betray murderers" rule. This is also known as the "it's okay if the person they killed was Dio" clause*. Also, the tit-for-tat thing overrides insofar as even if you are a nice person or not a murderer, if you betrayed the player in the last seven games it will betray you. (E: *Yes, a better version of that would be to do more history diving, but I'm lazy.) idonotlikepeas fucked around with this message at 14:54 on Apr 21, 2014 |
# ? Apr 21, 2014 14:50 |
|
I started on one of these then Python code:
oh and I hit enter on those longer If statements because posting them as-is was going to break tables. EDIT: oh there is that python highlighting bb code NextTime000 fucked around with this message at 18:26 on Apr 21, 2014 |
# ? Apr 21, 2014 16:04 |
|
Well, my expectations are officially exceeded. I take it that if people are submitting working strategies, my pseudo-API must actually be somewhat comprehensible? That's good.
|
# ? Apr 21, 2014 16:26 |
|
While I think of a strategy, I have to wonder if the following are true: 1. Sucker always has a worse payoff than anything else. 2. Mutual Betray always has a lower payoff than Trust. 3. Trust never has a higher payoff than Betray.
|
# ? Apr 21, 2014 16:59 |
|
To be a classical prisoner's dilemma the value of payoffs has to be: Betraying when the opponent allies > Allying when the opponent allies > Betraying when the opponent betrays > Allying when the opponent betrays
|
# ? Apr 21, 2014 17:02 |
|
CottonWolf posted:To be a classical prisoner's dilemma the value of payoffs has to be: So you're saying that my strategy is useless? Python code:
okay another dumb strategy: Python code:
Dr. Stab fucked around with this message at 17:53 on Apr 21, 2014 |
# ? Apr 21, 2014 17:33 |
|
Never coded in Python before, but I'm just getting this out of my system.code:
|
# ? Apr 21, 2014 18:15 |
|
Twiddy posted:Never coded in Python before, but I'm just getting this out of my system. I'm afraid I have already thought of this strategy. I've got a Dio too. Guess what he does. (Phi uses Tit for Tat. I haven't thought much about what strategies other players would use).
|
# ? Apr 21, 2014 18:20 |
|
Python code:
|
# ? Apr 21, 2014 18:25 |
|
Fedule posted:I'm afraid I have already thought of this strategy. I've got a Dio too. Guess what he does. Alice: picks the opposite of whatever her opponent has currently picked. Quark: hits a typo and winds up in an infinite loop.
|
# ? Apr 21, 2014 18:32 |
|
Fedule posted:I'm afraid I have already thought of this strategy. I've got a Dio too. Guess what he does. but Dio does ally once in the first round doesn't he? unless somehow Quark ran up and hit the button before Dio did anything. I might explain my thoughts on why this happened in the games thread though.
|
# ? Apr 21, 2014 18:33 |
|
I didn't spend much time testing this one, so it probably needs tweaking.code:
https://www.youtube.com/watch?v=frAEmhqdLFs idonotlikepeas fucked around with this message at 18:43 on Apr 21, 2014 |
# ? Apr 21, 2014 18:34 |
|
NextTime000 posted:but Dio does ally once in the first round doesn't he? If Luna, Ally Else, Betray Fedule posted:I'm afraid I have already thought of this strategy. I've got a Dio too. Guess what he does. The problem with Alice is that her decisions exist outside the bounds of the game, unless you want to code the most ridiculously accurate predictor just to vote the opposite. Clover goes for the gold whenever available. Other than that she blatantly chooses based on whether or not she likes the person. Quark is an error, I like the infinite loop idea. K and Tenmyouji are tough. Tenmyouji's a normal person with a high emphasis on having Quark win, and K is the closest thing to a rational actor we have. Twiddy fucked around with this message at 18:45 on Apr 21, 2014 |
# ? Apr 21, 2014 18:36 |
|
Fedule posted:(Phi uses Tit for Tat. I haven't thought much about what strategies other players would use). Phi pressures Sigma to betray in the first round, though - she plays Suspicious Tit for Tat. That said, it makes sense that she uses a Tit for Tat variant. It 'solved' the classic Iterated Prisoner's Dilemma, after all, and she plays rationally.
|
# ? Apr 21, 2014 19:07 |
|
Twiddy posted:K and Tenmyouji are tough. Tenmyouji's a normal person with a high emphasis on having Quark win, and K is the closest thing to a rational actor we have. Tenmyouji's priorities seem to be getting Quark out, assuming he has radical-6, and getting Clover to trust him second. The only time he's betrayed her was when Quark was in danger. When Quark was cured, he let Clover vote even though it risked killing Tenmyouji. K's odd though. He's betrayed everyone in the first round, Allied with Phi when he could have gotten out, but seems to be willing to Betray Tenmyouji or Clover to escape. He's the biggest wildcard so far aside from the unreliable Alice.
|
# ? Apr 21, 2014 20:23 |
|
ApplesandOranges posted:Tenmyouji's priorities seem to be getting Quark out, assuming he has radical-6, and getting Clover to trust him second. The only time he's betrayed her was when Quark was in danger. When Quark was cured, he let Clover vote even though it risked killing Tenmyouji. Maybe his strategy as simple as "if(rand(0,1))"
|
# ? Apr 21, 2014 20:49 |
|
Just from what's shown, K's something like: Always betrays in round one. Is not a killer. Will betray to escape any time a known betrayer could betray to escape. Edit: Untested strategy code. Wouldn't know how to produce a driver for this even if I wanted to. code:
maswastaken fucked around with this message at 07:30 on Apr 22, 2014 |
# ? Apr 21, 2014 21:03 |
|
ApplesandOranges posted:Tenmyouji's priorities seem to be getting Quark out, assuming he has radical-6, and getting Clover to trust him second. The only time he's betrayed her was when Quark was in danger. When Quark was cured, he let Clover vote even though it risked killing Tenmyouji. In general, having a player whose entire strategy is trying to get another specific player to win would be interesting. That's kind of the scary part of these types in general. Sometimes you get the normal person who believes in honor, or the selfish guy, or the guy who has studied game theory, and they're all relatively predictable once you nail what moral system they use. Then there's the guy whose definition of winning exists completely separate from anything you could plan for. Similarly, I can easily imagine a computer player whose goal is to try to get everyone's score as low as possible. Or kill as much as possible.
|
# ? Apr 22, 2014 00:34 |
|
It's interesting to think of a martyr player whose goal was to get as many people out as they could at their own expense. I think that would boil down to "wants to maximize opponent's points but wants them to not be the threshold for ending the game". It's been ages since I coded (1997 or so, I'm old) but the main points I have for that are: --defaults to ally. --betrays if current opponent could escape and nobody else could (or if X people need to win to escape, betray if opponent would be the Xth winner). --allies if someone in another match could escape (or be the Xth winner). --If game will likely end, Martyr is in a position to escape and opponent isn't, betray. (there's selfless and then there's stupid) Ideally it could also consider how likely [pairings where someone could escape] were to result in someone actually escaping, but that would require knowledge of the other players' strategies. Definitely something a human stuck in the game could consider, but I think that's beyond the limits of the program.
|
# ? Apr 22, 2014 01:41 |
|
Twiddy posted:Yeah, after sleeping on it this became a bit more clear. That sounds a lot like this: wikipedia posted:Although tit for tat is considered to be the most robust basic strategy, a team from Southampton University in England (led by Professor Nicholas Jennings and consisting of Rajdeep Dash, Sarvapali Ramchurn, Alex Rogers, Perukrishnen Vytelingum) introduced a new strategy at the 20th-anniversary iterated prisoners' dilemma competition, which proved to be more successful than tit for tat. This strategy relied on cooperation between programs to achieve the highest number of points for a single program. The university submitted 60 programs to the competition, which were designed to recognize each other through a series of five to ten moves at the start.[10] Once this recognition was made, one program would always cooperate and the other would always defect, assuring the maximum number of points for the defector. If the program realized that it was playing a non-Southampton player, it would continuously defect in an attempt to minimize the score of the competing program. As a result,[11] this strategy ended up taking the top three positions in the competition, as well as a number of positions towards the bottom.
|
# ? Apr 22, 2014 02:05 |
|
maswastaken posted:Edit: Untested strategy code. This was edited in so I missed it on your first post, but drat. BTW - in python you gotta capitalize True and False to use them as boolean values - otherwise it thinks you're talking about variables named "true" and "false".
|
# ? Apr 22, 2014 02:30 |
|
I think everyone's got a code for hitting Ally if Sigma chooses Betray, though. JUST to make him seem like the ultimate rear end in a top hat.
|
# ? Apr 22, 2014 02:40 |
|
Fedule posted:This was edited in so I missed it on your first post, but drat.
|
# ? Apr 22, 2014 07:33 |
|
Bruceski posted:It's interesting to think of a martyr player whose goal was to get as many people out as they could at their own expense. I think that would boil down to "wants to maximize opponent's points but wants them to not be the threshold for ending the game". It's been ages since I coded (1997 or so, I'm old) but the main points I have for that are: Luna would be the closest to that, probably? We haven't actually seen her hit Betray, but she's Allied constantly, and she brought up the idea of a mutual Betray when Phi and K were at a stalemate. She seems to be the least inclined to try to escape, however. Come to think of it, Alice, K, Dio and Phi are the only ones actively trying to win, Tenmyouji's looking out for Quark, Quark's barely a player, and Clover's unpredictable as well.
|
# ? Apr 22, 2014 07:56 |
|
I have zero coding experience or I'd write up a strategy of my own. Is it possible to make a Monobear one called SHSL Despair? He chooses Ally unless betraying would make the opponent die, in which case Betray. There's probably a way to make it more Despair-inducing but again, no coding experience.
|
# ? Apr 22, 2014 08:43 |
|
ApplesandOranges posted:Luna would be the closest to that, probably? We haven't actually seen her hit Betray, but she's Allied constantly, and she brought up the idea of a mutual Betray when Phi and K were at a stalemate. Yeah, I guess there's not much functional difference between my idea and an always-ally player. At least not until people start getting into winning positions.
|
# ? Apr 22, 2014 08:49 |
|
Here's a short strategy that probably won't last very long. E: Reworked it to, ideally, copy a random player until they die - this is very untested!code:
free Trapt CD fucked around with this message at 10:47 on Apr 22, 2014 |
# ? Apr 22, 2014 10:36 |
|
Starting to test some of these. Any comments are my feedback. This is just debugging/troubleshooting, not performance stuff.code:
code:
code:
quote:The History object: code:
code:
code:
code:
code:
Fedule fucked around with this message at 11:47 on Apr 22, 2014 |
# ? Apr 22, 2014 11:42 |
|
|
# ? May 27, 2024 08:17 |
|
Addendum:code:
|
# ? Apr 22, 2014 12:17 |