Simulace vývoje epidemie Covid 19 na výletní lodi Diamond Princess (Netlogo)

From Simulace.info
Revision as of 01:12, 13 June 2021 by Satm03 (talk | contribs)
Jump to: navigation, search

Tato stránka slouží jako výzkumná zpráva simulace s názvem „Simulace vývoje epidemie Covid 19 na výletní lodi Diamond Princess“, jenž byla vypracována v rámci semestrální práce pro předmět 4IT495 Simulace systémů (LS 2020/2021) na VŠE v Praze.

Zadání práce

Název simulace: Simulace vývoje epidemie Covid 19 na výletní lodi Diamond Princess

Autor: Martin Šatra (satm03)

Typ modelu: Multiagentní

Nástroj: NetLogo

Definice problému

V dnešní době jsou asi všichni obeznámeni s epidemiologickým problémem viru, Covid 19. Hlavním problémem viru je jeho rychlá šiřitelnost, která dokáže způsobit nemalé problémy. Kvůli obezřetnosti před virem bylo během epidemie nutné v určitých situacích přistoupit i k celkem razantním řešením. Tato simulace se inspiruje jednou právě jednou specifickou událostí, která během pandemie nastala. Konkrétně šlo o internování turistů na výletní lodi Diamond Princess v momentě, kdy se zjistilo, že na palubě je několik nakažených. Prostředí tohoto modelu bude tedy situováno v přístavu, kde loď kotvila. Hlavní simulace pak bude probíhat právě v uzavřeném prostředí výletní lodi, ve kterém se budou pohybovat pasažéři lodi. Přejdeme-li k detailnějšímu popisu situace, pak můžeme na palubě rozlišovat dva druhy lidí turisty a posádku. Jak turisté, tak posádka pak tráví nějaký čas ve svých kajutách. Pro zjednodušení simulace bylo stanoveno, že turisté budou pobývat v kajutách 6 – 20 hodin denně a posádka bude pracovat v dvousměnném provozu a bude pobývat na kajutách 12 hodin denně. Jak se zjistilo, pak se v omezeném množství může vir šířit i ventilačními systémy. Na kajutách by z tohoto důvodu platilo, že je-li pasažér infekční pak má byť velmi omezenou nikoliv však nulovou možnost nakazit jiné pasažéry. V kajutách by platilo, že jedinci nebudou používat roušky i když budou povinné. Po projevení příznaků by jedinec měl opouštět svoji kajutu pouze v nutném případě (stanoveno cca hodinu denně – nutná vycházka, či obstarání jídla v případě, že by posádka byla též kvůli viru indisponována). Platilo by pak, že jedinec se podle tohoto režimu bude chovat od chvíle, kdy se mu poprvé navrátí do své kajuty s již projevujícími se příznaky. Jedinec pak zůstává v tomto režimu (chceme-li karanténě) dokud nemoc neprodělá (stanoveno dle délky karantény 14 dní od prvního projevení příznaků). Po prodělání nemoci jedinec získává imunitu a nemůže se již opětovně nakazit. Cílem simulace by bylo získání představy možném budoucím vývoji situace. Zejména by šlo o zachycování počtu nemocných a infekčních jedinců. Simulace by pak mohla sloužit jako predikce možného průběhu epidemie na tomto omezeném prostoru v následujících dnech a tím pomoci státním orgánům určit, kdy pasažéři mohou loď opustit. Simulace by měla být schopna být aplikována i na jiné obdobné případy.

Metoda

Nejprve byly vyhledány a zpracovány zdroje důležité pro simulaci. Zdroje se týkaly informací o viru, Covid 19, o výletní lodi Diamond Princess a situace na ní nastalé. Za pomocí informací obsažených v těchto zdrojích byly stanoveny důležité parametry modelu a jejich konkrétní hodnoty. Simulace epidemií jsou vděčnou úlohou pro multiagentní systémy. Proto jakožto prostředí prostředí pro vytvoření modelu byl vybrán nástroj Netlogo, jenž zpravidla slouží k vytváření multiagentních simulacích.

Detailní popis modelu

Agenti

