Ik weet nog niet hoe ik daarmee moet beginnen.
Voor deze competitie heb je:
• 5 seconden CPU tijd per spel, single threaded
• je kan niet vooruitdenken tijdens de beurt van de ander
• alle code moet in 1 source file, niet groter dan 1,44MB
• je mag niets naar een bestand schrijven / uit een bestand lezen
Daarom heb ik de machine-deep-reinforcement-neural-network-learning-glazen-bol-hocus-pocus voor de online versie bij voorbaat al opgegeven.
Maar ik wil nog wel iets met een opening book doen, als ik er tijd voor heb.
Die zou misschien wel met hulp van al die hippe technieken gemaakt kunnen worden.
Ik begin dan "gewoon" met de
Monte Carlo Tree Search.
Grofweg werkt dat als volgt:
• Je kijkt naar een zet (selection).
• Dan kijk je welke mogelijke zetten daarna mogelijk zijn (expansion).
• Van een mogelijke zet knikker je daarna nog een hele rits random stenen op het bord, totdat het potje klaar is (simulation)
Dat levert een winst / verlies / gelijk spel op
• Die uitkomst (#simulaties: +1, score: +2(bij winst) of +1(bij gelijkspel) o.i.d.) tel je op bij je selection / expansion (update / back propagation)
Daarmee krijg je dus een idee hoe goed / slecht een zet is. Door expansion zetten meer te simuleren wordt die uitkomst steeds betrouwbaarder.
De simulation fase kun je ook nog iets slimmer maken. Dat heet dan blijkbaar policy of reinforcement learning. Die kan supervised (met kennis van een mens) of unsupervised (doe maar wat en vind zelf uit of dat goed of slecht is)
Dan lees ik nog van alles over agents en exploration / exploitation en bla bla bla wat je daarvoor kan gebruiken.
Inmiddels snap ik de wat-en-hoe's (en dan is het smijten met al die termen ook allemaal niet zo magisch meer)
Maar voor nu heb ik nog andere ideeën die ik eerst aan mijn bot wil toevoegen.
Inmiddels is de testronde van 16 november geweest en staat de bot 3de. Dit keer redelijk los van de subgroep daaronder.
De threat space search (of VCT / VCF of whatever) zit er nu in en lijkt af en toe zijn werk te doen.
Dat was nogal stressen, de code heb ik vannacht nog op het laatste moment opgestuurd, maar lijkt het zonder fouten te doen.
Wel 4 fails vanwege de tijdslimiet (na 50-60 zetten is die door zijn tijd heen)
Dus nu weer verder optimaliseren.
-edit-
En toch nog wat bugs pletten. Ik heb een fabeltastische optimalisatie gemaakt, waarbij mijn bot een paar zetten voor het einde kan zien, dat hij hoe dan ook gaat winnen.
Het probleem is, dat die daarna de pot niet altijd zo snel mogelijk afmaakt. En met het threat space search is dat alleen maar erger geworden.
Hier:
https://www.codecup.nl/showgame.php?ga=147879 crasht de tegenspeler (wit) al bij de eerste zet.
Zijn zetten worden daarna voortgezet met random zetten door de "scheidsrechter", waardoor ik (zwart) dus eigenlijk heel makkelijk kan winnen. (Moet in zet 11 kunnen)
Maar de bot speelt gewoon nog vrolijk zijn TSS routine tot in het frustrerende door. En maakt het pas af, nadat die bij toeval in zet 17 de killer-move doet.
-edit2-
De testronde van 7 december is geweest.
Ik heb aan de laatste versie een transposition table toegevoegd, met behulp van
zobrist hashes, zodat hij stellingen niet dubbel gaat doorzoeken.
Ik sta zowaar 1ste met wel 1 punt verschil met nummer 2

Nog wel 3 keer een fail vanwege tijdoverschrijding. Maar ik heb de potjes tegen (nu) nummer 2 wel gewonnen en dat was me tot dusver nog geen enkele keer gelukt.
[
Voor 46% gewijzigd door
Vaan Banaan op 07-12-2019 14:28
]