BSc KICursus Natuur & Berekening 2025-26

Opdracht 1: Bosbrand

Inleiding

In deze opdracht wordt je gevraagd om een bosbrand te modelleren door middel van een celulaire automaat. Deze cellulaire automaat bevat een twee-dimensionale grid van cellen, en elk van deze cellen kunnen de volgende vier toestanden (states) hebben: 'begroeid', 'onbegroeid', 'brandend' en 'afgebrand'. Initieel bestaat het grid uitsluitend uit cellen die of 'begroeid' zijn, of 'onbegroeid'. De update regels zorgen ervoor dat een cel die 'begroeid' is willekeurig 'brandend' kan worden. Dit vuur kan zich verspreiden naar aanliggende cellen, die vervolgens ook 'brandend' kunnen worden. Nadat een cel 'brandend' is geweest veranderd zijn toestand altijd in 'afgebrand'. Bovendien willen we ook in onze update regels er voor zorgen dat er hervegetatie kan plaatsvinden: cellen die 'afgebrand' zijn kunnen weer 'begroeid' worden als zij grenzen aan cellen die 'begroeid' waren. Hoe deze update regels specifiek werken wordt in de opdracht hieronder uitgelegd.

Het model, zoals wij deze gaan simuleren, wordt gegeven door de volgende vier kansparameters:

  1. Kans op begroeiing: De kans dat een cel initieel 'begroeid' is (anders is hij 'onbegroeid').
  2. Kans op ontvlamming: De kans dat een cel die 'begroeid' is op een willekeurig moment 'brandend' wordt.
  3. Kans op vuuroverslag: De kans dat een cel die 'brandend' is een buur, die 'begroeid' is, ook 'brandend' maakt.
  4. Kans op hervegetatie: De kans dat een cel die 'begroeid' is een buur, die 'afgebrand' is, ook 'begroeid' maakt.

De update regels gebruiken vervolgens deze parameters om het model desgelijks up te daten.

De Opdracht

Het bovengenoemde model gaan we maken in NetLogo. Elk model in NetLogo bevat standaard een twee-dimensionaal grid van patches. Deze patches kunnen we kleuren en toestanden geven, dus is het uitermate geschikt om deze patches te modelleren als de cellen van een cellulaire automaat.

Werkwijze

Het wordt aangeraden (maar is zeker niet verplicht!) om de opdracht stapsgewijs op de volgende manier op te lossen. Let erop dat NetLogo een dusdanig krachtige programmeertaal is dat veel van deze stappen in een paar regels code kunnen worden geïmplementeerd:

  1. Open een nieuw model, en begin met het toevoegen van 2 buttons aan je interface genaamd 'setup' en 'go'. Laat deze verwijzen naar procedures in je code, en zorg dat de 'go' knop de checkbox 'forever' heeft aangevinkt (we willen namelijk als we 'go' drukken de procedure oneindig herhalen). Voeg vervolgens een slider toe (met een zelf te kiezen variabele naam) die de 'kans op begroeiing' weergeeft. Zorg dat elke patch zijn toestand bijhoudt (en kies voor elke toestand een bijbehorende kleur), en maak dat als de user de knop 'setup' klikt het programma voor elke patch éénmalig bepaalt of deze 'begroeid' danwel 'onbegroeid' is.
  2. Het is nu tijd om de update regels toe te voegen aan je programma. Voeg wederom een nieuwe slider toe die de 'kans op ontvlamming' weergeeft. Zorg dat in de 'go'-procedure een update regel komt te staan, die voor elke patch die 'begroeid' is kijkt of deze 'brandend' moet worden met de door ons opgegeven kans. Maak ook een update regel die de patches die eerder 'brandend' waren nu 'afgebrand' maakt. Let erop dat de 'go'-procedure wordt afgesloten met een aanroep van tick, wat zoiets betekent als 'ga een tik verder in de tijd'.
    Om een idee te geven wat een realistische kans op ontvlamming is, moet je je realiseren dat als n het aantal begroeide patches is, en p de kans op ontvlamming, dat de kans dat er ergens in het bos een brand ontvlamd 1-(1-p)n is (binomiaal). In andere woorden als we 400 begroeide patches hebben, en de kans op ontvlamming 1% is, is er elk moment een kans van 98% dat er ergens in het bos een brand ontstaat. Dit is misschien niet zo realistisch.
  3. Voeg nu een slider toe die de 'kans op vuuroverslag' weergeeft. Maak een update regel die voor elke cel die nu 'brandend' is kijkt of een buur, die 'begroeid' is, 'brandend' gemaakt moet worden met de door ons opgegeven kans. Let op dat deze notie van vuuroverslag indirect impliceert dat als een cel die 'begroeid' is meerdere buren heeft die 'brandend' zijn, hij een hogere kans heeft om ook 'brandend' te worden.
  4. Idem als het vorige punt, maar voeg nu een slider toe die de 'kans op hervegetatie' weergeeft. Deze update regel heeft precies dezelfde structuur als de vorige regel, alleen nu wordt er gekeken voor de cellen die 'begroeid' zijn of voor elk van hun buren, die 'afgebrand zijn', nu 'begroeid' moeten worden met de door ons opgegeven kans. Let erop dat cellen die 'onbegroeid' waren, altijd 'onbegroeid' blijven (zie het alsof deze grond heel onvruchtbaar is).
  5. Tot slot voeg je in je interface een plot toe. Laat NetLogo plotten hoeveel procent van het grid begroeid is.

Je hebt nu een geschikt model gemaakt in NetLogo die bosbranden kan modelleren. Als je het leuk vindt kun je nu experimenteren met je model: observeer op welke manier de parameters het model beïnvloeden en probeer waardes te vinden die naar stabiele toestanden leiden.


*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.


Laatst gewijzigd op woensdag 13 november 2024, om 15:02 uur Auteur(s): Max Knobbout Translate to en, ru, or tr