(dit is een ietwat gewijzigde versie van het artikel zoals dat in Computerschaak, 12de jaargang, nummer 6 is verschenen)

De wedergeboorte van Duck

Dennis Breuker

In 1989 heb ik voor het eerst met een schaakprogramma (Duck) meegedaan aan het NK (toen nog in Leiden). Duck eindigde daar laatste met 0 uit 7. Ik had zoveel nieuwe ideeën opgedaan (door veel met de andere deelnemers van gedachten te wisselen) dat ik het plan had opgevat om helemaal opnieuw te beginnen.

In de jaren die daarop volgden heb ik in mijn vrije tijd aan de nieuwe Duck geprogrammeerd. De enige overeenkomst tussen dit nieuwe programma en Duck van het NK van 1989 is de naam. Voor de rest had het programma een geheel andere opzet gekregen: in tegenstelling tot de oude Duck heeft het nieuwe programma onder andere een openingenboek (ongeveer 7.000 stellingen), veel extensies en transpositietabellen (1.000.000 entries). Bovendien draait het nu op een SUN sparc-2 workstation in tegenstelling tot de 80286 AT van 1989.

Kortom, Duck van 1992 is oneindig veel beter dan Duck van 1989. Om dit te testen heb ik meegedaan met de vierde computerolympiade en met het twaalfde NK computerschaak. Bij de olympiade eindigde Duck (bij zeven deelnemers) op een vijfde plaats. Zoals elders in dit blad is te lezen eindigde Duck bij het NK precies op de helft met een 50%-score.

Tijdens het NK en de olympiade kwam de grootste tekortkoming van Duck aan het licht: het programma is positioneel erg slecht. Dit is niet verwonderlijk, want ik had veel tijd besteed aan het zoekproces met de extensies, en relatief erg weinig tijd aan positionele kenmerken in de evaluatiefunctie van Duck. Zo heeft het programma onder andere geen weet van geïsoleerde pionnen en dubbelpionnen. In de partij tegen Prochess kwam dit duidelijk naar boven.

[Partij Prochess invoegen]

De beste partij die Duck tijdens het NK heeft gespeeld is mijns insziens de partij tegen Quest (de experimentele versie van Fritz) van Frans Morsch uit de negende ronde. Hieronder volgt de partij met enig commentaar.

Duck - Quest, NK 1992, 9e ronde
1.e4 e5 2.Pf3 Pc6 3.d4 exd4 4.Lc4 Pf6 5.0-0 Lc5 6.e5 d5 7.exf6 dxc4 8.Te1 Le6 9.Pg5 Dd5 10.Pc3 Df5 11.Pce4 0-0-0 12.g4 De5 13.Pxe6 fxe6 14.fxg7 Thg8 15.Lh6

Hier was Quest uit zijn (haar?) boek. De opening beviel me wel, want, zoals hieroven al is vermeld, Duck is taktisch niet zo slecht en dit is een taktische positie.

15...d3 16.c3 Ld6 17.f4 Dd5 18.Df3 Le7 19.g5









Position after 19. g5

De zetten die Quest op eigen kracht bedacht zaten nog in het openingenboek van Duck. Na de volgende zet was Duck uit zijn boek. 19...Df5 zat nog in zijn boek. Ik was erg benieuwd hoe deze partij zou aflopen...

19...Td7 20.De3 Df5 21.Tad1 e5 22.fxe5 Td5 23.Dg3 Pxe5 24.Pd2 Lc5+ 25.Kg2 Pg4

Een bijzonder complexe stand. De witte koningsstelling is erg tochtig en zowel wit als zwart hebben een ver opgerukte vrijpion.

26.h3 Df2+ 27.Dxf2 Pxf2 28.Tc1?!

Beter lijkt me 28.Tb1, want als het witte paard op d2 wegspeelt kan zwart altijd d2 Pxd2 Pd3 met kwaliteitswinst spelen. Quest vond de vrijpion op g7 te gevaarlijk en speelde:

28...Txg7!? 29.Lxg7 Txg5 30.Kf3 Txg7 31.Te5 Tf7+ 32.Kg2 Ld6 33.Te3 Lc5 34.Tg3 b5 35.Te1 a6 36.Tg5 Lb6 37.Tg8+ Kb7?!

37...Kd7 lijkt me logischer.

38.Tg5 c6 39.b3!

Eindelijk. Ik had niet verwacht dat Duck dit zou spelen. Quest zag dat hij zijn dubbelpion kon oplossen en speelde:

39...cxb3?! 40.axb3 a5 41.h4 a4 42.bxa4 bxa4 43.Tge5 a3 44.Te7+ Txe7 45.Txe7+ Kb8?!

Waarom niet met de koning naar voren?

46.Te1 Pg4 47.Pc4 Pe3+ 48.Pxe3 Lxe3 49.Ta1

Niet 49.Txe3? d2! 50.Td3 a2 en zwart promoveert. Volgens mij staat wit hier gewonnen, hoewel de winst (zeker voor een computer) nog erg lastig is, maar zie wat er gebeurde...

49...Lc5 50.Kf3 Kc8 51.h5 Kd7 52.Ke4 Ke6 53.Kxd3 Kd5 54.Te1 Ld6 55.c4+ Kc5 56.Kc3 h6 57.Kb3 Kb6 58.Te6 Lf8 59.Te8 Ld6









Position after 59. ... Bd6

In deze (zeer waarschijnlijk gewonnen, maar zeker remise) stand vroeg Duck om de resterende tijd. Volgens Duck was dat nog drie minuten voor de laatste zet voor de tijdcontrole. Er waren nog ongeveer drie minuten op de klok, dus liet ik Duck met deze tijd verder rekenen. Duck trekt namelijk eerst 1 minuut van de beschikbare tijd af en deelt de dan overblijvende tijd door het aantal zetten tot de tijdcontrole om de tijd per zet te verkrijgen. Ik verwachtte dat Duck dus nog (3-1)/1 = 2 minuten zou gaan nadenken. Helaas dacht Duck 2.50 minuut na en was er nog maar 2.47 op de klok over... Drie seconden nadat de vlag was gevallen gaf Duck de zet

60.Th8,

wat een pion wint (a3 en h6 zijn niet tegelijk te dekken), maar ja, vlag gaat voor.

0 - 1

Na enig debuggen had ik gevonden wat de fout was: bij het afdrukken van de tijd die over is deelde ik het aantal beschikbare seconden door 60, en rondde dat naar beneden af (inderdaad, heel dom) waardoor Duck afdrukte nog 3 minuten te hebben, maar in werkelijkheid was dat 3.47! Hieruit blijkt maar weer dat een programma niet vaak genoeg getest kan worden.

Al met al ben ik redelijk tevreden met het behaalde resultaat, hoewel ik mijn streven (bij de eerste tien eindigen) net niet heb gehaald.