Peoplemakers (agenti vytvářející lidi): Jedná se o pomocné agenty, které jsou využívány pouze v rámci metody set-map v rámci přípravy simulace. Pomocí těchto agentů se náhodně v prostorách lodi vytváří agenti – lidé. Tito agenti nemají jiného účelu, a proto jsou po vytvoření lidí eliminováni. People (Lidé): Lidé pohybující se různě po prostorech lodi. Jejich pohyb je zcela náhodný. Každý člověk se uchovává hodnoty těchto vlastností:

  • crew – Vlastnost určující, zda je dotyčný jedinec součástí posádky, či nikoliv. Obor hodnot je TRUE (jedinec je součástí posádky) a FALSE (jedinec je turista).
  • in_the_cabin – Atribut, pomocí kterého se určuje, zda je dotyčný jedinec právě v kajutě, či se volně pohybuje pro prostorách lodi. Obor hodnot je TRUE (jedinec je právě v kajutě) a FALSE (jedinec je mimo kajutu).
  • average-stay-in-the-cabin – Číselný atribut, který vyjadřuje v hodinách dobu, kterou jedinec průměrně denně stráví na kajutě v případě, že není nemocný. Hodnota atribut je náhodně určena při inicializaci simulace jako hodnota mezi 6 až 20 hodinami. Atribut je náhodně určen pouze pro turisty, kteří se mohou pohybovat po lodi dle libosti. Pro posádku je tento atribut nastaven na hodnotu 12 hodin, jelikož je střídání posádky probíhá pro zjednodušení vždy po 12 hodinách (dvousměnný provoz).
  • time-in-place – Každý jedinec si uchovává tento číselný atribut, jakožto hodnotu (v hodinách), po kterou je již mimo kajutu, nebo v kajutě. Po změně stavu „in_the_cabin“ je tedy vždy vynulován. Obor hodnot je tedy u každého jedince určen od 0 po hodnotu atributu „average-stay-in-the-cabin“, v případě, že je tato hodnota větší než-li 12 hodin. Neplatí-li tato podmínka pak maximální hodnota atribut je dána dopočtem (24 – hodnota „average-stay-in-the-cabin“).
  • quarantine – Vlastnost značící, zda je daný jedinec v karanténě, či nikoliv. Do karantény se člověk dostává v momentě, kdy se mu projeví příznaky a poprvé dojde do své kajuty. Obor hodnot je TRUE (jedinec je v karanténě) a FALSE (jedinec není v karanténě).
  • sick – Atribut uchovávající informaci zda je jedinec zdravý, či nemocný. Za nemocného jedince již v modelu považujeme i toho, který je již v inkubační době, jelikož je jen otázkou času, kdy započne být infekční a projeví se mu příznaky nemoci. Obor hodnot je TRUE (jedinec je nemocný) a FALSE (jedinec zdravý).
  • infectious – Atribut uchovávající informaci zda je jedinec nakažlivý a může tedy nakazit okolní agenty. Infekční člověk může být ještě před projevením se symptomů nemoci. Obor hodnot je TRUE (jedinec je infekční) a FALSE (jedinec není infekční).
  • have_symptoms – Atribut uchovávající informaci, zda se již u jedince projevují příznaky choroby. Obor hodnot je TRUE (příznaky se projevují) a FALSE (příznaky se neprojevují). U viru covid 19 je možné, že u některých jedinců nedojde přímo k projevení příznaků, avšak jedinci by stejně jako ti s projevenými příznaky byli odchyceni testy a stejně by skončili v karanténě.
  • time_of_manifestation_of_the_symptoms – Číselný atribut, který určuje v hodinách, za jak dlouho se projeví příznaky nemoci od doby nakažení jedince. Tato hodnota představuje prakticky inkubační dobu. Obor hodnot je dán dle parametrů simulace, hodnota se může tedy pohybovat od 0 do 1200 (dopočet 50 x 24).
  • sick-time – Číselný atribut zaznamenávající v hodinách, jak dlouho je již v daném okamžiku jedinec nemocný. Obor hodnot je dán od 0 do součtu hodnot „time_of_manifestation_of_the_symptoms“ a určené délky nemoci převedené na hodiny (maximálně tedy 1200 + 20 x 24 = 1680).
  • immunity – Atribut uchovávající informaci, zda je jedinec imunní. Obor hodnot je TRUE (jedinec je imunní) a FALSE (jedinec není imunní). V dané simulaci je dáno, že přežije-li jedinec nemoc, získá imunitu a nemůže se již opětovně nakazit.
  • critic-hour – Číslený atribut vyjadřující v hodinách čas od prvního projevení příznaků, kdy bude jedinci „nejhůře“. V tomto čase může u určitou pravděpodobností jedinec podlehnout nemoci. Tato pravděpodobnost je dána parametrem simulace. Obor hodnot je od 0 po 480 (20 x 24).
  • mask – Atribut určující, zda jedinec má nasazen některý druh ochranné masky. Obor hodnot je TRUE (jedinec má nasazenou masku) a FALSE (jedinec nemá nasazenou masku).

Parametry

Parametry modelu lze rozdělit do 5 částí.

Parametry lodě:

  • Number_of_ship_floors – Parametr určující počet pater lodi. Lze zadat hodnotu od 1 do 15.

