Opdracht 2: Peloton
Inleiding
Van planetbye.blogspot.com:
Globale omschrijving
Simuleer de dynamiek van een peloton wielrenners met behulp van flocking technieken.
Randvoorwaarden
Hier staat wat moet. Bij afwijking van randvoorwaarden worden punten in mindering gebracht. Het voldoen aan de randvoorwaarden levert i.i.g. het cijfer zes op.
- Dynamiek. De dynamiek van het peloton wordt geïmplementeerd met een flocking techniek.
- Weg. Het peloton rijdt op een rechte weg. De weg is zwart. De kanten van de weg worden gevormd door de kanten van het canvas. In Netlogo loopt de weg van links naar rechts.
- Renners. Renners bezitten een vorm die speciaal voor de opdracht door jou ontworpen is met de Turtle shapes editor . De renners bezitten verschillende kleuren. (Het makkelijkst is kleuren te accepteren die door Netlogo worden zelf worden gekozen.)
- Relativiteit. In de animatie bezit de groep gemiddeld een voorwaartse snelheid nul. Renners die sneller dan het peloton rijden bewegen langzaam van links naar rechts. Renners die langzamer dan het peloton rijden bewegen langzaam van rechts naar links.
- Geloofwaardigheid. De dynamiek is geloofwaardig. De vorm van het peloton veranderd voortdurend alsmede de locatie van individuele renners in het peloton.
- Perspectief. Er zijn knoppen om één turtle te volgen (“follow”), te bekijken (“watch”), alsook een knop om het perspectief te resetten.
Extra
Extra punten kunnen worden verdient door het aanbrengen van één of meer van de volgende features, tot een maximum van tien punten. Niet noodzakelijk in volgorde van belang:
- Op kop rijden. Wielrenners rijden niet graag op kop, want dan vang je extra wind. Implementeer een mechanisme (op agentniveau) dat er voor zorgt dat renners nooit te lang op kop rijden.
- Breuken. Implementeer flocking zo dat breuken in het peloton op een natuurlijke manier kunnen verdwijnen en ontstaan.
- Snelheid. Bij een hoge snelheid wordt het peloton “op een lint getrokken”. Bij een lage snelheid is een peloton kort en rijden renners dicht op elkaar. Implementeer flocking zo dat de vorm van het peloton wordt beïnvloedt door de snelheid ervan. Misschien is het handig om de snelheid van het peloton in te kunnen stellen met een slider.
- Obstakels. Het peloton is in staat om te gaan met wegversmallingen en andere obstakels. De kleur van obstakels is grijs (“gray” in Netlogo).
- Wind. Het is mogelijk een windrichting en windkracht in te stellen waardoor de vorm van het peloton wordt beïnvloed. Denk aan zg. waaiers. De animatie op de Nederlandse wikipedia is mooi maar overigens geen goed voorbeeld van een waaier. Wat we daar zien heet “ronddraaien,” “caroussel,” “rouleren,” of “kop over kop”. Als renners net een kopgroep hebben gevormd wordt soms tegen elkaar gezegd: “alléz, draaien”, of wordt met de wijsvinger naar beneden een cirkelje in de lucht getekend.
- Valpartijen. Maak het mogelijk dat het flockingalgoritme toestaat dat de minimale separatieafstand door fouten overschreden wordt. (Interpreteer dit als stuurfouten en/of contact, bijvoorbeeld door het in elkaar haken van sturen.) In dat geval veranderd het gedrag van de getroffen renners op een geloofwaardige manier, als ook het gedrag van de renners die worden beïnvloedt door het gedrag van getroffen renners, en zo verder (een zg. “cascade”).
- Naar voren rijden. De beste plek in het peloton is zo ongeveer op plek 15-20. Zo zit je uit de wind maar ver genoeg van voren om alert te bljven op ontwikkelingen in de koers. Implementeer een mechanisme (op agentniveau) dat er voor zorgt dat renners in meer of minder mate een drang hebben om in de sweet spot van het peloton te vertoeven. (Deze drang varieert al naar gelang de nog te rijden afstand. Wellicht is het een idee deze af te tellen of in te stellen met een slider.) Het mechanisme houdt rekening met het gegeven dat het makkelijker is om naar voren te rijden als er weinig renners in de buurt zijn. In de sweet spot is het erg druk en zak je meestal als vanzelf weer naar achteren.
Aanwijzingen
- Canvas. Geadviseerd wordt een canvas van ongeveer 40 tegels breed en 10 tegels hoog met een tegelgrootte van 10 pixels te nemen. Andere formaten zijn, binnen grenzen van redelijkheid, ook toegestaan.
- Modi. In de productiefase is het handig renners te kleuren aan de hand van de modus die ze op dat moment volgen. Kleur bijvoorbeeld een renner rood als deze bezig is met separeren en blauw als deze bezig is met cohereren (in het geval jouw algoritme separatie- en cohesiemodi bevat).
- .
- .
- .
- .
*Naast de algemene randvoorwaarden voor de programmeeropdrachten en de algemene randvoorwaarden voor de programmeeropdrachten die specifiek in Netlogo worden uitgevoerd. Zie de pagina met clausules.