Dit was een schoolproject die ik in juni 2018 heb gedaan.
U dient Python en pip (package manager) te hebben geïnstalleerd op uw computer.
U dient dit project te clonen of te downloaden en vervolgens het volgende te doen:
- Voer
pip install -r requirements.txtuit om de dependencies te installeren - Voer
python flappy.pyuit om het programma te starten
U dient dit project te clonen of te downloaden en vervolgens het volgende te doen:
- Verwijder/hernoem het bestand
/assets/q_values.json - Voer
python flappy.pyuit
Om het leerproces te versnellen kunt u de waarde FPS = 30 op lijn 13 van flappy.py verhogen naar een hoger getal.
In dit project heb ik een Machine Learning algoritme (Q-Learning) geïmplementeerd voor het populaire spel Flappy Bird. Het doel was om de computer in staat te stellen het spel zelf te leren spelen, zonder specifieke instructies te geven.
Python
Het doel van het spelen van Flappy Bird is het behalen van zoveel mogelijk punten door middel van het passeren van zoveel mogelijk openingen tussen de twee buizen. Hierbij kan de spelen de spatietoets indrukken om het vogeltje omhoog te laten vliegen óf niets doen om het vogeltje naar beneden te laten vallen.
In het bestand FlappyBot.py staat de code van de geïmplementeerde Machine Learning algoritme. In grote lijnen werkt het als volgt:
- De computer weet initieel helemaal niets over het spel, behalve dat hij twee acties kan uitvoeren; vliegen (actie 1) óf niets doen (actie 2)
- Bij iedere frame van het spel krijgt de computer de huidige toestand van het spel bestaande uit:
- de horizontale afstand tussen het vogeltje en de opening
- de verticale afstand tussen het vogeltje en de opening
- de mate waarin het vogeltje naar boven of naar beneden gaat
- Indien de computer zich eerder in dezelfde toestand heeft begeven -en dus een ervaring heeft opgebouwd op basis van zijn actie- weet hij welke van de twee acties in deze specifieke toestand het beste resultaat oplevert. Hij zal dan ook naargelang deze ervaring handelen. Echter, wanneer hij deze specifieke toestand niet eerder heeft ervaren doet hij niets (actie 2) en gaat later evalueren of dit positief of negatief uitpakt.
- Na ieder spel evalueert de computer welke acties hebben geleid tot de beëindiging van het spel en leert op basis hiervan dat deze acties in de gegeven toestanden niet goed zijn om uit te voeren.
- De ervaringen die de computer opdoet slaat hij op in het bestand /assets/q_values.json
- Hierna begint hij een nieuw spel met de extra ervaring die hij heeft opgedaan in het vorige spel.
