Jump to content

GIB Evolution and changes


kgr

Recommended Posts

I wonder how GIB is changed?

- 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)

Link to comment
Share on other sites

If you look at the 'GIB Release Notes' thread at the top of this forum, you'll see GIB underwent regular updates from 2011 to the start of 2019 - on average they were released about twice a year (more regular early on). Then all development seemingly stopped and nothing has been officially heard since. This was primarily bug fixes, but also new conventions, etc. The only known change to the play logic over that time period was in 2014 where GIB was forced to cash an ace against 7NT.

 

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.

  • Upvote 2
Link to comment
Share on other sites

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.

 

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.

Link to comment
Share on other sites

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.

Yes, it distinguishes equals in situations like the opening lead based on its lead conventions:

 

If it leads an honor that's part of a sequence, it uses standard honor leads (K from AKx, A from AK doubleton). If it leads from a long suit, it leads 4th best (but see above: it doesn't always lead its long suit). When leading from 3 small, it leads low against both suit and NT contracts.

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.

  • Upvote 1
Link to comment
Share on other sites

Thanks for the answer!

If you look at the 'GIB Release Notes' thread at the top of this forum, you'll see GIB underwent regular updates from 2011 to the start of 2019 - on average they were released about twice a year (more regular early on). Then all development seemingly stopped and nothing has been officially heard since. This was primarily bug fixes, but also new conventions, etc. The only known change to the play logic over that time period was in 2014 where GIB was forced to cash an ace against 7NT.

It is pity that no changes are done anymore. And BBO is not interested to let anyone do changes? (not that I would have time for it yet)

 

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.

How do you know all this? :) And where did you get that piece of code from (where is the "one slightly more readable version of the bidding database")?
Link to comment
Share on other sites

By finding and reading every bit of information about GIB that has ever existed online :)

 

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.org/web/20200130215544/http://orig.gibware.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.)

  • Upvote 1
Link to comment
Share on other sites

I have been trying to read the mb.txt2 file, but taking a simple section like this

 

;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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...