gwnn Posted April 4, 2011 Report Share Posted April 4, 2011 This is a philosophical post, please don't take it as an offence. Sometimes I see these incredible GIB plays like discarding an ace instead of commencing a defensive crossruffs, or taking a practice finesse and going down 4 instead of making +1, etc. I wonder if it was possible to make a robot based on 'basic principles', such as 'second hand low, third hand high', or 'play through strength, play up to the weakness', 'discard losers, keep winners' for defence, or for declarer 'ruff losers, draw trumps, claim'. I'm wondering if a robot could be programmed along these lines, or whether this approach would be an improvement. Of course perhaps it's not easy to let a computer know what a loser is, or what a trick is. I don't know. This is not meant to criticise GIB, or its programmers. Just wondering how this approach would work/fare. Quote Link to comment Share on other sites More sharing options...
hotShot Posted April 4, 2011 Report Share Posted April 4, 2011 Back in 1985 Borland published the Turbo Pascal Gameworks Toolbox, that included a source code for a simple bridge game.Of cause it was intended to get interested programmers some point to start from. Bidding and play was terrible, but I IIRC it was sort of rule based, don't know if one would call that AI at that time. According to this page http://openlibrary.org/books/OL2753290M/Turbo_GameWorks there are about 10 pages in the manual, perhaps someone has a copy in his archive. Quote Link to comment Share on other sites More sharing options...
helene_t Posted April 4, 2011 Report Share Posted April 4, 2011 I had a copy of the Turbo Bridge source and played around with some minor modifications to the code. As far as I remember it used simulations, pretty much the same way as GIB does, but possibly using some sort of approximate double dummy solver rather than a complete one. As for the OP: I have been thinking of some kind of Bayesian robot that combined rules with simulations. I.e. if the rule says "2nd hand low" then it would play low if say 2/5 of simulations favored it but play high if only 1/5 of simulations favored it, depending on some reliability measure of the particular rule. Quote Link to comment Share on other sites More sharing options...
fred Posted April 4, 2011 Report Share Posted April 4, 2011 As far as I can tell, the primary reason why GIB sometimes makes "crazy plays" (by this I mean plays like discarding an Ace for no reason) relates to time. Such things tend not to be a function of any bugs in GIB itself. GIB, like most humans, has a strong tendency to play better if it has more time to think. GIB is capable of the playing its cards very well, but only if it has sufficient thinking time. If GIB's thinking time is close to zero then all bets are off - the cards it plays can seem more or less random. When the GIB in question runs on one of our servers (as is the case in all robot tournaments and when you rent robots using the web-client) it is rather complicated and expensive for us to make sure that all GIBs on the system have enough time to avoid crazy plays for a variety of reasons. Even trying to explain this is complicated, but here are some factors that we have to consider: 1) Each "GIB-server" is a computer that runs a finite number of GIB processes. The more GIB processes we run on a given GIB-server, the longer it takes each GIB to perform at whatever level of skill we are aiming for.2) Each GIB-server costs us money. Each month we spend a LOT of money on GIB-servers.3) It is impossible for us to predict with any accuracy the demand for GIBs at any given time of any given day.4) Occasionally individual GIB-servers or even banks of GIB-servers go down. 5) It takes a non-trivial amount of time for us to bring up new GIB-servers as they are required.6) Some players get annoyed when they think that their GIBs are playing "too slowly".7) In robot tournaments we have to be concerned about being fair (ie that all GIBs in the tournament behave the same way). Good news is that the cost of "cloud computing" (a buzzword that roughly describes the technology we utilize to run the GIB-servers) is going down, the machines are getting faster, the services are becoming more robust, and we (mostly Uday with an assist from Gerardo) are spending a lot of time and effort to optimize how BBO works with these GIB-servers. So it is reasonable to expect that the rate at which these crazy plays occur will diminish in the future. You may even see a difference in the near future in some contexts as we have made some changes very recently in this area that we hope will help a lot. Most likely GIB's bidding "judgment" will also seem to improve in the future as it becomes possible and economical for us to give GIB more (computer) time to do simulations without there being a noticable impact on how much (real) time passes when GIB is thinking. One thing I can tell you from personal experience is that there is a huge difference between the "basic robot" and the "advanced robot" that you can rent with the web-client. If you care about such things and if you can afford to rent "advanced robots", I strongly suggest that you do so. You will get a much more challenging game (and much worse duplicate scores!) as a result. In order to keep the "basic robots" affordable, we currently cannot let them play very well. It is all but certain that you will continue to see more crazy plays in this context than in others. This is an ongoing battle that will probably never end, but I can promise you that we are care a lot about this and that we are investing heavily in an effort to try to improve the current state of affairs. Fred GitelmanBrdige Base Inc.www.bridgebase.com Quote Link to comment Share on other sites More sharing options...
Bbradley62 Posted April 4, 2011 Report Share Posted April 4, 2011 Some players get annoyed when they think that their GIBs are playing "too slowly".This should never be the case in robot duplicate games, where robots play fast enough to finish all boards with significant time remaining. People who play "faster is better" games shouldn't be surprised when their (human or robot) partners rush into misplays; those playing duplicate shouldn't expect such problems. There should be no unhappy customers if you slightly slow down GIBs in duplicate games. Since GIB doesn't seem to signal particularly well anyway, why not implement a rule that when discarding, GIB always discards the lowest card of a suit? Yes, this could occassionally lead to GIB blocking a suit when an advanced/expert play might have unblocked it, but it would avoid worse-than-novice plays like pitching an ace. It also might speed up simulations, since GIB would only be considering discarding at most 3 cards, instead of having many more options. Quote Link to comment Share on other sites More sharing options...
Antrax Posted April 4, 2011 Report Share Posted April 4, 2011 Why not let the BBO client steal compute cycles and distribute GIB compute time over all players connected to the server? (or make it opt-in, whatever) Granted, it will require writing some (okay, a lot of) new code, but:a) From what I understand about GIB, it's already embarrassingly parallel, so just distributing families of simulations and accumulating the results should be relatively straight forward. b) From your description, it seems that you're going to have to spread GIB code over multi processes anyway if BBO and GIB continue to be a success. Quote Link to comment Share on other sites More sharing options...
JLOGIC Posted April 4, 2011 Report Share Posted April 4, 2011 This should never be the case in robot duplicate games, where robots play fast enough to finish all boards with significant time remaining. People who play "faster is better" games shouldn't be surprised when their (human or robot) partners rush into misplays; those playing duplicate shouldn't expect such problems. There should be no unhappy customers if you slightly slow down GIBs in duplicate games. Since GIB doesn't seem to signal particularly well anyway, why not implement a rule that when discarding, GIB always discards the lowest card of a suit? Yes, this could occassionally lead to GIB blocking a suit when an advanced/expert play might have unblocked it, but it would avoid worse-than-novice plays like pitching an ace. It also might speed up simulations, since GIB would only be considering discarding at most 3 cards, instead of having many more options. 1) You seem to assume all people care about is finishing the boards in time. I can usually get a 12 board robot duplicate done in under 10 minutes and then start the next one (and if I miss it, then a 55 %er, or an 8 boarder within a few minutes etc), and the main reason I like them over real bridge is that you can play very fast/a lot of boards. I don't want to spend 25 minutes on 12 boards, I would just play normal bridge if I did. So I don't agree with your assertation that there should be no unhappy customers if the gibs were slower. 2) Making gib always play the lowest card is the worst idea ever. For example, if you had Kxxx opp AJxx, and you cashed the king and it went low low ten, you could play low to the ace and drop the Q (and if it was stiff ten you broke even). There would be a ton of situations like this where you could do absurdly double dummy things because of this rule. Quote Link to comment Share on other sites More sharing options...
Bbradley62 Posted April 5, 2011 Report Share Posted April 5, 2011 1) You seem to assume all people care about is finishing the boards in time. I can usually get a 12 board robot duplicate done in under 10 minutes and then start the next one (and if I miss it, then a 55 %er, or an 8 boarder within a few minutes etc), and the main reason I like them over real bridge is that you can play very fast/a lot of boards. I don't want to spend 25 minutes on 12 boards, I would just play normal bridge if I did. So I don't agree with your assertation that there should be no unhappy customers if the gibs were slower. 2) Making gib always play the lowest card is the worst idea ever. For example, if you had Kxxx opp AJxx, and you cashed the king and it went low low ten, you could play low to the ace and drop the Q (and if it was stiff ten you broke even). There would be a ton of situations like this where you could do absurdly double dummy things because of this rule.Your perspective on robot duplicate is one I hadn't considered. I thought that Fred wasn't talking about huge amounts of times, so I meant my suggestion to be slowing GIB down from 12 boards in 10 minutes (for you) to 12 or 13 minutes, not 25. If that would be bad for players at your level, then I stand corrected as to the unanimity of reaction to such a change. My lowest-card suggestion explicitly referred to discards, not following suit, but your point is well taken that it could have undesirable side effects in terms of "gaming the system". I just wanted discarding aces to not be considered when low cards are available, to both reduce bizarre discards and save "thinking time". Quote Link to comment Share on other sites More sharing options...
barmar Posted April 5, 2011 Report Share Posted April 5, 2011 I think Bradley's point was that GIB seems to spend an inordinate amount of time trying to decide which card to play from xxx -- it performs a bunch of DD simulations with each discard. However, I think it's hard to program in the criteria where it doesn't make a difference which card is played -- the only obvious case that comes to bind is when they're in sequence (after excluding cards that have already been played). The other problem that an "always play low when not trying to win" rule solves is GIB's habit of taking away guesses when it has a finessable queen. Since it uses a DD solver, it defends as if declarer is playing DD and knows where the queen is, so it thinks it makes no difference to play it. I don't think any amount of extra simulation solves this, since it's an algorithmic problem. Regarding JL's example, aren't there also many cases where defenders giving count (which is what I think GIB currently does most of the time) helps declarer? The only defensive carding that doesn't help declarer is choosing randomly among equivalent cards. Quote Link to comment Share on other sites More sharing options...
xxhong Posted April 11, 2011 Report Share Posted April 11, 2011 This is a simple problem to solve. To those who like fast games, bbo can just open tournaments with fast setups. To those who like decent games, bbo can also open some tournaments with slow setups. The basic problems of gib are that often it makes wrong constraints or spends too much time in situations that doesn't make a difference. Also, for defensive plays, one need to construct some kind of specific set-ups to beat the contract, which is often a rare event. In that sense, a random sampling of very limited hands is an ineffective way to attack this kind of problems. For human players, we just try to construct possible hands from partner to defeat the contract then decide which patterns are more likely. 1) You seem to assume all people care about is finishing the boards in time. I can usually get a 12 board robot duplicate done in under 10 minutes and then start the next one (and if I miss it, then a 55 %er, or an 8 boarder within a few minutes etc), and the main reason I like them over real bridge is that you can play very fast/a lot of boards. I don't want to spend 25 minutes on 12 boards, I would just play normal bridge if I did. So I don't agree with your assertation that there should be no unhappy customers if the gibs were slower. 2) Making gib always play the lowest card is the worst idea ever. For example, if you had Kxxx opp AJxx, and you cashed the king and it went low low ten, you could play low to the ace and drop the Q (and if it was stiff ten you broke even). There would be a ton of situations like this where you could do absurdly double dummy things because of this rule. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.