Difference between revisions of "Multiagentní simulace explozí"
Line 72: | Line 72: | ||
V této proceduře se nejprve vynulují výsledky předchozího běhu modelu. Následně se nastaví výchozí tvar částicím emitovaných výbušninou, nastaví se výbušnina, postaví se domy, zdi a rozmístí se lidé. Na konci procedury se resetuje čítač kroků. | V této proceduře se nejprve vynulují výsledky předchozího běhu modelu. Následně se nastaví výchozí tvar částicím emitovaných výbušninou, nastaví se výbušnina, postaví se domy, zdi a rozmístí se lidé. Na konci procedury se resetuje čítač kroků. | ||
+ | |||
*'''go''' | *'''go''' | ||
Line 94: | Line 95: | ||
Procedura kontroluje, zda čítač kroků nepřesáhl hodnotu 55, tj. hodnotu, kdy poslední částice dosáhne hranice sledovaného světa. Pokud je podmínka splněna, model se zastaví. Na dalším řádku voláme proceduru explode, která způsobí výbuch a vznik tlakové vlny v podobě částic. V následující části procedury se nastaví částici hodnota přetlaku v závislosti na hmotnosti výbušniny v ekvivalentu kg TNT a vzdálenosti od centra, kde je výbušnina umístěna. Následuje podmínka kontrolující barvu částice - za určitých podmínek popsaných dále se částice zbarví zeleně a sníží hodnotu svého přetlaku až o polovinu. Další podmínka se týká možnosti posunu částice o dvě jednotky dopředu - tuto podmínku jsem přidal z estetických důvodů. Předtím se totiž stávalo, že se model zastavoval, ale na obrazovce byly patrny ještě některé částice. V dalším kódu se částice posune o vzdálenost jedna dopředu a působí na objekty. Poslední podmínka zodpovídá za to, že vidíme pouze první dvě sady částic, což vyvolává dojem tlakové vlny. Tato podmínka je také důležitá pro optimalizaci výkonnosti modelu, protože výrazně omezuje počet aktuálních částic, čímž model značně zrychluje. | Procedura kontroluje, zda čítač kroků nepřesáhl hodnotu 55, tj. hodnotu, kdy poslední částice dosáhne hranice sledovaného světa. Pokud je podmínka splněna, model se zastaví. Na dalším řádku voláme proceduru explode, která způsobí výbuch a vznik tlakové vlny v podobě částic. V následující části procedury se nastaví částici hodnota přetlaku v závislosti na hmotnosti výbušniny v ekvivalentu kg TNT a vzdálenosti od centra, kde je výbušnina umístěna. Následuje podmínka kontrolující barvu částice - za určitých podmínek popsaných dále se částice zbarví zeleně a sníží hodnotu svého přetlaku až o polovinu. Další podmínka se týká možnosti posunu částice o dvě jednotky dopředu - tuto podmínku jsem přidal z estetických důvodů. Předtím se totiž stávalo, že se model zastavoval, ale na obrazovce byly patrny ještě některé částice. V dalším kódu se částice posune o vzdálenost jedna dopředu a působí na objekty. Poslední podmínka zodpovídá za to, že vidíme pouze první dvě sady částic, což vyvolává dojem tlakové vlny. Tato podmínka je také důležitá pro optimalizaci výkonnosti modelu, protože výrazně omezuje počet aktuálních částic, čímž model značně zrychluje. | ||
+ | |||
*'''build-houses''' | *'''build-houses''' |
Revision as of 15:25, 7 June 2015
Tato stránka slouží jako výzkumná zpráva simulace "Multiagentní simulace explozí" k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2014/2015) na VŠE v Praze (Fakulta: FIS, Katedra: KIT, Obor: Informační systémy a technologie).
- Název simulace: Multiagentní simulace explozí
- Předmět: 4IT495 Simulace systémů (LS 2014/2015)
- Autor: Bc. Maxim Rytych, xrytm00
- Typ modelu: Multiagentní
- Modelovací nástroj: Netlogo 5.2
Contents
Definice problému
Exploze je fyzikální jev, při kterém dochází mimo jiné k náhlému a prudkému lokálnímu zvýšení tlaku. Tato změna tlaku se následně šíří do okolí jako tlaková vlna.[1] Jedním z nejdůležitějších parametrů je hodnota přetlaku Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \Delta{P}} , tj. rozdílu oproti okolnímu tlaku, kterou exploze vyvolá. Tento parametr je používán v řadě příruček, technických dokumentací a odborných manuálů pro zhodnocení způsobených škod. Abstrahuje se například od tvaru tlakové vlny, doby působení na objekt atd.[2] Maximální hodnotu přetlaku můžeme vypočítat jako funkci hmotnosti výbušniny a vzdálenosti od místa exploze zavedením tzv. škálované vzdálenosti:[3]
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle Z=\frac{R}{W^\frac{1}{3}}}
kde:
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle R} ... vzdálenost od místa exploze
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle W} ... hmotnost výbušniny v ekvivalentu kg TNT
Existuje řada rovnic pro určení hodnoty maximálního statického přetlaku Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p_s \sim Z} . Nejznámějšími semiempirickými modely jsou rovnice Brodeho a Henrycha. Přesnějším je model Henrycha, který rozlišuje tři zóny: blízkou, střední a vzdálenou.[4]
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p_s=\frac{1407,2}{Z} + \frac{554,0}{Z^2} - \frac{35,7}{Z^3} + \frac{0,625}{Z^4}} pro Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle 0,05 \le Z \le 0,3}
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p_s=\frac{619,4}{Z} - \frac{32,6}{Z^2} + \frac{213,2}{Z^3}} pro Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle 0,3 \le Z \le 1,0}
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p_s=\frac{66,2}{Z} + \frac{405,0}{Z^2} - \frac{328,8}{Z^3}} pro Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle 1,0 \le Z \le 10,0}
kde:
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle p_s} ... hodnota přetlaku v kPa
Metoda
Multiagentní simulace není zřejmě nejvhodnější pro tento typ modelu, nicméně je z mého pohledu nejvhodnější v porovnání s ostatními modely probíranými v kurzu. Nástroj pro provedení simulace také neodpovídá komplexitě oblasti, ale je jediným nástrojem, který byl v kurzu pro multiagentní simulace používán. Ze všech probíraných modelů mě nejvíce zaujaly právě multiagentní - mimo jiné z důvodu nástroje NetLogo, které na mě působilo uživatelsky přívětivě a poskytovalo řadu funkcionalit, mezi které v nepolední řadě patřilo uživatelské rozhraní se zajímavými grafickými prvky. Na samotných multiagentních simulacích mě zaujala komplexita, která vychází z interakcí agentů s okolím a mezi sebou navzájem.
Model
Předpoklady a omezení
- Model se zabývá působením přetlaku na objekty (lidé, budovy, ostatní překážky)
- Pro výpočet přetlaku je použit obecný vzorec, který určuje hodnotu přetlaku v kPa v závislosti na hmotnosti nálože v ekvivalentu kg TNT a vzdálenosti objektu od místa exploze
- Model předpokládá tlakovou vlnu kulovitého tvaru
- Model nebere v úvahu nerovnosti terénu
- Model nezohledňuje teplotu a tlak okolního prostředí, ve kterém proběhne výbuch - parametry, které také ovlivňují hodnotu přetlaku
- Model nepracuje s odrazy nebo ohybem vlnění na překážkách, pouze v určitém smyslu zohledňuje absorpci vlnění překážkou
- Model uvažuje výbušninu bez střepin, tj. výbuch se projeví pouze jako tlaková vlna
- Model nezohledňuje dobu působení přetlaku na objekt
Vlastní model
Entity modelu
- breed [wave-particles wave-particle] ... částice tlakové vlny
- breed [explosives explosive] ... výbušnina
- breed [people person] ... lidé
- breed [walls wall] ... zdi
- breed [houses house] ... domy
- breed [windows window] ... okna v domech
Vlastnosti entit
- wave-particles-own [overpressure wave-id] ... hodnota přetlaku v okolí částice a "id" tlakové vlny
Procedury
- setup
to-setup clear-all set-default-shape wave-particles "dot" setup-explosives build-houses houses-amount build-walls walls-amount setup-people people-amount reset-ticks end
V této proceduře se nejprve vynulují výsledky předchozího běhu modelu. Následně se nastaví výchozí tvar částicím emitovaných výbušninou, nastaví se výbušnina, postaví se domy, zdi a rozmístí se lidé. Na konci procedury se resetuje čítač kroků.
- go
to go if ticks > 55 [stop] ask explosives [explode] ask wave-particles [ set overpressure over_pressure TNT-weight distancexy 0 0 if color = green [set overpressure overpressure * (random-float 0.5)] if not can-move? 2 [ ht ] fd 1 impact-houses impact-windows impact-walls impact-people if wave-id > 1 [die] ] tick end
Procedura kontroluje, zda čítač kroků nepřesáhl hodnotu 55, tj. hodnotu, kdy poslední částice dosáhne hranice sledovaného světa. Pokud je podmínka splněna, model se zastaví. Na dalším řádku voláme proceduru explode, která způsobí výbuch a vznik tlakové vlny v podobě částic. V následující části procedury se nastaví částici hodnota přetlaku v závislosti na hmotnosti výbušniny v ekvivalentu kg TNT a vzdálenosti od centra, kde je výbušnina umístěna. Následuje podmínka kontrolující barvu částice - za určitých podmínek popsaných dále se částice zbarví zeleně a sníží hodnotu svého přetlaku až o polovinu. Další podmínka se týká možnosti posunu částice o dvě jednotky dopředu - tuto podmínku jsem přidal z estetických důvodů. Předtím se totiž stávalo, že se model zastavoval, ale na obrazovce byly patrny ještě některé částice. V dalším kódu se částice posune o vzdálenost jedna dopředu a působí na objekty. Poslední podmínka zodpovídá za to, že vidíme pouze první dvě sady částic, což vyvolává dojem tlakové vlny. Tato podmínka je také důležitá pro optimalizaci výkonnosti modelu, protože výrazně omezuje počet aktuálních částic, čímž model značně zrychluje.
- build-houses
to build-houses [h] create-houses h ask houses[ set shape "square" set color grey set size 10 setxy (min-pxcor + (size / 2) - 1 + random ((max-pxcor * 2) - ((size / 2) + 2))) (min-pycor + (size / 2) - 1 + random ((max-pycor * 2) - ((size / 2) + 2))) if xcor >= -5 and xcor <= 0 [set xcor xcor - 20] if xcor <= 5 and xcor > 0 [set xcor xcor + 20] if ycor >= -5 and ycor <= 0 [set ycor ycor - 7] if ycor <= 5 and ycor > 0 [set ycor ycor + 7] make-windows 1 (- size / 5) (- size / 2.6) (size / 3) 0 make-windows 1 (size / 5) (- size / 2.6) (size / 3) 0 make-windows 1 (size / 5) (size / 2.6) (size / 3) 0 make-windows 1 (- size / 5) (size / 2.6) (size / 3) 0 make-windows 1 (- size / 2.6) (- size / 5) (size / 3) 90 make-windows 1 (- size / 2.6) (size / 5) (size / 3) 90 make-windows 1 (size / 2.6) (size / 5) (size / 3) 90 make-windows 1 (size / 2.6) (- size / 5) (size / 3) 90 ] end
Procedura přijímá argument obsahující počet vytvářených domů. Půdorys domu je čtverec o velikosti hrany 10. Procedura řeší umístění domu tak, aby se nenacházel na místě výbušniny a zároveň aby nepřesáhl hranice světa. V proceduře se volá procedura make-windows, která domu vytvoří okna.
Výsledky
Závěr
Kód
Reference
- ↑ Výbuch. Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 25. 2. 2015 [cit. 2015-06-07]. Dostupné z: http://cs.wikipedia.org/wiki/V%C3%BDbuch
- ↑ GELFAND, Boris a M. SILNIKOV. BLAST EFFECTS CAUSED BY EXPLOSIONS. 2004. Dostupné z: http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA433657
- ↑ ELSAYED, Nabil Mohamed a James L ATKINS. Explosion and blast-related injuries: effects of explosion and blast from military operations and acts of terrorism. Boston: Academic Press/Elsevier, 2008, xv, 380 p. ISBN 01-236-9514-7.
- ↑ ELSAYED, Nabil Mohamed a James L ATKINS. Explosion and blast-related injuries: effects of explosion and blast from military operations and acts of terrorism. Boston: Academic Press/Elsevier, 2008, xv, 380 p. ISBN 01-236-9514-7.