| BSc KI — Cursus Natuur & Berekening | 2025-26 |
De bedoeling van deze opdracht is om met behulp van een genetisch algoritme te leren een stok met daar op een dienblad in evenwicht te houden.
Een stok met daarop een dienblad beweegt als gevolg van fietsbewegingen. Dit is een natuurkundig proces: de artiest oefent een kracht uit op z'n fiets, de fiets versnelt, de onderkant stok versnelt mee, etc., met als effect dat een (labiel) evenwicht ontstaat. Dit labiele evenwicht volgt de wetten van de mechanica en kan (dus) worden gevangen in formules. De formules die beschrijven hoe het systeem beweegt hebben we voor je gemodelleerd. Daar hoef je je dus niet druk over te maken.
De formules die beschrijven wanneer de fietser welke kant uit moeten bewegen zijn gedeeltelijk voor je gemodelleerd. De fietser beweegt volgens een vereenvoudigd model. Hij/zij beweegt op een toneel en kan slechts twee kanten op: naar links of naar rechts. We nemen aan dat de fietser op regelmatige momenten beslist welke richting dat is. Vervolgens oefent hij/zij een bepaalde (korte) tijd een constante kracht uit in die richting. Die constante kracht zorgt er voor dat de fiets versneld. Na die korte tijd van kracht uitoefenen is er een korte tijd waarin de fietser heel eventjes geen kracht uitoefent. Daarna begint het proces opnieuw. De fietser beslist opnieuw welke kant hij/zij uit wil fietsen, vervolgens oefent de fietser korte tijd kracht uit in die richting, etc. Ook dit hoef je niet te modelleren! Maar het is wel nodig dit te weten.
De fietser neemt zijn/haar beslissingen op basis van vier gegevens: plaats, snelheid, hoek van de stok, en hoeksnelheid van de stok. Alles wordt gemeten in standaard eenheden, dus: meter, meter per seconde, radialen, en radialen per seconden. De plaats in het midden heeft x-coördinaat nul. De stok recht omhoog is 00, en de hoek is positief tegen de klok in. Netlogo meet hoeken op dezelfde manier. Het enige verschil is dat wij hoeken in radialen meten (Netlogo in graden).
We nemen aan dat de artiest op elk moment dat deze een richting kiest, zijn/haar keuze laat afhangen van het teken (+ of -) van de volgende uitdrukking:
wplaats×plaats + wsnelheid×snelheid + whoek×hoek + whoeksnelheid×hoeksnelheid,waarbij wplaats, wsnelheid, etc. vaste gewichten (wegingsfactoren) zijn, met waarden tussen de -1 en 1, inclusief -1 en 1. Het gedrag van de artiest wordt dus eigenlijk volledig bepaald door vier gewichten:
wplaats, wsnelheid, whoek, en whoeksnelheid.We noemen zo'n combinatie van gewichten een policy. Ga na dat bijvoorbeeld de policy (-1,0,0,0) er voor zorgt dat de fietser altijd naar links rijdt als deze zich rechts op het toneel bevind, en altijd naar rechts rijdt als deze zich links op het toneel bevind. Het doel van het genetisch algoritme, nu, is om een goede policy te vinden, en de bedoeling is dat jij dit genetisch algoritme gaat programmeren.
Termen:
chromosoom wordt gebruikt om er een genotype in op te slaan. Als dat is gebeurd dan spreken we van een geïnstantieerd fenotype.
bepaal-kracht-op-basis-van-toestand bepaalt, op basis van de huidige tijd en het genotype, in welke richting de fietser kracht uitoefent.Fiets en Dienblad. Dit zijn de enige zichtbare turtles. Ook zijn is er een methode geïmplementeerd, genaamd animeer, om het systeem te simuleren en animeren op basis van een geïnstantieerd fenotype, of op basis van de muis-cursor (hangt af van switch animeer-beste?).
gewicht-plaats, gewicht-snelheid, enz. Geef genotypen ook een variabele genotype-fitness.go:to go ; ... end
go is de standaard naam voor de lus (loop) in Netlogo waarin alle actie plaatsvindt.
Binnen deze evolutieslag kun je sterke genotypen met elkaar kruisen, je kunt genotypen muteren, en je kunt zwakke genotypen verwijderen. Wat je binnen deze evolutieslag doet is aan jou, en is deel van de programmeeropdracht.
De go methode is gekoppeld aan een button, ook genaamd go, die op “forever” is gezet. Dus als de button is ingedrukt, wordt de evolutieslag herhaaldelijk uitgevoerd.
groepsgrootte wordt gebruikt voor toernooi-selectie. De betekenis van mutatiegraad wordt hieronder besproken. Per zoveel slagen wordt een histogram van de fitness getekend, met kolommen van 500 breed. Omdat een run (een simulatie) na 10,000 tijdseenheden automatisch wordt afgebroken, loopt de laatste kolom van 9,500 tot 10,000. De afgebeelde 10,500 is te danken aan Netlogo's automatische labeling van de x-as.Hier volgen hints en tips.
Genotype gecreëerd of verwijderd te worden.Hier staat wat moet. Bij afwijkingen worden punten in mindering gebracht.
| Laatst gewijzigd op woensdag 13 november 2024, om 15:02 uur | Auteur(s): Gerard Vreeswijk | Translate to en, ru, or tr |