NetLogo

programovací jazyk

NetLogo je multiplatformní prostředí určené pro multiagentní modelování komplexních systémů.[1] Zároveň se jedná o jazyk pro programování těchto simulací, založený na programovacích jazycích StarLogo a Logo.

NetLogo
Vznik1999
AutorUri Wilensky
VývojářNorthwestern University, Center for Connected Learning and Computer-Based Modeling
Poslední verze6.1.1 (Q3 2019)
Ovlivněn jazykyStarLogo, Logo
OSmultiplatformní
LicenceGNU GPL v2
Webccl.northwestern.edu/netlogo

Vlastnosti editovat

NetLogo má prostředí navržené pro zkoumání emergentních jevů, tvorbu simulací a jejich vizualizaci s využitím připravených grafických prvků. Ovládání je možné pomocí vkládání přepínačů, posuvníků, nabídek, různých vstupů a jiných prvků rozhraní. Prostředí obsahuje nástroje pro import a export datových formátů využívaných v aplikacích geografických informačních systémů. Součástí NetLoga je i nástroj HubNet umožňující propojení více uživatelů, kteří se tak mohou společně podílet na simulacích v rolích jednotlivých agentů.[2]

Název NetLogo odkazuje slovem net (česky síť) na povahu jevů, pro jejichž zkoumání NetLogo slouží – decentralizované, vzájemně propojené prvky a systémy.[3] Druhá část názvu je odkazem na programovací jazyk Logo, jehož dialektem NetLogo je. Logo se řadí k dětským jazykům, jako je např. robot Karel či Baltík. Tím pádem i NetLogo je přístupné uživatelům bez pokročilých znalostí programování, cílí především na výuku ve školách, vědce a jiné odborníky.

Daní za použití jazyka NetLogo je však absence objektových vlastností a rovněž nedostatečná výkonnost při složitějších simulacích, proto se nehodí pro řešení složitých úloh. Ty je vhodnější řešit v některém z robustnějších prostředí, jako je např. Jade. NetLogo coby vývojové prostředí zaostává i v jiných ohledech, při editaci kódu nepotěší absence našeptávání či opravy syntaktických a sémantických chyb v reálném čase. Objevují se také problémy s kompatibilitou při přenášení hotových modelů mezi různými verzemi NetLoga.[4]

 
Znázornění simulace v grafickém rozhraní

Oblast použití editovat

NetLogo je vhodné pro modelování komplexních systémů, které se vyvíjejí v čase. Vývoj systému přitom vyplývá z chování mnoha samostatných agentů, určeného souborem pravidel, která mohou zahrnovat interakci s jinými agenty a s prostředím. Díky tomu lze studovat souvislost mezi chováním jednotlivce na lokální úrovni a výsledkem na globální úrovni celého systému – tzv. emergence.[1] Aplikační oblast je široká, přiložená knihovna modelů obsahuje příklady z ekonomie, biologie, fyziky, chemie, sociálních věd a systémové dynamiky.[5] Přiložené modely je možné dále upravovat nebo vytvářet modely vlastní.

NetLogo má mnoho aktivních uživatelů[1] a ke vzdělávacím účelům je využíváno v široké škále amerických i světových škol, od základních až po univerzity.[6]

Ukázka kódu editovat

Základními stavebními kameny NetLoga jsou agenti označovaní jako želvy (turtles), kteří se mohou pohybovat po dlaždicích (patches). Dále zde existují spoje (links), které umožňují modelovat vztahy mezi agenty, případně jejich skupiny.[1] Následující ukázky demonstrují způsob programování v NetLogu.

Definování nového druhu agentů (lidí) a přiřazení proměnné smer každému z agentů:

breed [people person]
people-own [smer]

Náhodné rozmístění těchto lidí v prostoru:

ask people [setxy random-pxcor random-pycor]

Všichni lidé na červené dlaždici jsou zrušeni:

 ask people [
    ask patch-here [
      if pcolor = red [
        ask myself [
          die
        ]
      ]
    ]
  ]

Historie a vývoj editovat

NetLogo vytvořil Uri Wilensky, ředitel Center for Connected Learning and Computer-Based Modeling na Northwestern University v Illinois. Jeho předchůdcem bylo StarLogoT, které Wilensky vytvořil roku 1997. NetLogo 1.0 bylo představeno roku 2002. Verze 6.0.2 byla vydána v srpnu 2017. Na vývoj přispěla především National Science Foundation. NetLogo je napsáno převážně v jazyce Scala, některé části jsou psány v Javě. Současně s klasickou verzí je vyvíjeno také NetLogo 3D (prozatím jako samostatná aplikace) a NetLogo Web, které nabízí omezenou sadu funkcí, zato ale funguje v běžném webovém prohlížeči na všech platformách.

NetLogo je volně dostupné jako open-source pod licencí GNU GPL verze 2. Zdrojové kódy aplikace a některých doplňků jsou volně přístupné na GitHubu, který v tomto projektu slouží také k návrhům nových funkcí a hlášení problémů – k únoru 2018 na vyřešení čekalo 312 problémů a z toho 93 bugů.[7] Knihovna ukázek kódu a modelů, která je dodávaná spolu s NetLogem, je taktéž dostupná na GitHubu, jednotlivé modely jsou ale poskytnuty pod různými licenčními podmínkami.

Kromě angličtiny bylo rozhraní programu postupně lokalizováno do španělštiny, čínštiny, ruštiny a japonštiny. Oficiální uživatelský manuál je dostupný v anglickém, čínském a českém jazyce.

Odkazy editovat

Související články editovat

Externí odkazy editovat

Reference editovat

  1. a b c d NetLogo User Manual [online]. [cit. 2009-01-23]. Dostupné online. 
  2. Daniel Kornhauser; William Rand; Uri Wilensky http://ccl.northwestern.edu/papers/2007/Kornhauser-Agent-2007.pdf
  3. NetLogo 6.0.2 User Manual: FAQ (Frequently Asked Questions). ccl.northwestern.edu [online]. [cit. 2018-02-24]. Dostupné online. 
  4. NetLogo 6.0.2 User Manual: Transition Guide. ccl.northwestern.edu [online]. [cit. 2018-02-24]. Dostupné online. 
  5. NetLogo Models Library [online]. [cit. 2009-01-23]. Dostupné online. 
  6. NetLogo Courses. ccl.northwestern.edu [online]. [cit. 2018-02-24]. Dostupné online. 
  7. NetLogo/NetLogo. GitHub [online]. [cit. 2018-02-24]. Dostupné online. (anglicky)