Het maken van een programma dat een op een beetje intelligente manier vier op een rij kan spelen, is mij tegengevallen. Een stuk complexer dan ik aanvankelijk aannam.Ik had bedacht dat ik het 4 op een rij programma in onderstaande stappen kon maken, maar de overgang tussen stap 2 en 3 was te groot.
Stap 1. Vier op een rij met twee menselijke spelers. Dit lijkt mij de meest eenvoudige versie om te maken
Stap
2. Vier op een rij waarbij de gebruiker tegen een (zeer simpele) AI-agent
speelt. De AI-agent weet enkel wat geldige zetten zijn (kies een kolom
tussen 0 en 7 en die niet vol is).
Stap 3. Vier op een rij waarbij de
gebruiker tegen een iets intelligentere agent speel. Deze agent kent ook
de geldige zetten, maar kijkt ook naar de stand van het bord om zijn
keuze te maken.
Stap 4. De agent kijkt niet alleen naar
geldige stappen en maakt een inschatting wat de beste volgende stap.
Deze agent houdt bij zijn inschatting ook rekening met 2 of meer
toekomstige stappen van hem en zijn tegenstander.
Daarom ben ik teruggevallen op Boter Kaas en Eieren. De regels van dit spel zijn eenvoudiger en dat maakte dat het wel lukte om alle vier de stappen te nemen. Zie de broncode hier.
De grenzen van deze programmeur
Om een AI programma te maken voor een spel als Vier op Rij heb, je verschillede soorten kennis nodig:
- kennis van computers en de programmeertaal
- kennis van algoritmen die zoeken en redeneren en met onzekerheid om kunnen gaan
- kennis van de omgeving / het domein waar de agent komt te functioneren
Overpeinzingen van de programmeur
Ik merk dat ik geduld kan opbrengen om kennis op te doen ten aanzien van de eerste twee punten, het precies uitspitten van de mogelijke situaties die bij Vier op Rij spelen, heb ik veel minder geduld.
Concreet in stap 3 moet de agent de opstelling van het bord analyseren om tot een goede inschatting te komen van de beste beslissing. Het bedenken en implementeren van een dergelijk algoritme dat voldoende intelligent is, vind ik een behoorlijk lastige klus en ik het kan mij niet genoeg boeien omdat het zo'n specifiek probleem gaat.
Ik heb wel een poging gewaagd. Zie hier.
Geen opmerkingen:
Een reactie posten