One of the projects I'm taking on right now with some colleagues is to program the game of Goofspiel (wiki) for 3 players. The other major change is that for ties, the point value of the upturned card is carried over into the next round.
One of my colleagues suggests (and actually just completed) simulations of millions of games where the cards are played randomly, and finding the expected value of each card relative to what is left in your own hand, what the current upturned card is and what is left to be upturned, and what your opponents have played so far. It is essentially creating a "cheat sheet" like those you see for blackjack beginners which tells you what card is the best current play.
I like the idea of that but I think it is more suited for 2 players (1 v 1) only, similar to blackjack. If the algo is applied to 3 players independently, how would collisions be handled? (e.g., a '9' is suggested against player 2 and a '5' is suggested against player 3 - which one is chosen?) If the algo is applied to both players together, I'm worried that runtime issues might occur - the program is tracking player 2's played cards, player 3's played cards, what has been upturned already, and what is left to be upturned. Perhaps the actual runtime isn't that bad, but it still seems like a lot.
How can this algo be improved? Is there a better one that you can suggest? Also, would it be wise to incorporate AI or machine learning into the algo (I will also x-post to those subs) such that the opponents' cards can be predicted and the suggestion can be made to either beat it or shoot low in anticipation of winning later? (described in the last paragraph of "Strategy of GOPS" in the wiki link) Assume the algo plays against the same 2 players over many rounds. Finally, how should ties be considered? (e.g., a '5' is upturned, all 3 players play a '2' (tie), nobody wins and the '5' is added to the value of the next upturned card)
[link][comment]