views:

616

answers:

10

At first I have 5 cards by random, of course. Only one time I can change and also l have already taught [the program] the poker rules in my system. My problem is how can I choose "I don't need this card or there are cards?". I can change by myself but computer doesn't know. I think maybe it is difficult but have you guys any help to offer?

A: 

You are going to want to research Expert Systems Design. And apply it to your problem domain.

If it seems overwhelming, start small. Create a rudimentary knowledge base of rules that make your poker bot greedily seek out pairs (and 3 or 4 of a kind). When that is doing well, add in rules to try to build straights, and rules on when to favor straight building over pair seeking, then when that works well, add in flushes. Continual, and small incrementation is the key to the process.

Matthew Vines
I just looked up "Expert System Design".... Good luck with this Tony.... :-)
Frank V
It's certainly not an easy problem. Probably the biggest issue with creating an expert system, is that you need access to an actual expert so you can define a good set of rules.
Matthew Vines
Doens't seem like the way to go.
devoured elysium
+5  A: 

How about getting in touch with The University of Alberta Computer Poker Research Group?

Sinan Ünür
+1 for my alma mater :)
Shaggy Frog
+1, I contacted one of them for my disertation and they were very helpful and genuinely interested in what I was doing.
Tom Gullen
+12  A: 

Take a look at How I Built a Working Poker Bot Series (Parts 1, 2, 3, 4, 5, 6, 7, 8) which has great information for getting started in poker botting.

Specifically take a look at Part 8 which goes into detail on how to evaluate hand value. What you'll want to do is statistically evaluate the cards in the hand and from there determine which cards have the highest probability of scoring a winning hand. You can then discard the cards you don't need.

Gavin Miller
+1  A: 

Sounds like game theory and AI is what you will need to research here.

shambleh
A: 

Would it not be best to start with something simpler and work up from there? Like blackjack, which I assume would be relatively easy in the grand scheme of things?

Liam
+1  A: 

If you are looking to simply build a poker playing program, then the above suggestions are helpful. If you are looking to build a system that learns how to play poker, then you need to make use of machine learning/inductive learning techniques such as neural networks, decision trees, genetic algorithms. Samuel's wrote an early checkers playing program that learned to improve it's performance.

http://en.wikipedia.org/wiki/Arthur_Samuel

There is also a site on machine learning and games:

http://satirist.org/learn-game/

Larry Watanabe
A: 

Be careful not to do too good a job at this, or you could end up losing a lot of money.

Daniel Earwicker
A: 
Nosredna
A: 

The things you want to study are game theory and data mining. The top programs use a large game theoretic simulation to produce tolerances for an expert system which is employed to randomize play in such a way that it makes as few systematic mistakes as possible. If you search the web well enough, you'll find full implementations of a few of these types of solutions, but they are often lacking the code that generated them. The down side to just accepting one of these solutions is that they do not take full advantage of the mistakes of opponents, which is where most of today's research is headed on the topic.

There are a number of ways to produce game theoretic solutions however, using just about every imaginable AI algorithm.

NickLarsen
A: 

Check poker evaluator. http://www.codingthewheel.com/archives/poker-hand-evaluator-roundup Use monte carlo analysis to find which cards to discharged in oreder to maximise expectations.

ralu