deanyxu / opentestbed

Automatically exported from code.google.com/p/opentestbed
0 stars 0 forks source link

Migrate MCTSBot from CSPoker to work with Meerkat and the testbed #12

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
The MCTSBot included in CSPoker is a very advanced Monte-Carlo-Tree-Search
Bot for multiplayer No-Limit games. As its GPL we can migrate it and would
have a good reference bot for all new AIs.

Original issue reported on code.google.com by bluegasp...@gmail.com on 25 Mar 2010 at 10:39

GoogleCodeExporter commented 9 years ago
Hi bluegaspode,

Looks very nice.
I'm okay with option b). If you can port my code to the meerkat API, I'd even be
willing to switch to that version for my future updates.
Participating in the poker competition is something I've been considering for a
while, yes. Your changes would make that easy to do.

Cheers,

Guy

Original comment by bluegasp...@gmail.com on 19 Apr 2010 at 9:12

GoogleCodeExporter commented 9 years ago
This is a very interesting bot and I have a few ideas to enhance it as well. 
I'll be
sure to help on this most likely once May starts and my work deadline has 
passed.

Original comment by schatzbe...@gmail.com on 19 Apr 2010 at 10:44

GoogleCodeExporter commented 9 years ago
First success: copied most important classes + packages (39) and created the
game-representation for the Bot.
Asked for AA preflop action the MCTSBot votes 'AllIn', asked for 72o preflop 
action
the MCTSBot votes 'Fold'.
We are on our way :D

Too much code/packages still to commit.

Original comment by bluegasp...@gmail.com on 21 Apr 2010 at 8:35

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
I pushed a first version of the migration work.

This is what I did so far: 
- used all packages from org.cspoker.ai.bots.bot.gametree 
- included all needed libraries and other referenced classes from cspoker
- tried to remove as much classes outside as possible
- replaced some obvious classes like 'Card' with the meerkat equivalents.
- moved the package structure to bots.mctsbot
- wrote a small Meerkat-Wrapper-Class (MCTSMeerkatBot) which builds the
'GameState'-structure needed by the actual MCTSBot and asks this bot for action.

Could be that some important classes are missing now (which were uncommented in 
the
current CSPoker). One temporary victim was the SWTTreeListener which I revived 
again.
(One can active the Tree-GUI in the MCTSBot.pd - Meerkat-File)

I changed the CashGameConsoleStarter to play a small game between two 
SimpleBots and
two MCTSBots. MCTSBot is very aggresive preflop but according to Guy this is to 
be
expected.

Tasks to come:
# CSPoker has some 'ai-experiments' classes which setup the bot in different 
ways.
Need to check that all these variations are still working.
# Provide options to the MCTSBot.pd-file to configure the Bot (like was done 
directly
in the Code before). Create some more common preconfigured MCTSBot.pd-Files.
# Still far too many classes. 
  - I think we can get rid of all Event-Classes (merge them with the State classes).
  - The spears2+2 HandEval could be replaced either by the KlaatuFastEval or Jokipii
adaptions which doesn't use as much memory (see HandEvaluator-Thread on pokerAI)
  - The 'PlayerContext'-class is not needed anymore, but the current way for the bot
to publish his actions.
  - Some Factories are not needed anymore (i.e. BotFactory).
# Change the MCTS-Tree-GUI to Swing (currently the final window with the graph 
is
Swing too)
# I'm not building the GameState to showdown (just as far as the bot needs it). 
Could
be that some opponentmodels need that, but didn't check yet

Original comment by bluegasp...@gmail.com on 24 Apr 2010 at 10:14

GoogleCodeExporter commented 9 years ago
I'm confused about this quote:
# I'm not building the GameState to showdown (just as far as the bot needs it). 
Could
be that some opponentmodels need that, but didn't check yet

Original comment by guy...@gmail.com on 3 Aug 2010 at 4:30

GoogleCodeExporter commented 9 years ago
Hi guy, 

there were times, when my Adapter used a 'fresh' GameState-Object for each 
round. As MCTS-Bot ís only called when its got to do some action on the first 
action of a new hand the look back in the 'past' to see what has happened after 
it has folded in the previous hand. With a new GameState on each round it 
couldn't 'see' what happended previous round of course.

Anyway - this is not an issue anymore with this commit:
http://code.google.com/p/opentestbed/source/detail?r=72bb42a835ec5271f6e4b25b4bb
0666f6cc073d5&path=/src/bots/mctsbot/ai/bots/bot/gametree/mcts/MCTSMeerkatBot.ja
va

Original comment by bluegasp...@gmail.com on 3 Aug 2010 at 5:29