GIB Evolution and changes
#1
Posted 2022-August-15, 05:24
- Who has the code?
- What tool/language is used for the code?
- Who makes changes?
- what changes are done; only small changes only bidding? only bugs? Also play improvements?
- Does bidding/play work with fixed rules; or is there some small random variability in it. (e.g: normally 1NT always 15-17, but sometimes 14; because of hand evaluation, or 1/1000bids because to make opps a little less sure)
#2
Posted 2022-August-15, 09:47
Mobile : +45 22 99 55 25
http://www.netbridge.dk
http://www.thorvald.dk
#3
Posted 2022-August-15, 14:38
I believe it's written in C, though the bidding database itself is a custom format, very incomprehensible without a lot of study. Based on some very old documentation, there's one slightly more readable version of the bidding database that is then processed by some search + replaces to give a more raw version that GIB uses. In the raw version, the rule that told a 2012 version of GIB it was OK to bid 3♣ in this recent thread was:
0d e[12]g.:-:a[+e]b[^N]~b<=g&(a)&&(#0<0||(#0<H&&b>D))&�(3,13)<25&&(#10(12,b)<4&
(3,b)<4)&&(#0>=0||(((m=#3(N)>=0)*#0(2,m)+(m>=0)*(n=#3(m)>=0)*#0(2,n))<9&(#5(#0(2,C),#0(2,D),#0(2,H)),#0(2,S))<6))~$$ 27 @114#b~(#1<0||(#1<H&&b>D))&(a,b,2)~ ~#0(a,b,2)~ #532
The bidding database uses fixed rules, so a basic robot will bid exactly the same way with the same hand (can vary based on vulnerability when it comes to preempts / two suited overcalls), though the "rules" are far more complex than the ones you see when you click on the descriptions of bids.
Advanced robots are allowed to run simulations at certain points in the auction (though there are some bids marked as 'not allowed to simulate'). It selects some alternatives from the bidding database that a robot might have bid with a different hand in its position. Then it builds a set of deals, and for each alternative, finishes off the auction under the assumption all bids from there strictly use the bidding database. If a bid works out better than the book bid, it'll make it. That leads to some 'random variation' in bidding.
Play is fully based on simulations so there will always be random variation in that sense. In the very original version of GIB that Ginsberg wrote, there was a parameter for 'weighting given for signalling correctly', so it is likely there is some random variation in the 'unimportant' cards it selects to prevent it being too predictable.
#4
Posted 2022-August-15, 18:06
smerriman, on 2022-August-15, 14:38, said:
This is an interesting question (to me anyway).
If GIB based its leads purely on simulation, and if its partner paid no attention to the 'meaning' of leads, we might expect that from a holding of Axxxx against no trump, or AKxx in a suit contract GIB would randomly choose any equal x in the first case or A or K in the second.
Given that it reliably leads 4th down (NT), K from AK (suit contracts), top of doubleton etc it seems that there are some overriding rules on top of the simulation to choose the suit to lead.
Similarly (and I say this with pretty much no actual evidence), GIB defenders appear to discard high when it wants partner to lead to it through dummy/declarer.
#5
Posted 2022-August-15, 18:58
pilowsky, on 2022-August-15, 18:06, said:
Yes, it distinguishes equals in situations like the opening lead based on its lead conventions:
Quote
My earlier post on analysing why it randomly breaks these conventions may be explained by this 'weighting for signalling correctly' parameter that I wasn't aware of back then.
It definitely doesn't play attitude discards though, so you probably just notice it when it happens to be true.
#6
Posted 2022-August-16, 00:28
smerriman, on 2022-August-15, 14:38, said:
smerriman, on 2022-August-15, 14:38, said:
0d e[12]g.:-:a[+e]b[^N]~b<=g&(a)&&(#0<0||(#0<H&&b>D))&�(3,13)<25&&(#10(12,b)<4&
(3,b)<4)&&(#0>=0||(((m=#3(N)>=0)*#0(2,m)+(m>=0)*(n=#3(m)>=0)*#0(2,n))<9&(#5(#0(2,C),#0(2,D),#0(2,H)),#0(2,S))<6))~$$ 27 @114#b~(#1<0||(#1<H&&b>D))&(a,b,2)~ ~#0(a,b,2)~ #532
The bidding database uses fixed rules, so a basic robot will bid exactly the same way with the same hand (can vary based on vulnerability when it comes to preempts / two suited overcalls), though the "rules" are far more complex than the ones you see when you click on the descriptions of bids.
Advanced robots are allowed to run simulations at certain points in the auction (though there are some bids marked as 'not allowed to simulate'). It selects some alternatives from the bidding database that a robot might have bid with a different hand in its position. Then it builds a set of deals, and for each alternative, finishes off the auction under the assumption all bids from there strictly use the bidding database. If a bid works out better than the book bid, it'll make it. That leads to some 'random variation' in bidding.
Play is fully based on simulations so there will always be random variation in that sense. In the very original version of GIB that Ginsberg wrote, there was a parameter for 'weighting given for signalling correctly', so it is likely there is some random variation in the 'unimportant' cards it selects to prevent it being too predictable.
#7
Posted 2022-August-16, 00:50
You can see the bidding database as it existed in 1999 well before BBO took over GIB and starting improving it here: https://web.archive....re.com/bidding/
The old Windows downloadable version of BridgeBase included an mb.txt file which is what the robots used around 10 years ago (but it's the one with all the readable macros replaced out, which makes it a lot harder to read. Also looks like BBO has added a lot of extra features that weren't documented back then, so lots of experimentation and guesswork to figure out what all the extra bits may do.)
#8
Posted 2022-August-16, 08:57
I have had a look at your sample, but it is difficult to relate that rule to the 3♣ bid
Mobile : +45 22 99 55 25
http://www.netbridge.dk
http://www.thorvald.dk
#9
Posted 2022-August-16, 14:54
#10
Posted 2022-August-16, 17:07
;We start with some weird stuff for intermediate strength hands where; you aren't playing inverted minors. 0 OPEN_IMPROVISE 0 . . #00370 1 ~b==D~ 0 . . #10091 2 2C~!SYS(GF21)~ 1 :M~.[10,12]~&&:C3[45][23][23] :M10:D4C *2344 #00371 2 1H 1 :M~.[10,12]~&&:C[23][45]3[23] :M10:D4H *2367 #00372 2 1S 1 :M~.[10,12]~&&:C[23][45]23 :M10:D4S *2367 #00373 1 1D 1 :M~.[10,12]~&&:C[45]3 :M10:D4D *2367 #00374
it seems difficult to guess how this should be interpreted
Mobile : +45 22 99 55 25
http://www.netbridge.dk
http://www.thorvald.dk