Posts

Comments

Comment by HelloQuestonMark on [Completed] The 2024 Petrov Day Scenario · 2024-09-26T18:55:30.952Z · LW · GW

Considerations:

  • This is very related to AI races. It's probably better to not nuke anyone, even if you're the only one doing that and you expect your somewhat for-profit AI lab shareholders to be, on average, happy about the decision to nuke.
  • Please avoid nuking the other side, regardless of the payoffs for the generals. Remember your aesthetic preferences. It's not that much karma, even if you somehow succeed.
Comment by HelloQuestonMark on [Completed] The 2024 Petrov Day Scenario · 2024-09-26T15:07:11.975Z · LW · GW

Seems like defection towards the participants overall, compared to no nukes fired:

  • in the no nukes scenario, the 10 generals get +100 each, the two Petrovs get +1000(?) each, and citizens get nothing (+3000 karma in total);
  • in the coin flip scenario, the 10 generals get +350 in expectation each, the two Petrovs get +200..1000(?) each (depending on when in the game the button is pressed), and the 300 citizens get -12.5 in expectation each (-50..+750 karma in total).
Comment by HelloQuestonMark on [Completed] The 2024 Petrov Day Scenario · 2024-09-26T10:57:23.604Z · LW · GW

(I asked permission from the LW team before posting.)

The source code is currently available at https://github.com/ForumMagnum/ForumMagnum/compare/master...petrovSocialDeception.

const petrovFalseAlarmMissileCount = new DatabaseServerSetting<number[]>('petrovFalseAlarmMissileCount', [])
const petrovRealAttackMissileCount = new DatabaseServerSetting<number[]>('petrovRealAttackMissileCount', [])

const getIncomingCount = (incoming: boolean, role: 'eastPetrov' | 'westPetrov') => {
  const currentHour = new Date().getHours();
  const roleSeed = role === 'eastPetrov' ? 0 : 13;
  const seed = currentHour + roleSeed + (incoming ? 17 : 0); // Different seed for each hour, role, and incoming state

  const missileCountArray = incoming ? petrovRealAttackMissileCount.get() : petrovFalseAlarmMissileCount.get();

  const result = seed % missileCountArray.length
  console.log({currentHour, roleSeed, incoming, seed, result})
  return missileCountArray[result];
}