Skip to content

AP-IT-GH/jumper-assignment-oyasso

Repository files navigation

**MLAgents Deel III – JumperAgent ** Inleiding

Het doel van dit project is een mlagent succesvol trainen om over obstakels te springen. De applicatie bestaat uit 3 soorten objecten; de agent, de obstakels en de muur achter de agent. Het doel van de agent is ervoor zorgen dat de obstakels de muur aanraken zonder dat ze zichzelf aanraken. Dit is de manier voor hem om punten te scoren.

Opbouw

image image

.yaml configuratie

Dit zijn de settings in de yaml file die ik gebruikt heb voor het trainen van de agent: image

Actions

De agent beschikt over twee verschillende acties: springen en niets doen. Als hij kiest voor springen zal een vectorkracht in de y-as richting bovenwaarts uitgeoefend worden op het agentobject.

Rewards system

Voor het rewards systeem heb ik ervoor gekozen enkel punten bij te geven als hij iets goed doet en geen punten af te trekken. Als het obstakel de muur achter de agent aanraakt verdient hij 1.0 punten. Om ervoor te zorgen dat de agent niet constant blijft springen heb ik hem ook punten gegeven wanneer hij stilstaat; 0.1 * Time.deltaTime. Deze puntenverdeling werkte het best tijdens het trainen.

Trainingsproces

Zoals eerder vermeld ging het trainingsproces pas heel vlot wanneer ik niet meer met negatieve puntenverdeling werkte. image

De JumperAgent1.0 en 2.0 getuigen van zo’n puntenverdeling. Daarna kreeg ik beter resultaten: image

Deze versie heb ik dan ook langer laten trainen waardoor het resultaat er heel goed uitziet.

Code Snippets

Dit zijn snippets van het JumperAgent.cs script, een component van de agent.

Variabelen:

image

Start van episode:

image

We resetten het obstakel naar zijn oorspronkelijke positie en geven het een random snelheid.

Observaties:

image

OnActionsReceived:

image

Variabelen voor het berekenen van de afstand tussen objecten. image

De twee discrete acties die de agent kan uitvoeren zijn springen en niets doen (hij kan enkel springen en punten krijgen door niets te doen als hij op de grond staat). image

Als het obstakel de muur aanraakt gaat hij net zoals in het begin van elke episode terug naar zijn oorspronkelijke plaats met een random snelheid. Dit is de manier om de meeste punten te krijgen voor de agent. image

Check of de agent terug op de grond staat (het y-niveau van de grond is 0.5). image image

De episode eindigt enkel als een obstakel de agent raakt.

ResetAgent:

image image

Telkens als de agent de vloer aanraakt gaan we zijn positie en rotatie resetten om te voorkomen dat hij weg van zijn positie springt en op andere plaatsen belandt.

Jump:

image

Opwaartse kracht op de agent uitoefenen. 

Conclusie

De belangrijkste factor die voor het meeste succes heeft gezorgd in dit project is het niet afstraffen van bepaalde acties en slechts goeie punten toewijzen op de juiste momenten. Het resultaat is een agent die het liefst van al niet geraakt wil worden maar ook graag stil wilt blijven staan waardoor hij enkel op de nodige momenten zal springen.

Link naar het filmpje: https://ap.cloud.panopto.eu/Panopto/Pages/Viewer.aspx?id=9153b35f-dae9-4f86-b108-b1d301433d11

About

jumper-assignment-oyasso created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages