Welkom bij het projectpagina van Bruno Jakic

 

Op deze pagina wordt de voortgang bijgehouden van de ontwikkeling van

 

Boter-kaas-en-eieren spel geschreven in Advice Language 0 van Ivan Bratko

 

 

Maandag, 27 juni 2005

 

Vandaag heb ik per e-mail nogmaals met Arnoud overlegd over de finale onderwerp voor het project. Uiteindelijk is daar uit gekomen dat ik bezig ga aan het bouwen van een Boter-Kaas-en-Eieren spel in de Advice Language, niet in de laatste plaats vanwege mijn belabberde kennis van Prolog en zijn manier van werken. Ik verwacht zelf ook een zekere nut te trekken uit het werken met Advice Language in de zin van alternatieve manieren ontdekken voor een probleem dat ik in andere programmeertalen reeds heb opgelost, en hier parallellen tussen kunnen trekken.

Voor het finaliseren van het overleg met Arnoud heb ik een aantal ideën aangebracht, zoals het maken van een pokerspel dat zijn spelgedrag probeert te optimaliseren, en een lerende boter-kaas-en-eieren in Delphi. Hierdoor heb ik mij niet verdiept in het ontwerp van de BKE in AL0.

In de avond heb ik gepoogd voorbeelden te zoeken op het Internet (anders dan de in het boek gegeven voorbeeld) van implementaties van Advice Language. Dit viel tegen, hetgeen inhoudt dat ik mij meer in het boek van Bratko zal moeten verdiepen die ik momenteel niet heb.

 

 

Dinsdag, 28 juni 2005

 

Op uitnodiging van Arnoud ben ik vertrokken naar de Science Park om een demonstratie bij te wonen van Dutch Aibo Voetbalteam. Door gedonder in het openbaar vervoer ben ik te laat gekomen. Tijdens de reis heb ik in mijn hoofd aan een aantal mogelijke strategieën gedacht m.b.t. het bouwen van het BKE spel in de AL. Eenmaal aangekomen bij de presentatie heb ik nog een nuttig persoonlijk onderhoud gehad met Arnoud m.b.t. tot deze, en ook over de administratieve indeling van het project, zoals de behoefte om een live webpagina bij te houden met de voortgang.

Het boek van Bratko nog steeds niet in mijn bezig hebbende (wel iemand gevonden van wie ik het kan lenen), ben ik op zoek gegaan naar proloogvoorbeelden op het internet om mijn verroeste kennis van Prolog bij te schaven, en een wat groter inzicht te krijgen. Vooruitlopend op het bemachtigen van het boek morgen, heb ik een e-mail gestuurd naar de schrijver van het boek, prof. Bratko, met de vraag of hij nog wat extra voorbeelden had van toegepaste Advice Language 0. De grootste gedeelte van de avond doorgebracht met oefenen met Prolog voorbeelden en proberen te leren van deze. Mijn conclusie is dat, in tegenstelling tot conventionele programmeertalen of zelfs Python, Prolog niet in een avond valt te leren.

 

 

Woensdag, 29 juni 2005

 

Verslapen, opgestaan om 14:00, voornamelijk als gevolg van laat opblijven gisteren. In mijn mailbox de antwoord van prof. Bratko gevonden op mijn e-mail inzake Advice Language met de toelichting dat hij zelf AL0 nooit heeft gebruikt voorbij het punt die in de boek staat beschreven. Gezien ik zelf de opdracht met AL0 met een zware steun op het (toen samen met de collega) boek heb gemaakt, is deze onontbeerlijk geworden voor mijn verdere voortgang. Daarom ben ik meteen de deur uitgegaan en (dankzij de staking van het OV) 2 uur later teruggekomen in het gelukkige bezit van het boek van Bratko.

Mijn hoop dat ik dit project op tijd af krijg zakt een beetje in. Desniettemin lijkt het mij geen actie om het daarom op te geven. Na het ruim bestuderen van de schaakimplementatie van AL0 van Bratko is het mij een stuk duidelijker hoe AL0 werkt. Het is dan ook aan mij om te proberen het implementeren van deze theorie ook onder de knie te krijgen en aan te wenden voor een BKE spel. Dit begint voor mij met nog een keer héél goed de paragraaf doorlezen die betrekking heeft op de AL0 en notities bijhouden. Mijn angst is dat niet zo zeer het niet begrijpen van AL0 een probleem wordt, maar de algemene afkeer van en onervarenheid in Prolog. Plan om in AL0 de functie te maken die de drie aaneengesloten punten ziet als winst is mislukt wegens onvoldoende begrip van Al0. Pogingen om de werking door te krijgen zijn doorgegaan tot de vroege uurtjes, maar zonder resultaat.

 

 

Donderdag, 30 juni 2005

 