Parametry počtu lidí:

  • Amount_of_people_on_the_board – Parametr určující celkový počet lidí na lodi. Je počítáno s většími výletními loděmi, proto jsou možné hodnoty nastaveny mezi 1500 a 4000.
  • Number_of_people_in_the_crew - Parametr určující celkový počet lidí, jenž je součástí posádky. Je přednastaveno, že nelze zadat větší počet než v parametru „Amount_of_people_on_the_board“.
  • Number_of_sick_people - Parametr určující celkový počet již nemocných a infekčních lidí. V jaké fázi nemoci se nacházejí je dáno nahodile při inicializaci simulace. Hodnotou může nabývat minimálně 1 (při 0 by simulace neměla smysl) a maximálně uvedený celkový počet lidí, kteří nejsou imunní.
  • Number_of_immune_people – Parametr určující celkový počet imunních lidí na palubě. Jde tedy o lidi, kteří již nemohou být virem nakaženi. Parametr nebude v této simulaci přímo využit. Byl však přidán s ohlédnutím na rozsáhlá probíhající protivirová očkování. V nadcházejících obdobných případech dává jeho využití smysl. Hodnotou může nabývat minimálně 0 a maximálně uvedený celkový počet lidí, kteří nejsou nemocní.

Parametry viru (COVID 19):

  • Infectivity_of_COVID19 – Parametr vyjadřující nakažlivost viru COVID 19. Určuje pravděpodobnost, s jakou se agent vyskytující na stejném místě jako nakažlivý agent může nakazit. Nabývá hodnot od 0 do 1.
  • Mortality_rate – Parametr vyjadřující úmrtnost na virus. Určuje pravděpodobnost, s jakou nakažený jedinec může podlehnout nemoci. Nabývá hodnot od 0 do 0,1.
  • Duration_of_the_disease - Parametr vyjadřující délku nemoci od prvního projevení příznaků. Je uvedená ve dnech a může nabývat hodnot od 1 do 50.
  • Minimum_incubation_time - Parametr vyjadřující minimální inkubační dobu viru. Je uvedená ve dnech a může nabývat hodnot od 0 (může začít prakticky okamžitě) do 20.
  • Maximum_incubation_time - Parametr vyjadřující maximální inkubační dobu viru. Je uvedená ve dnech a může nabývat hodnot od uvedené minimální inkubační doby z předchozího parametru do 50.
  • The_number_of_infectious_days_before_the_symptoms - Parametr vyjadřující maximální počet dní, jež může být jedinec infekční před nastoupením příznaků, tedy stále v inkubační době. Může nabývat hodnot od 0 po rozdíl maximální a minimální možné inkubační doby viru.

Parametry typu ochranné masky:

  • Mask_type – Určuje, který typ ochranné masky je využíván. Jsou zde dvě hodnoty, buď klasická chirurgická rouška, jejíž účinnost je odhadována zhruba na 80% a nebo respirátor typu FFP2 s účinností 94%. [1] V rámci simulace je počítáno s tím, že v případě, kde je agent umístěn do karantény, může z kajuty vycházet pouze omezenou dobu (1 hodinu denně) a vždy pouze s uvedeným typem ochranné masky bez ohledu na vládní opatření (myslím, že v dnešní době je to pomalu považováno za slušnost). Platí, že v kajutě agenti jak nemocní, tak zdraví roušky nenosí a to i v případě vládních nařízeních.

Parametry vládních nařízení:

  • Mandatory_wearing_of_mask – Parametr určuje, zda je v účinnosti vládní nařízení, které všem přikazuje nosit mimo kajutu ochranné masky. Pokud není vládní nařízení v účinnosti, pak platí pouze nošení masek mimo kajutu během doby, kdy je agent v karanténě.

