Difference between revisions of "Multi-agent systems/cs"
Daniel sram (talk | contribs) (→Řešený příklad) |
Daniel sram (talk | contribs) (→Logika šíření viru a chování počítačů) |
||
Line 94: | Line 94: | ||
Zbytek práce na nás čeká v záložce Code. Zde je nejprve nutné definovat naše agenty a společně s tím určíme i jejich vlastnosti, které označují, zda-li je počítač nakažený virem, zda je imunní a zda je čas provést antivirovou kontrolu: | Zbytek práce na nás čeká v záložce Code. Zde je nejprve nutné definovat naše agenty a společně s tím určíme i jejich vlastnosti, které označují, zda-li je počítač nakažený virem, zda je imunní a zda je čas provést antivirovou kontrolu: | ||
− | <code> | + | <code>turtles-own [infected? resistant? virus-check-timer]</code> |
− | turtles-own | ||
− | [ | ||
− | |||
− | |||
− | |||
− | ] | ||
− | </code> | ||
− | |||
− | |||
===Výsledek=== | ===Výsledek=== |
Revision as of 18:50, 29 May 2017
Multiagentní systémy jsou tvořeny mnoha navzájem interagujícímí samostatnými výpočetními jednotkami, jenž nazýváme agenty. Tito agenti jsou autonomní jednotky s rozdílnými informacemi, které jsou schopné kooperace, soutěživosti, komunikace mezi sebou a s prostředím, učení se a flexibilního chování. Agenti mohou mít rozdílné zájmy a cíle, popřípadě společně řeší problémy, které by žádný z nich sám nevyřešil. Díky tomu multiagentní systémy umožňují široké využití distribuované výpočetní technologie a paralelního zpracování dat. [1]
Příklady reálné aplikace multiagentních systémů můžeme nalézt od architektury internetu, výrobního průmyslu, lékařství, až po vesmírný program. NASA například multiagentní systémy využívá pro konstelaci satelitů či pro zkoumání povrchu cizích planet. [2]
Contents
Charakteristika multiagentního systému
Agenti
Toto je pouze stručný úvod do teorie agentů, podrobnější výklad lze nalézt v dedikovaném textu o agentech.
Klasifikace agentů
Rozhodování agenta
Interakce agentů
Prostředí
Multiagentní simulace
Reálné aplikace
www.digitaltrends.com/cool-tech/nasa-squishable-robot/
Program NetLogo
NetLogo je programovatelné modelovací prostředí pro vytváření multiagentních simulací. Autorem aplikace je Uri Wilensky. Aplikace je napsána v Javě a díky tomu by měla bezproblémově fungovat na jakékoli platformě s nainstalovaným javovským prostředím. Netlogo je obvzlášť vhodné pro modelování komplexních systémů vyvíjejících se v čase. Uživatel může orchestrovat stovky či tisíce nezávislé operujících agentů. Tento fakt umožňuje provádět rozsáhlé simulace a ověřovat či vyvracet hypotézy, jejichž pravdivost bychom jinak posuzovali velmi složitě.
Netlogo má navíc vydatnou dokumentaci, navíc obsahuje knihovnu připravených modelů, se kterými si může uživatel hrát a objevovat tak funkčnosti prostředí. Se znalostmi ukrytými v dokumentaci je uživatel schopen zkoumat chování komplexního multiagentního systému za měnících se podmínek a z různých úhlů pohledu.[3]
Netlogo je vhodné pro simulace z oblasti:
- Přírodních věd
- Biologie
- Chemie
- Lékařství
- Matematiky
- Sociálních věd a sociální psychologie
- Ekonomie
- Informačních technologií
Řešený příklad
Vyzbrojeni nově nabytými vědomostmi se nyní můžeme pustit do řešení reálné simulace. Příklad se bude zabývat šířením viru na počítačové síti. [4] Pro řešení příkladu si nejprve stáhněte program NetLogo.
Příprava prostředí
Před samotným programováním, na které se jistě všichni těšíte, si nejprve vytvořme grafické komponenty, které nám celou simulaci obohatí o možnost ovlivňovat vstupní parametry a názorně sledovat tížený výsledek.
Začněme definováním vstupních parametrů, jenž budeme k naší simulaci potřebovat, jedná se o proměnné:
- number-of-nodes - počet počítačů
- average-node-degree - průměrný počet vazeb mezi počítači
- initial-outbreak-size - počáteční počet nakažených počítačů
- virus-spread-chance - riziko přenosu viru na jiný počítač
- virus-check-frequency - četnost antivirové kontroly (při použití hodnoty 1 bude ke kontrole docházet každé kolo)
- recovery-chance - šance odhalení viru na nakaženém počítači
- gain-resistance-chance - šance na získání imunity vůči viru, který počítač nakazil
Hodnoty výše uvedených proměnných můžete používat libovolné, ovšem pro účely tohoto příkladu budeme simulovat 150 počítačů, s průměrnou vazbu 6, počátečním počtem virů tři, rizikem přenosu 2,5%, antivirovou kontrolou probíhající každé kolo a šancí na odhalení viru a získání imunity 5%.
Dále vytvořme tlačítka a na ně navázané metody setup a go, u kterého navíc zaškrtněme checkbox Forever.
K dokonalosti už zbývá pouze graf, na kterém uvidíme závislost zranitelných, nakažených a imunních počítačů přehledněji, než v samotné simulaci. K tomuto účelu použijme komponentu Plot a do Plot pens definujme:
Color | Pen name | Pen update commands |
---|---|---|
zranitelné | plot (count turtles with [not infected? and not resistant?]) / (count turtles) * 100 | |
nakažené | plot (count turtles with [infected?]) / (count turtles) * 100 | |
imunnní | plot (count turtles with [resistant?]) / (count turtles) * 100 |
Logika šíření viru a chování počítačů
Zbytek práce na nás čeká v záložce Code. Zde je nejprve nutné definovat naše agenty a společně s tím určíme i jejich vlastnosti, které označují, zda-li je počítač nakažený virem, zda je imunní a zda je čas provést antivirovou kontrolu:
turtles-own [infected? resistant? virus-check-timer]
Výsledek
Kompletní projekt obsahující řešený příklad je možné stáhnout zde.
www.netlogoweb.org/launch#http://www.netlogoweb.org/assets/modelslib/Sample%20Models/Networks/Virus%20on%20a%20Network.nlogo
Samostatné cvičení
K upevnění znalostí ze společně řešeného příkladu si nyní můžete samostatně vyzkoušet rozšířit model o některou z následující skutečností:
Šíření viru emailem
Předpokládejme, že virus je obšťastněn schopností poslat sám sebe emailem všem kontaktům v adresáři. Jelikož existence kontaktu v nečím emailovém adresáři není oboustranná vazba, je potřeba model upravit tak, aby používal jednostranné vazby namísto oboustranných. Jak se po úpravě změnilo šíření viru?
Existence více virů
V reálném světě ovšem neexistuje pouze jeden počítačový virus a pokud je nějaký počítač nakažen jedním virem, riziko nakažení dalším virem je vyšší. Zaneste do simulace další typ viru a upravte model tak, aby reflektoval skutečnost, že nakažený node je náchylnější k nákaze jiným mallwarem. Jakým způsobem spolu dva počítačové viry interagují?
Mutace viru
Tvůrcem největších vrásek na čele leckterého bezpečnostního technika jsou takzvané metamorfické viry. To jsou viry, které se umí transformovat, mutovat a přizpůsobovat se měnícím se podmínkám počítačové ochrany. V reálném světě to znamená, že virus může být imunní vůči antivirovým programům. V našem modelu to znamená nutnost upravit zdrojový kód tak, aby umožňoval znovu-nakažení počítače virem, který se cestou od dříve nakaženého nodu a zpět zmutoval. Jaký má tato skutečnost dopad na náš model?
Seznam referencí
- ↑ Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations Yoav Shoham, Kevin Leyton-Brown, Cambridge University Press 2009, 473 s. ISBN 0521899435 [cit. 2017-05-27]
- ↑ Multiagent Systems Gerhard Weiss, MIT Press 2016, 143 s. ISBN 978-0-262-01889-0 [cit. 2017-05-27]
- ↑ 3.0 3.1 Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. [cit. 2017-05-28]
- ↑ Stonedahl, F. and Wilensky, U. (2008). NetLogo Virus on a Network model. http://ccl.northwestern.edu/netlogo/models/VirusonaNetwork. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. [cit. 2017-05-28]