Click to See Complete Forum and Search --> : I.A. ideas needed
DeepButi
August 31st, 2004, 06:26 AM
I've a "robot" playing a local card game. Since it can be played on-line, I tested it against human players (not knowing it was a program). Results where not bad, 2.000 games: 46% wins, but not so good as I expected.
It's a game that enforces "good" playing, so hazard obvioulsy is important (it's a card game) but on the long term, good players win more frequently than bad ones.
I would like to make it better :cool: but for some time now I'm short of new ideas. It's harder than it seems to translate to algorithms what seems obvious to a human player (deductions, hipothesis, actions to take, ...). Being an incomplete-information game, alpha-beta/minimax algorithms does not fit well, it's more an I.A. problem.
Any suggestions, links ... would be apreciated
PS1. For a description of the game Botifarra (www.pagat.com), Alphabetical ..., Botifarra.
PS2. For on-line or robot playing download it at ButiNET (www.butinet.org)
Yves M
September 1st, 2004, 11:17 AM
If you can make it play enough games, you could try combining your current approach with a learning approach. This can be either a neural net approach, a genetic algorithm or anything you like. You would use your current approach as a base line and then reinforce good links and penalize bad ones. Another thing you may want to check is whether your program is "predictable" by a human. If you're good at that card game yourself, play against the program and check whether you see patterns of behaviour (like when the computer throws away lots of cards, it definitely has a bad hand etc.). If this is the case, you may want to introduce a bit more randomness into the algorithm.
DeepButi
September 1st, 2004, 11:51 AM
Thanks Yves M,
currently it learns from his opponents, but only about how they play, it is not capable of modifying its own way of playing (so in this way it's more predictable than I would like) although it makes different "moves" for different players under the same situation because the deductions are different.
Main problem with links I know is they relate usually to:
a) complete information games, or
b) two-player games, or
c) war kind of games
but there is little studies on trick taking team card games (or similar).
A good point to start (http://www.gamedev.net/reference/list.asp?categoryid=18), but for now I'm unable to use genetic or neuronal algorithms, I cannot make the necessary connections in my mind :rolleyes:. How do you evaluate if a "move" is good or bad in a card game? The final result is the composite of all moves, but this is useless ... so I don't see how to make it evolutionate because I cannot decide wich moves must "survive" :confused:.
Anyway, thanks a lot.
Yves M
September 1st, 2004, 12:09 PM
I'm not sure how your current program works, so maybe you are doing this already.
You could explicitly code different strategies for the game and then select the current strategy to be used for a move by weighing the current score with the remaining cards and other factors such as what your ally has done and what the strategy for the previous move was. This would make it a bit less predictable and more "responsive".
DeepButi
September 2nd, 2004, 06:54 AM
Currently it does this kind of thing. It evaluates previous ally and opponents actions, what they mean in a set of "best practices", cards probably hold and so on.
In that sense it plays "as a human" because I've implemented (part of) what a human does. But a program can have different approaches and that's what I would like to incorporate now. I can make it play more games than a human will do ever; currently four "robots" play some 1.000 games, aprox. 12.000 hands, in a minute. I can fix three of them in a current version at let the fourth to learn ... and repeat again and again the process. Obviously it will learn from non-humans, so from time to time I can make it play against humans to learn even more/different things.
What I'm looking for is a way to implement learning algorithms ... but cannot find any links on how to translate neural/genetic/others theory to that kind of problem.
Thanks for all comments.
codeguru.com
Copyright Internet.com Inc., All Rights Reserved.