Metody modelu

  • setup – Metoda zajišťující přípravu simulace. Stará se hlavně o vytvoření mapy simulace a počátečního rozmístění lidí na vykreslené lodi.
    • set-map – Metoda vytvářející mapu celé simulace. Vykresluje po levé straně mapy pomyslné šedé molo a u ní kotvící hnědou loď.
    • setup-people – Metoda pomocí níž se při přípravě simulace vytváří agenti (lidé) na vykreslené lodi. Lidé dostávají počáteční hodnoty atributů popsaných výše.
  • go – Metoda zajišťující běh simulace. Obsahuje podmínku, že pokud se již v simulaci nevyskytuje žádný nemocný, pak je průběh simulace automaticky zastaven.
    • walk – Metoda zajišťující náhodný pohyb agentů ve vykreslené lodi.
    • infect – Metoda umožňující nakažení lidí. V případě, že se potká infekční agent s doposud nenakaženým a neimunním agentem, může dojít k nakažení. Pravděpodobnost je dána kombinací vstupních parametrů simulace. Hraje zde roli hlavně to, zda je infekční člověk v kajutě, či se pohybuje volně po lodi, a zda zrovna používá ochranou masku. Samozřejmě se i počítá i s variantou, kdy nenakažený agent zrovna používá respirátor kvůli případnému vládnímu opatření.
    • become-sick – Je to pomocná metoda volaná pouze metodou „infect“. Vznikla tedy pouze pro zpřehlednění a zkrácení kódu.
    • be-sick – Metoda, jenž udržuje aktualizuje čas, jenž je jedinec nemocen.
    • become-infectious – Metoda aktualizující atribut infekčnosti jedince. Pracuje s informací, že u viru COVID 19 je člověk nakažlivý až 2 dny před projevením příznaků.
    • appearance-of-symptoms - Metoda aktualizující informaci o tom, zda se u jedince již objevily příznaky onemocnění.
    • become-healty-and-imune – Metoda, jenž vrací hodnoty atributů jedinců na hodnoty, kdy jsou jedinci zdraví. Navíc tedy přidává informaci o imunitě jedince a ruší jeho karanténu. Předpokládá, že jedinec po zrušení karantény bude opouštět strastiplnou kajutu.
    • succumbing-to-disease – Metoda pracující s parametrem simulace o procentuální úmrtnosti na virus. V „nejhorší“ hodince nakaženého jedince je určeno, zda daný jedinec přežije, či podlehne nemoci.
    • be-in-place – Metoda aktualizující strávený čas agentů mimo kajutu, nebo v kajutě.
    • change-place – Metoda přemisťující agenty do kajut, nebo naopak do volných prostorů lodi. Pracuje pouze pro agenty, kteří nejsou v karanténě.
    • set-the-quarantine – Metoda zjišťující karanténu nemocného jedince. Jak již bylo zmíněno výše, pak se jedinec dostane do karantény od prvního návratu do kabiny po projevu příznaků.
    • be-in-quarantine - Podobná metodě „change-place“, akorát platná pro agenty, kteří jsou umístěny do karantény.
    • update-duration – Metoda aktualizující čas u výstupních monitorů zobrazujících aktuální čas v rámci simulace.

Omezení modelu

Vstupní hodnoty parametrů

Parametry lodě:

  • Number_of_ship_floors: 13[2]

Parametry počtu lidí:

  • Amount_of_people_on_the_board: 3711[3]
  • Number_of_people_in_the_crew: 1145[3]
  • Number_of_sick_people: 10[4]
  • Number_of_immune_people: 0

Parametry viru (COVID 19):

  • Infectivity_of_COVID19: 0,8
  • Mortality_rate: 0,017
  • Duration_of_the_disease: 14 (nastaveno dle doby karantény v ČR)
  • Minimum_incubation_time: 2[5]
  • Maximum_incubation_time: 14[5]
  • The_number_of_infectious_days_before_the_symptoms: 2[6]

Parametry typu ochranné masky:

  • Mask_type: "Respirator (FFP2)"

Parametry vládních nařízení:

  • Mandatory_wearing_of_mask: ON

Výsledky

Závěr

Reference

  1. FastLifeHacks.com. N95 vs FFP3 & FFP2 masks – what’s the difference? [online]. 10.5.2021. [cit. 2021-06-12]. Dostupné z: https://fastlifehacks.com/n95-vs-ffp/#How_big_is_the_Coronavirus_and_can_respirators_filter_it
  2. Princess. Diamond Princess® Deck Plan [online]. 2021. [cit. 2021-06-12]. Dostupné z: https://www.princess.com/deckPlans.do?shipCode=DI
  3. 3.0 3.1 Center for Disease Control and prevention. Public Health Responses to COVID-19 Outbreaks on Cruise Ships — Worldwide, February–March 2020 [online]. 26.3.2020. [cit. 2021-06-12]. Dostupné z: https://www.cdc.gov/mmwr/volumes/69/wr/mm6912e3.htm?s_cid=mm6912e3_w
  4. NAKAZAWA, Eisuke, Hiroyasu INO a Akira AKABAYASHI. Chronology of COVID-19 Cases on the Diamond Princess Cruise Ship and Ethical Considerations: A Report From Japan. Disaster Medicine and Public Health Preparedness [online]. 24.3.2020. 1–8. ISSN 1935-7893. [cit. 2021-06-12]. Dostupné z: doi:10.1017/dmp.2020.50
  5. 5.0 5.1 LékárnaHARTMANN. Co všechno byste měli vědět o koronaviru (COVID-19) [online]. 12.6.2021. [cit. 2021-06-12]. Dostupné z: https://www.lekarnahartmann.cz/co-vsechno-byste-meli-vedet-o-koronaviru-covid-19
  6. Oddělení epidemiologie infekčních nemocíCEM SZÚ. Dobainfekčnosti jedinců infikovaných virem SARS-CoV-2 [online]. 2020. [cit. 2021-06-12]. Dostupné z: http://www.szu.cz/uploads/Epidemiologie/Coronavirus/Nakazlivost/Trvani_infekcnosti_osob_infikovanych_SARS_CoV_2_EPI_fin_2_.pdf

Kód modelu