Meteen na het opstaan aan Bratko gegaan. Wegens een aantal vervelende dingen thuis dit opgegeven en rond 19:00 weer opgepikt. Mijn vertrouwen in Bratko’s boek en mijn eigen vermogen om programmeertalen aan te leren daalt. Om 22:30 is het besef gekomen dat het programmeren van de doel niet meer reëel is. Hiernaast tegenvallend bericht van Olaf ontvangen, die me aan het twijfelen bracht over het nut van verder werken aan het project. Desondanks het volgende besloten:

-         Om een boter-kaas-en-eieren spel te programmeren in Delphi met het vermogen om spelenderwijs te leren, waarbij er GEEN strategische kennis in wordt gestopt, en als basis de combinatoriek wordt gebruikt.

Na een uur beraad, en evenveel on-line contact met een lief meisje, overgegaan op de realisatie van het idee. In uitgebreidere bewoordingen zal de implementatie op het volgende principe berusten: de computerspeler van BKE is niet alleen ongeďnformeerd over het spel, maar ook gehandicapt, in de zin dat het niet over het vermogen beschikt om bepaalde dingen te combineren van de geleerde kennis. Dit wordt opzettelijk gedaan, om te kijken hoeveel kennis (zie, potjes) nodig zijn om een systeem te bouwen die een taak kan verrichten zonder dat het systeem een idee heeft waar het mee bezig is, en dit alles door her proces van het leren. Het leren gebeurt door bij winst of verlies (enige wat aangegeven wordt door de beoordelingselement) de configuratie van het bord op te slaan, acht houdende welke van de 2 kanten de computer speelde. Voor de zetten waar er nog geen geleerde “strategie” voor is, wordt een random besluit gebruikt. Door de potjes om en om te laten spelen, dat wil zeggen, door de mens een keer te laten beginnen, en daarna de computer, kan de computer redelijk snel zijn spelstrategie gaan verbeteren. Een leuke gedachte hierbij is dat, als twee zulke systemen tegen elkaar gezet zouden worden met computerspelers, dat er sprake zou zijn van digitale-genetische evolutie, omdat hun random besluiten op succes zouden worden beoordeeld en naar gelang toegepast. De code in kwestie is nogal omvangrijk om hier te plakken; deze is daarom beschikbaar op aanvraag op brunoj@xs4all.nl.

Zo rond 2:00 overgegaan op volle implementatie van het idee. Na het bouwen van een “Form” in Delphi, en het spelveld, overgegaan op het bouwen van de beoordelingsfunctie (de functie die bepaalt of en wie gewonnen heeft). Hierna de functies geďmplementeerd voor het “klikken” op de velden in kwestie. Hierna de lerende functie geďmplementeerd, en uiteindelijk de interpretatiefunctie. Na de eerste keer compilen draaide het systeem niet goed; de computer zette geen tegenzetten. Dit bleek aan een kleine fout te liggen in de “Klik” gedeelte. Hierna zette de machine om en om wel en geen zet. Dit bleek aan de random functie te liggen, die soms velden koos die al bezet waren. Dit was zeer snel verholpen door een check in te bouwen. Het testen van de werking van het systeem kon hierna beginnen. Het viel tegen hoeveel spellen nodig waren om van het programma een waardige tegenstander te maken; echter is na ongeveer 5 minuten spelen, de volkomen ongeďnformeerde computer niet meer te verslaan. Voor BKE lijkt dit een lange leercurve, maar er moet rekening mee worden gehouden dat er GEEN informatie over redeneermethoden, waarden van het veld, concept van het winnen, of wat dan ook in het systeem zijn ingebouwd! De bedoeling is om te kijken hoe lang een blind doofstom systeem nodig heeft om alleen via het “gevoel” in een spel leren te winnen, en we kunnen reppen van 5 minuten. Een leuke extra implementatie is om 2 computerspelers tegen elkaar te laten spelen en de genetisch-digitale evolutie uit te laten voeren en kijken hoe lang het duurt voor vrijwel alle spelletjes in een “tie” eindigen. Gezien het nu 4:26 is, laat ik dat voor de ochtend na als ik opsta.

Test update: naast het vermogen om bepaalde dingen vrij snel te leren, blijkt ook dat sommige dingen niet worden onthouden voor wat ze zijn. De vraag is waar dit precies aan ligt. Mijn huidige vermoeden gaat richting het random kiezen uit beginstrategieën als de machine begint, en het niet oefenen op eerder geleerde strategieën van de tegenstander als gevolg hiervan. Dit moet nader worden onderzocht. De vraag is natuurlijk of ik wel een zeker “commonsense” in het systeem moet gaan bouwen mbt het interpreteren van gegevens, gezien de startdoel van het systeem.

 

Even ter herinnering, gebruikte programmeertaal is Borland Delphi 7.0, en het besturingsysteem is Windows XP SP 2 Professional NL Edition. Het programma zal bij de demonstratie draaien op een laptop uitgerust met, uiteraard, Borland Delphi 7.0, en Windows XP SP 1 Home NL Edition.