Skip to content

MonteCarlo evBot #25

@tostercx

Description

@tostercx

I have discovered a truly marvelous solution for this, which this margin is too narrow to contain! :D

Seriously tho, I don't think I can/should get it running on Travis as it eats a lot of resources, but my winning algorithm was incredibly simple:

wager = pot * odds * aggression;

// where:
// pot = sum(current wagers),
// odds = odds of winning (0.0-1.0),
// aggression = tweakable constant (1.5 seems stable)

So basically pot*odds = EV, or what I expect to win, surprisingly betting more than that was A LOT more effective (aggression 1.1-4) than betting under (0.5-0.9).

The hard part was calculating the odds. Got the 2+2 evaluator running from:
https://web.archive.org/web/20140625212722/http://codingthewheel.com/archives/poker-hand-evaluator-roundup/#2p2
https://github.com/christophschmalhofer/poker/tree/master/XPokerEval/XPokerEval.TwoPlusTwo

Then I did a bunch of Monte-Carlo simulations - basically dealt every player and the community random cards (except the cards I know ofc) over and over again and counted the win/loose ratio (1k iterations per move seem to be enough). And ta-dah!

Player Standings

1. evBot $161249
2. Wittgenstein $72170
3. edi9999 $39935
4. status3Bot $35575
5. SneakyCharlie $27337
6. FlopASetBot $10068
7. whistle_tips $3666

But, yeah, multiple problems to submit it

  • the lookup table for the evaluator is ~130 megs, Travis could probably still pull this tho
  • it eats a lot of CPU as it needs ~1k simulations each move
  • the Monte-Carlo simulator is currently written in C++ and acts as a TCP server to communicate with the bot, would require some work to compile/run on Travis in the background... also it has windows sockets.
  • it obviously breaks the "no-modules" and "one file edit per pull" rules atm

Just wanted to share my solution. Someone might be able to do a similar/simpler version in just JS. Feel free to close this if needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions