Opdracht 1: het SIRS model
Inleiding
Het SIRS model simuleert hoe epidemieën kunnen ontstaan en verdwijnen. Het idee is dat de interactie tussen individuen danwel groepen geografisch wordt gemodelleerd middels een cellulaire automaat. Het SIRS model is afgeleid van het SIR model. SIR staat voor: susceptible, infected, recovered. Een vatbare cel kan geïnfecteerd raken, en na verloop van tijd herstellen (en dan niet meer vatbaar zijn). Het SIRS model maakt het SIR model cyclisch: na verloop van tijd kan een herstelde cel weer vatbaar worden. Het idee hierachter is dat cellen voor een lange maar beperkte tijd resistent zijn. Daarna wordt een cel weer vatbaar voor infectie.
In 2004 publiceerden de onderzoekers Chung-Yuan Huang, Chuen-Tsai Sun, Ji-Lung Hsieh en Holin Lin een model waarin de dynamiek van SARS wordt gemodelleerd. Dit model kent zes epidemiologische toestanden: vatbaar, geïncubeerd, geïnfecteerd, overleden, hersteld, en immuun. Deze toestanden worden afgebeeld in de figuur hiernaast. De figuur is uit Huang et al.'s publicatie overgenomen. Strict genomen zou deze opdracht dus “Het SIIDRIS model” moeten heten, maar dat leek mij een beetje te veel van het goede.
Globale omschrijving
We gaan Huang et al.'s model niet nabouwen, daar is het te idiosyncratisch en te ingewikkeld voor. Leerzamer is het de algemene dynamiek van een SIRS model te implementeren met behulp van meer dan drie (te weten: zes) toestanden.
Uitleg
- Cel. Elke cel representeert een entiteit. Dit kan een persoon of groep zijn, maar dat doet er eigenlijk niet toe, we abstraheren daar van.
- Update. Per tik (= tijdseenheid = Netlogo's tick) worden alle patches asynchroon en in een willekeurige volgorde ge-update. (Dit is de standaard in Netlogo, dus dat is makkelijk.)
- Expiratie. Elke toestand kent een verwachte expiratietijd. Dit is het gemiddelde aantal tikken voordat de cel overgaat naar een andere (meestal maar niet altijd de volgende) toestand. De expiratietijd van vatbaar, geïncubeerd, geïnfecteerd, overleden, hersteld, en immuun zijn resp. *, 5, 5, 500, 15, en 200 tijdseenheden. Sterretje betekent: doet er niet toe. Bijvoorbeeld, een herstelde cel is na gemiddeld 15 tikken immuun. Van elke toestand is de expiratietijd Poisson verdeeld. (Zie voor het laatste Wiki en de Netlogo docs.)
Toestand-overgangen
- Incubatie. Een vatbare cel kan geïncubeerd raken door mutatie of infectie. De kans dat een cel (per tik) spontaan incubeert door mutatie, en de kans dat een vatbare cel (per tik) incubeert door een geïnfecteerde buur kunnen worden ingesteld in de interface. Er wordt gewerkt met een Moore omgeving. Let op: meer buren betekent meer kans op infectie. (Reken met complementaire kansen.)
- Infectie.
Infectie kan alleen via incubatie. Vaak spreken we informeel over het geïnfecteerd raken van een cel, of dat de ene cel de andere cel infecteert. Maar strikt genomen is dat niet waar. Als cel A cel B infecteert, dan neemt cel B de incubatietoestand aan.
- Herstellen. Als de toestand van een geïnfecteerde cel expireert, zonder dat de cel tussentijds is overleden, dan wordt de cel als hersteld beschouwd.
- Overlijden. De kans dat een geïnfecteerde cel (per tik) overlijdt kan worden ingesteld in de interface. Na verloop van tijd wordt een “lege” cel weer bezet door een entiteit (persoon, groep, we abstraheren daar van) die als vatbaar wordt beschouwd. Preciezer: als een dode cel expireert wordt deze vatbaar.
Voorbeeld-interface
Randvoorwaarden
Hier staat wat moet.* Bij afwijking van randvoorwaarden worden punten in mindering gebracht. Veel randvoorwaarden zijn opgesteld om later de beoordeling van je programma te vergemakkelijken.
- Setup, step en go. De app wordt geïnitialiseerd middels een knop en routine “setup” (shortcut S), en uitgevoerd middels een knop en routine “go” (shortcut G).
- Widgets. Widgets (buttons, sliders, switches e.d.) links van het canvas, plots rechts.
- Canvas [-40,40]2, patch size 4.
- Kleuren. De kleuren van vatbaar, geïncubeerd, geïnfecteerd, overleden, hersteld, en immuun zijn resp. blue, lime, red, black, brown, yellow. Je ziet dat in dit lijstje soms andere kleuren worden gebruikt dan in het artikel van Huang et al.. Dit is om de dynamiek beter zichtbaar te maken.
- Standaard scenario's. Maak drie aparte knoppen voor de volgende drie scenario's. Na een druk op elk van deze knoppen worden de juiste waarden ingesteld en de app geïnitialiseerd. Alle getallen zijn kansen per tik. Infectie is dus per tik per buur.
| Scenario | Mutatie | Infectie (per buur) | Overlijden |
| 1. | 5.10-5 | 0.07 | 0.07 |
| 2. | 1.10-5 | 0.10 | 0.10 |
| 3. | 1.10-5 | 0.50 | 0.30 |
- Plots. Twee plots: één waarin grote groepen worden geplot (vatbaar, overleden, immuun); en één waar kleine groepen worden geplot. Een switch om plotten vooraf of tijdens de animatie uit te schakelen. De plot bevriest dan.
Met de standaard-implementatie kunnen maximaal acht punten worden verdient.
Extra
Extra punten kunnen worden gescoord door het aanbrengen van één van de volgende features, tot een maximum van tien punten. Als er meerdere features zijn geïmplementeerd telt het best uitgevoerde feature. Het ontbreken van een onderdeel uit de basis-implementatie kan niet worden gecompenseerd met een extra feature.
- Paint. Het met de muis kunnen painten van een toestand. De toestand is in te stellen met een drop-down menu (Netlogo: “Chooser”). De paint-straal moet zijn in te stellen. (Max. twee punten.)
- Impermeabel. Het met een muis kunnen aanbrengen en verwijderen van cellen (kleur gray) die niet mee doen in het proces. Wat gebeurt er als je een scheiding aanbrengt met een kleine opening? (Max. twee punten.)
- Scenario 4. Het presenteren van een interessant scenario. Beschrijf dit scenario op een overzichtelijke manier in de documentatie tab. Hoe heb je het gevonden? Wat is er speciaal aan? Hoe kan de dynamiek worden geïnterpreteerd? Hoe kan het gedrag van het scenario worden verklaard? (Max. twee punten.)
Nakijkmodel
Het volgende nakijkmodel zal worden gebruikt.
------------------------------------------------------
1. gratis punt
2. complete, nette, en intuitieve GUI
3. correcte kleuren en veldgrootte
4. kwaliteit code
5. correcte berekeningen op celnivo i.h.b. bt. scenario 1, 2, 3
6. executiesnelheid
7. plots zinvol en correct
8. documentatie (in code, in tab, *.png)
----- cijfer acht ------------------------------------
9. best of extra feature
10. "
----- cijfer tien ------------------------------------
*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.