DEEP GOLD Team Members: Daniel Mack – Jared Sylvester Garrett Britten – Brian Bien CSE331: Data Structures Notre Dame, Fall 04, Stewman
Motivation and Goals Poker is an unsolved problem in AI Imperfect knowledge Intractable number of branches Traditional search strategies & optimizations are inadequate Want to create a program capable of making reasonably intelligent decisions Use various data structures along the way
The Application GUI: Qt cross platform (Linux, Windows, Mac) previous experience :( Qt Designer Design Goals Computer plays humans at a poker table User tells program what occurs at table Program tells user what action to take
Program Structure GUI Game class coordinates overall flow of game HumanPlayerComputerPlayer Contains AI Elements Pre-flop expert system Simulator for post-flop decisions
Simulator Can't simulate entire rest of game – too many possible outcomes (~2^40000) Want EV of Fold, Check/Call, Bet/Raise Method: For each possible initial action: Deal out cards semi-randomly 500 times Play each hand dealt for each possible decision of each player Track net cash flow for each initial action Select action with largest EV
Data Structures Many ADT classes needed to store many different data types in one structure ex: hand, card, holeCards, players Container structures used in simulator map & map for deck set for active players in a sim list for expected values
Comparisons Simulator most intensive –Over 500 times Compare: –Set vs vector –Map vs. vector –Map vs. vector
Conclusions Modeling Poker IntensiveNuiance Extreme Decisions –10 vs. 500 AI –Choices in design –Learning the game A Lords of Vice Production