2. Van fenomeen naar regels (conceptueel ABM)#
Je hebt in hoofdstuk 1 geleerd wat emergent gedrag is en hoe agents met simpele regels tot verrassende patronen kunnen leiden. Maar hoe vertaal je een fenomeen uit de echte wereld – zoals een Mexican wave, mieren die voedsel zoeken, of mensen die evacueren – naar een werkend model? In dit hoofdstuk leer je systematisch nadenken over agents, omgeving en interacties. Je ontwerpt regels zonder code te schrijven, bepaalt wat je kunt instellen (parameters) en wat je gaat meten (outputs). Aan het eind kun je een compleet conceptueel model opzetten, klaar om in hoofdstuk 3 te programmeren in NetLogo.
Leerdoel: Na dit hoofdstuk kun je een fenomeen ontleden in agents en regels, parameters en outputs bepalen, en een conceptueel model-canvas invullen voor je eigen onderzoeksvraag.
2.1. Inhoud#
In dit hoofdstuk behandelen we:
Casus ontleden: agents / omgeving / interacties
Regels ontwerpen: als-dan regels en drempels
Parameters vs outputs: wat kun je instellen, wat ga je meten?
Meetplan: monitors en plots (conceptueel, nog zonder NetLogo)
Conceptueel model-canvas invullen
2.2. Casus ontleden: agents / omgeving / interacties#
Voordat je begint met programmeren, moet je helder hebben wat je gaat modelleren. De eerste stap is je fenomeen ontleden in drie componenten:
Agents – Wie of wat zijn de actieve spelers?
Omgeving – Waar spelen ze? Wat is de ruimte/wereld?
Interacties – Hoe reageren agents op elkaar en op de omgeving?
Stap 1: Bepaal de agents#
Een agent is een entiteit met eigen eigenschappen en gedrag. Vraag jezelf af: Wat beweegt, handelt of beslist?
Voorbeeld: Mexican wave in een stadion
Agent: Een persoon in het stadion
Eigenschappen: positie (rijnummer, stoelnummer), status (zit/staat)
Gedrag: Kijk naar je buurman; als die staat, sta dan zelf ook op (na korte vertraging)
Voorbeeld: Mieren zoeken voedsel
Agent: Een individuele mier
Eigenschappen: positie (x, y), energie, draagt-voedsel? (ja/nee)
Gedrag: Beweeg willekeurig; als je voedsel ziet, pak het; leg geurspoor achter als je voedsel draagt; volg geursporen
Tip
Hoe weet je of iets een agent is?
Stel de vraag: “Kan dit ding acties uitvoeren of beslissingen nemen?” Zo ja → agent. Zo nee → waarschijnlijk onderdeel van de omgeving.
Stap 2: Bepaal de omgeving#
De omgeving is de ruimte waarin agents bewegen en interacteren. Dit kan een 2D-grid zijn, een continu vlak, een netwerk, of iets abstracts.
Veel voorkomende omgevingstypen:
Grid (raster): De wereld is verdeeld in vierkante cellen (zoals een schaakbord). Agents staan op cellen en bewegen van cel naar cel.
Continu vlak: Agents kunnen overal staan met precieze coördinaten (x=3.14, y=7.89), niet alleen op vaste posities.
Netwerk: Agents zijn verbonden via lijnen (denk aan sociale netwerken: personen als knooppunten, vriendschappen als verbindingen).
Omgevingseigenschappen zijn dingen die niet bewegen, maar wel van invloed zijn:
Muren of obstakels (in een evacuatiemodel)
Geursporen op de grond (in een mierenmodel)
Voedsel of hulpbronnen (in een foeragemodel)
Voorbeeld: Mexican wave
Omgeving: Een rij stoelen (1D-grid: 100 personen naast elkaar)
Omgevingseigenschappen: Geen; de omgeving is statisch
Voorbeeld: Mieren zoeken voedsel
Omgeving: Een 2D-grid van 50x50 cellen
Omgevingseigenschappen: Voedselstukken op bepaalde locaties, geursporen die vervagen over tijd
Stap 3: Bepaal de interacties#
Hoe beïnvloeden agents elkaar en de omgeving? Dit is waar het interessant wordt!
Soorten interacties:
Agent ↔ Agent: Mieren botsen op elkaar, mensen besmetten elkaar, auto’s remmen voor de auto ervoor
Agent → Omgeving: Mieren leggen geursporen, mensen bouwen obstakels
Omgeving → Agent: Mieren ruiken geursporen, mensen zien voedsel of obstakels
Voorbeeld: Mexican wave
Interactie: Persoon A kijkt naar persoon B (zijn buurman). Als B staat, wacht A 1 seconde en staat dan ook op.
Voorbeeld: Mieren
Agent → Omgeving: Mier legt geurspoor achter op de grond
Omgeving → Agent: Mier ruikt geurspoor en loopt liever in die richting
Agent ↔ Agent: Mieren botsen (niet direct interactie, maar wel effect: ze gaan om elkaar heen)
Let op
Verwar properties (eigenschappen) niet met interacties! Een agent heeft energie (eigenschap), maar verliest energie door te bewegen (interactie met de omgeving/tijd).
Oefening 2.1 (Oefening (Oefenen))
Kies één van deze fenomenen: een file op de snelweg of mensen die in paniek evacueren uit een gebouw.
Vul de volgende tabel in:
Component |
Jouw antwoord |
|---|---|
Agent (wie/wat?) |
|
Agent-eigenschappen (minimaal 3) |
|
Omgeving (waar?) |
|
Omgevingseigenschappen (minimaal 2) |
|
Interacties (minimaal 2) |
Probeer zo concreet mogelijk te zijn. Bijvoorbeeld: niet “auto’s”, maar “auto met snelheid, positie, agressiviteit-van-bestuurder”.
2.3. Regels ontwerpen: als-dan regels en drempels#
Je hebt nu agents, omgeving en interacties. De volgende stap: wat doen agents precies? Hier ontwerp je de gedragsregels.
Als-dan logica#
Agents volgen simpele als-dan regels (ook wel if-then of conditionele regels):
Formaat: Als [situatie], dan [actie].
Voorbeelden:
Als
buurman staat, danwacht 1 seconde en sta zelf ook opAls
energie < 10, danzoek voedselAls
afstand tot uitgang < 5 meter, danversnel naar uitgangAls
besmet? = jaENbuurman besmet? = nee, danbesmet buurman met kans 20%
Drempels en kansen#
Veel regels bevatten drempels (grenswaardes) of kansen (probabiliteit):
Drempels: Een actie gebeurt alleen als een waarde boven/onder een grens komt.
Als
energie < 20, dan zoek voedselAls
afstand tot buurman < 2 meter, dan remAls
aantal staande buren >= 1, dan sta op
Kansen: Een actie gebeurt met een bepaalde waarschijnlijkheid.
Met kans 30%: beweeg willekeurig
Met kans 10%: besmet je buur
Met kans 5%: verlaat de groep
Tip
Waarom kansen?
De echte wereld is vol onzekerheid. Niet iedereen besmet altijd zijn buren, niet iedere mier vindt meteen voedsel. Kansen maken je model realistischer én interessanter (elke run is anders!).
Goede regels zijn simpel en specifiek#
Vermijd vage regels zoals:
“Agents gedragen zich logisch” ❌
“Mensen proberen te overleven” ❌
Gebruik concrete, programmeerbare regels:
“Als paniek > 0.7, beweeg met 2x snelheid in willekeurige richting” ✅
“Als geen voedsel in zicht, draai 15 graden en beweeg 1 stap vooruit” ✅
Voorbeeld: Volledige regelset Mexican wave#
Laten we de Mexican wave volledig uitwerken:
Agent: Persoon in stadion
Eigenschappen: status (zit/staat), positie (nummer 1-100), timer (teller voor vertraging)
Regels:
Als
status = zitENlinker-buurman staat, dan zettimer = 1 secondeAls
timer = 0ENstatus = zit, danstatus = staatAls
status = staat, dan wacht 2 seconden en zetstatus = zitAls
positie = 1(eerste persoon), dan sta spontaan op (start de wave)
Dit zijn slechts 4 simpele regels, maar ze produceren het emergente gedrag van een prachtige golf door het stadion!
Oefening 2.2 (Oefening (Toepassen))
Kies Mexican wave of mieren zoeken voedsel.
Ontwerp minimaal 5 concrete als-dan regels voor de agents in dit model. Gebruik het formaat:
Als [situatie], dan [actie].
Zorg dat minimaal:
1 regel een drempel bevat (bijv. “energie < 10”)
1 regel een kans bevat (bijv. “met kans 20%”)
Alle regels specifiek en programmeerbaar zijn
Tip: Denk na over: Wat doet een agent als er niets speciaals aan de hand is? Wat doet een agent in een bijzondere situatie?
2.4. Parameters vs outputs: wat kun je instellen, wat ga je meten?#
Je hebt agents en regels. Nu komt een cruciaal onderscheid: parameters vs outputs.
Parameters (inputs)#
Parameters zijn waarden die je instelt voordat je het model start. Ze bepalen het gedrag van het systeem. Je kunt ze vaak variëren om te experimenteren.
Voorbeelden:
Aantal agents (bijv. 100 mieren)
Besmettingskans (bijv. 20%)
Startsnelheid (bijv. 5 meter/seconde)
Grootte van de wereld (bijv. 50x50 grid)
Hoeveelheid voedsel (bijv. 10 stukken)
Goede parameternamen zijn duidelijk:
aantal-mensen✅ (beter dann)besmettingskans✅ (beter danprob)initiele-energie✅ (beter dane0)
Outputs (metingen)#
Outputs zijn waarden die je meet tijdens of na de simulatie. Ze beantwoorden je onderzoeksvraag.
Voorbeelden:
Percentage besmette personen na 100 ticks
Gemiddelde tijd tot evacuatie
Aantal mieren dat voedsel heeft gevonden
Maximale lengte van de file
Output kan zijn:
Een enkel getal (bijv. “na 50 ticks waren 73% besmet”)
Een grafiek (bijv. besmettingsgraad over tijd)
Een telling (bijv. “hoeveel mieren hebben voedsel?”)
Het verschil onthouden#
Aspect |
Parameter |
Output |
|---|---|---|
Wanneer? |
Vooraf instellen |
Tijdens/na meten |
Jij bepaalt? |
Ja, jij kiest de waarde |
Nee, het model bepaalt het |
Doel? |
Experimenteren (“wat als?”) |
Resultaten analyseren |
Voorbeeld |
“Besmettingskans = 30%” |
“Na 50 ticks: 80% besmet” |
Tip
Experimenteer met parameters!
De kracht van ABM zit in het variëren van parameters. Begin met een basiswaarde, verander dan één parameter en kijk wat er gebeurt. Zo ontdek je hoe het systeem werkt.
Voorbeeld: Virus-model#
Parameters:
aantal-mensen= 100besmettingskans= 20%herstel-tijd= 10 ticksstart-besmetten= 5 mensen
Outputs:
percentage-besmet(grafiek over tijd)piek-besmetting(hoogste aantal besmetten tegelijk)tijd-tot-einde(wanneer is iedereen hersteld of immuun?)
Onderzoeksvraag: Hoe beïnvloedt de besmettingskans de piek-besmetting?
Experiment: Voer model uit met besmettingskans = 10%, 20%, 30%, 40%, 50% en vergelijk de piek-besmetting.
Oefening 2.3 (Oefening (Oefenen))
Gebruik je eigen gekozen fenomeen (uit de vorige oefeningen) of kies een nieuw fenomeen.
Maak twee lijsten:
A. Parameters (wat stel je in? minimaal 4)
Geef per parameter een plausibele beginwaarde. Bijvoorbeeld:
aantal-auto’s = 50
max-snelheid = 120 km/u
B. Outputs (wat meet je? minimaal 3)
Geef per output aan hoe je het zou meten. Bijvoorbeeld:
gemiddelde-snelheid = som van alle snelheden / aantal auto’s
aantal-stilstaande-auto’s = tel auto’s met snelheid = 0
Denk na: Welke output helpt je om je onderzoeksvraag te beantwoorden?
2.5. Meetplan: monitors en plots (conceptueel)#
Je weet nu wat je wilt meten (outputs). Maar hoe visualiseer je dat tijdens je simulatie? In ABM gebruiken we twee hoofdmethoden: monitors en plots.
Monitors: huidige waarde#
Een monitor toont één getal: de huidige waarde van een variabele op dit moment in de simulatie.
Voorbeelden:
percentage-besmet→ toont “42%” (nu op dit moment)aantal-mieren-met-voedsel→ toont “7” (actueel)huidige-tick→ toont “125” (welke tijdstap zijn we?)
Wanneer gebruik je monitors?
Voor een quick check: “Hoeveel agents zijn er nog?”
Voor waarden die niet snel veranderen
Voor het debuggen: “Klopt mijn model? Zijn er 100 agents zoals ik dacht?”
Plots: verloop over tijd#
Een plot (grafiek) toont hoe een waarde verandert tijdens de simulatie. De x-as is meestal de tijd (ticks), de y-as de gemeten waarde.
Voorbeelden:
Lijnplot: Percentage besmetten over tijd (x=ticks, y=percentage)
Multi-line plot: Vergelijk meerdere groepen (bijv. besmet/immuun/gezond in één grafiek)
Histogram: Verdeling van snelheden van auto’s
Waarom plots?
Plots laten patronen zien die je anders mist:
Exponentiële groei van besmettingen
Een stabiel evenwicht (plateau)
Oscillaties (op-en-neer patroon)
Chaos (onvoorspelbaar)
Let op
Een plot alleen is niet genoeg! Je moet de grafiek ook interpreteren. Bijvoorbeeld: “De grafiek toont een S-curve: eerst langzame groei, dan snelle verspreiding, daarna afvlakking omdat er geen nieuwe mensen meer besmet kunnen worden.”
Meetplan opstellen#
Een meetplan is een overzicht van wat je gaat meten en hoe.
Formaat:
Output |
Type |
Eenheid |
Verwachting |
|---|---|---|---|
percentage-besmet |
Plot |
% |
Stijgt eerst snel, dan afvlakken |
aantal-mieren-met-voedsel |
Monitor |
aantal |
Groeit langzaam, plateau op ~50 |
gemiddelde-snelheid |
Plot |
km/u |
Daalt bij file, stijgt als file oplost |
Waarom een meetplan?
Het dwingt je na te denken: wat verwacht ik?
Je kunt achteraf checken: klopte mijn verwachting?
Het voorkomt dat je achteraf denkt: “Oh, ik had eigenlijk X moeten meten…”
Oefening 2.4 (Oefening (Reflecteren))
Beantwoord de volgende vragen in 3-5 zinnen per vraag:
a) Je modelleert een evacuatie. Je meet “gemiddelde tijd tot evacuatie”. Na 10 runs varieert dit tussen 30 en 90 seconden. Wat betekent deze variatie? Is dat een probleem? Waarom wel/niet?
b) Je ziet in je plot dat het percentage besmetten eerst stijgt, dan daalt, dan weer stijgt, dan weer daalt (zigzag-patroon). Dit had je niet verwacht. Wat zou je doen? (Hint: denk aan regels, parameters, bugs)
c) Noem twee voorbeelden van regels in je model die “vals realistisch” zijn: ze lijken logisch, maar zijn eigenlijk te simpel of niet kloppend met de werkelijkheid. Leg uit waarom ze vals zijn.
2.6. Conceptueel model-canvas invullen#
Je hebt alle bouwstenen: agents, regels, parameters, outputs, meetplan. Nu zet je het in één overzicht: het conceptueel model-canvas. Dit is je ontwerp-document voordat je gaat programmeren.
Het canvas: structuur#
Een conceptueel model-canvas bevat deze onderdelen:
Fenomeen/onderzoeksvraag
Wat modelleer je? Welke vraag wil je beantwoorden?Agents
Wie/wat zijn de agents? Welke eigenschappen hebben ze?Omgeving
Waar speelt het? Grid/continu/netwerk? Welke omgevingseigenschappen?Interacties
Hoe beïnvloeden agents elkaar en de omgeving?Regels (gedrag)
Wat doen agents? (als-dan regels)Parameters
Wat kun je instellen? (met beginwaarden)Outputs/metingen
Wat ga je meten? Monitors/plots?Hypothese
Wat verwacht je dat er gebeurt?Vereenvoudigingen/aannames
Wat laat je bewust weg? Welke aannames maak je?
Voorbeeld: Conceptueel canvas Mexican wave#
1. Fenomeen/onderzoeksvraag
Mexican wave in stadion. Vraag: Bij welke reactiesnelheid houdt de wave op met rondgaan?
2. Agents
Personen (100 stuks). Eigenschappen: status (zit/staat), positie (1-100), reactietijd (in seconden).
3. Omgeving
1D-rij van 100 stoelen naast elkaar. Geen obstakels.
4. Interacties
Agent → Agent: Persoon ziet linker-buurman staan en reageert daarop.
5. Regels
Als
linker-buurman staatENstatus = zit, wachtreactietijdseconden, danstatus = staatAls
status = staat, wacht 2 seconden, danstatus = zitAls
positie = 1, start spontaan (sta na 1 seconde op)
6. Parameters
aantal-personen= 100reactietijd= 0.5 seconden (variabel in experiment!)
7. Outputs
Monitor:
aantal-staande-personenPlot:
golf-snelheid(hoeveel personen per seconde staat de golf)Telling:
aantal-rondes(hoe vaak gaat de golf rond voordat hij stopt?)
8. Hypothese
Als reactietijd < 1 seconde, blijft de wave rondgaan (minimaal 3 rondes). Als reactietijd > 2 seconden, sterft de wave na 1 ronde.
9. Vereenvoudigingen
Alle personen hebben dezelfde reactietijd (in werkelijkheid varieert dit)
Personen zijn altijd attent (kijken altijd naar hun buur, niet afgeleid door telefoon)
Geen “domino-effect” van beide kanten (alleen linker buur telt)
Tip
Canvas = ontwerp, code = uitvoering
Het canvas is je blauwdruk. Als je het goed invult, is programmeren daarna veel makkelijker. Je hoeft niet meer na te denken over wat je moet bouwen, alleen over hoe je het programmeert.
Oefening 2.5 (Oefening (Toepassen))
Vul een compleet conceptueel model-canvas in voor je eigen gekozen fenomeen (of kies: mieren zoeken voedsel).
Gebruik de 9 onderdelen:
Fenomeen/onderzoeksvraag
Agents (met eigenschappen)
Omgeving
Interacties
Regels (minimaal 5 als-dan regels)
Parameters (minimaal 4, met beginwaarden)
Outputs (minimaal 3: monitors en/of plots)
Hypothese (wat verwacht je?)
Vereenvoudigingen (wat laat je weg? minimaal 2)
Je mag dit in een tabel of met koppen en opsommingen. Doel: een ander moet jouw model kunnen begrijpen en nabouwen zonder jou te vragen om uitleg.
2.7. Verdiepende opgaven#
Klaar voor meer uitdaging? Deze opgaven helpen je dieper nadenken over modelontwerp.
Oefening 2.6 (Opdracht (Validatie van regels))
Kies een ABM-fenomeen (bijv. virus, file, evacuatie, mieren, segregatie).
Ontwerp 3 regels die te simpel zijn (vals realistisch) en verbeter ze. Gebruik deze tabel:
Te simpele regel |
Waarom is dit te simpel? |
Verbeterde regel |
|---|---|---|
Als |
In werkelijkheid besmet je niet altijd |
Als |
… |
… |
… |
Reflecteer: Wat win je door de verbeterde regel? Wat verlies je (complexiteit, rekentijd)?
Oefening 2.7 (Opdracht (Parameter-gevoeligheidsanalyse))
Neem je conceptuele model. Identificeer de 3 belangrijkste parameters (degene waarvan je denkt dat ze het grootste effect hebben).
Ontwerp een experiment om te testen welke parameter het meest invloedrijk is:
a) Omschrijf het experiment: welke waarden test je? (bijv. besmettingskans: 10%, 20%, 30%, 40%, 50%)
b) Wat is je afhankelijke variabele (output die je meet)?
c) Wat houd je constant?
d) Welke parameter verwacht je het meest invloedrijk? Waarom?
Schrijf 200-300 woorden.
Oefening 2.8 (Opdracht (Van klein naar groot: schaaleffecten))
Veel modellen gedragen zich anders bij verschillende schalen. Bijvoorbeeld: 10 mieren vs 1000 mieren, of 50x50 grid vs 200x200 grid.
Beantwoord voor jouw model:
a) Wat gebeurt er als je het aantal agents verdubbelt? Welke outputs veranderen? Welke blijven hetzelfde?
b) Wat gebeurt er als je de omgeving 2x groter maakt, maar hetzelfde aantal agents houdt? (Dus lagere dichtheid)
c) Zijn er parameters die je moet aanpassen als je schaalt? Bijvoorbeeld: moet de besmettingskans hoger als je meer mensen hebt?
Denk kritisch en onderbouw met logica. 250-350 woorden.
2.8. PO-mijlpaal#
Na dit hoofdstuk ben je klaar voor de tweede mijlpaal: het conceptuele ontwerp van je eindproject.
Wat lever je op na deze fase?#
Als het je helpt, zet de volgende punten in een document. Dit is alvast je opzet voor je eindopdracht. Het is een conceptueel model-canvas met alle 9 onderdelen.
Checklist: je bent klaar met je conceptuele model als…#
Je regels zijn concreet en programmeerbaar (geen vage taal zoals “agents gedragen zich logisch”)
Je hebt minimaal 1 regel met een drempel (bijv. “energie < 10”)
Je hebt minimaal 1 regel met een kans (bijv. “met 20% kans”)
Je parameters zijn duidelijk benoemd en hebben realistische beginwaarden
Je outputs zijn meetbaar en helpen je onderzoeksvraag beantwoorden
Je hypothese is toetsbaar: je kunt straks zeggen “klopt” of “klopt niet”
Je hebt nagedacht over vereenvoudigingen en kunt uitleggen waarom je ze maakt
Een klasgenoot kan jouw canvas lezen en het model nabouwen zonder jou te vragen om uitleg
Waar komt dit terug in je eindproject?#
Dit canvas is de kern van je methodesectie in het eindverslag:
Inleiding: Je onderzoeksvraag en hypothese komen uit je canvas
Methode: Agents, regels, parameters en omgeving worden hier uitgelegd
Resultaten: Je outputs zijn de grafieken/tabellen die je laat zien
Discussie: Je vereenvoudigingen zijn beperkingen die je bespreekt
Bewaar het canvas goed! In hoofdstuk 3 ga je het implementeren in NetLogo. Met een helder canvas is programmeren véél makkelijker.
Volgende stap: In hoofdstuk 3 ga je NetLogo leren. Je bouwt je eerste simpele model, leert de syntax, en zet je conceptuele canvas om in werkende code. Je agents gaan écht bewegen! Tot dan!