Created Remembrance, Permanence, & THERA
The Kyou System continued hammering and stirring, sleepless, indefatigable, at work upon the machines they were making.



KyouSystem
@KyouSystem

I've found and fixed two separate bugs in GNU Backgammon over the past two days, both located in the code used to calculate the inputs to the evaluation neural nets (i.e. very critical data).

They were small bugs, but fixing them made a visible change in the analysis output. I strongly suspect that, for certain difficult positions, these fixes might be enough to change what move the engine would score as the highest, even after a rollout.[1]

Do you want to know where those bugs were located in the original version of the code?

In the middle of a rat's nest of a function some 700 lines long; specifically, in obtuse sections of code completely bereft of comments and which almost exclusively used variables with names only 1 or 2 characters long.

Is it any wonder that subtle bugs like off-by-one errors or using the wrong one-character variable for an array index (aka the bugs in question here) were able to slip in here and remain completely undetected for God only knows how long?


[1] Of course, now I'm wondering if the neural nets for GNU Backgammon were trained while being fed these slightly erroneous inputs, or if these bugs crept in later. I very much hope it's the latter; I don't have the know-how or computing hardware at my disposal to train new nets myself.


KyouSystem
@KyouSystem

Here's one of the offending code sections, for your viewing pleasure, heh.


You must log in to comment.