1.7 Introducere in NetLogo NetLogo este o mediu de programare si modelare care a fost creat de Uri Wilenski de la Universitatea Northwestern. A fost creat pentru a invata oamenii cum sa creeze modele, dar si pentru a fi utilizat in cercetarea sistemelor complexe. NetLogo este bazat pe doua limbaje de programare mai vechi, Logo si StarLogo. Toate trei au fost utilizate intensiv in invatamant, incepand de la clasele primare si pana la universitate. In acest curs, vom utiliza NetLogo pentru a ilustra cateva dintre ideile principale ale cercetarii sistemelor complexe, precum si cateva unelte care sunt folosite in studiul sistemelor complexe. In diferitele teme din acest curs, veti utiliza NetLogo pentru a experimenta si a modifica simularile deja existente, iar daca veti alege temele pentru avansati, va veti putea construi propriile voastre simulari. In continuarea acestui capitol, voi trece in revista pasii esentiali pentru descarcarea si utilizarea NetLogo. Nu va ingrijorati daca nu aveti experienta anterioara in programare. NetLogo este usor de utilizat si accesibil pentru incepatori, fiind in acelasi timp un instrument util si pentru experti. Daca ati facut deja programare in NetLogo si sunteti familiarizat cu acesta, puteti sari peste restul videoclipurilor din acest capitol si sa mergeti direct la tema pentru Capitolul 1. Ok, sa incepem! In primul rand, vom descarca NetLogo. Este gratuit si ruleaza sub Windows, Mac OS si Linux. Voi deschide o fereastra de browser si voi merge pe site-ul de unde vom descarca NetLogo, si anume: http://ccl.northwestern.edu/netlogo Acest link il gasiti si pe pagina Materiale Curs de pe website-ul cursului nostru. Se va deschide pagina pentru descarcare, unde veti gasi si cateva informatii despre NetLogo. Voi face click pe descarcare. Mergeti mai departe cu descarcarea. Puteti introduce datele voastre, daca doriti. Este un pas optional. Ok. Eu utilizez Mac OS X, deci voi descarca. Voi salva fisierul pe desktop. Apoi il voi deschide. Ok, aici este folderul numit NetLogo 5.0.3. Daca veti descarca fisierul la o data ulterioara, cand este posibil sa se fi dezvoltat o noua versiune, este posibil sa aveti aici alte cifre. Voi trage folderul pe desktop si voi sterge cele 2 fisiere de instalare. In acest fisier veti gasi NetLogo 5.0.3 sau o posibila versiune ulterioara. Acesta este fisierul pe care trebuie sa-l deschid. Aceasta este versiunea bi-dimensionala a NetLogo. Exista si o versiune tri-dimensionala, NetLogo 3D, la care ne vom uita ceva mai tarziu. Faceti dublu-click pe fisier pentru a-l deschide. Confirm, vreau sa-l deschid. Dureaza ceva pana se deschide, in functie de cat de rapid este computerul vostru. Si iata-l! Acum o sa va arat cum sa rulati un model NetLogo existent. NetLogo vine cu o biblioteca de modele pre-existente. O puteti accesa din meniul File, alegand Models Library. Aici va puteti uita la diferitele discipline si la diferitele modele din cadrul fiecarei discipline. Voi merge la Biologie si apoi la modelul Ants (Furnici). Puteti citi in descriere - proiectul este o colonie de furnici care cauta hrana. Desi fiecare furnica urmeaza un set simplu de reguli, colonia ca intreg are un comportament sofisticat. Sa deschidem modelul. Ok. Primul lucru pe care trebuie sa-l faceti cand deschideti un nou model NetLogo este sa mergeti aici sus, pe tabul Info. Observati ca exista tabul Interface, tabul Info si tabul Code. Tabul Info ne spune cate ceva despre model. Ok, deci gasim aici informatii despre cum functioneaza modelul, cum se utilizeaza, cateva idei despre cum l-ati putea extinde, etc Va puteti uita mai departe aici. Eu ma voi intoarce la interfata. Veti observa aici doua butoane: Setup si Go. Aceste butoane apar in majoritatea modelelor NetLogo, iar primul lucru pe care trebuie sa-l faceti intotdeauna este sa apasati pe Setup. Astfel se vor face setarile pentru simulare. Asadar, aici avem un cuib de furnici, cercul acesta mov cu un punct rosu in mijloc, unde de fapt traiesc toate furnicile. Acest slider, Population, ne arata ca sunt 125 de furnici. Celelalte 3 cercuri sunt stive de hrana si vom vedea aici un grafic care ne arata cata hrana ramane in fiecare stiva, in functie de timp. Furnicile vor pleca din cuib si vor cauta hrana. Voi face click pe Go si le veti vedea cum se misca. O sa opresc modelul aici, apasand din nou pe Go, ca sa evidentiez cateva aspecte. Observati ca furnicutele se misca in mod aleator, pana cand una dintre ele gaseste o bucata de hrana, adica patratelul albastru de aici sau dintr-o alta stiva. Apoi ele aduna hrana si o duc inapoi la cuib. Dar pe masura ce se intorc la cuib, ele lasa in urma o dara de substanta chimica, deseori numita feromon in lumea reala, iar alte furnici pot detecta aceasta urma. Asadar, o furnica lasa o pista pentru a ghida celelalte furnici catre locul unde a gasit hrana. Aceste dare de substanta chimica se imprastie in functie de rata de difuziune setata prin acest slider, adica se indeparteaza de urma originala, o data cu distanta si se evapora in functie de aceasta rata. Deci, atunci cand urmele se evapora, nu vom mai vedea dara aici. O sa incetinesc cu ajutorul acestui slider care controleaza viteza de rulare a modelului. Voi face din nou click pe Go. Vom merge un pic mai incet acum si puteti vedea urmele cum sunt reimprospatate, se evapora, se imprastie, dar daca o singura furnica reuseste sa gaseasca hrana si sa se intoarca la cuib, iar alte furnici gasesc urma inainte ca sa se evapore, atunci ele pot merge dupa acea urma. Puteti vedea cum scade hrana din fiecare stiva. Aici ramane ultima stiva. Voi mari din nou viteza. Puteti vedea furnicile. Voi creste si mai mult viteza. Acum furnicile merg extrem de repede. In acest moment, toata hrana a fost epuizata, iar furnicile nu mai au ce sa caute, prin urmare se misca la intamplare. Voi face click pe Go pentru a opri rularea si veti putea vedea pe acest grafic ca furnicile au gasit toata hrana in... sa vedem marcajul de timp... aproximativ 900 si ceva de pasi. Asadar, asta obtinem cu aceste setari ale perimetrului. Putem modifica un pic aceste setari. Ce se intampla daca vom creste populatia? Voi muta sliderul pana la valoarea maxima de 200. Voi face click din nou pe Setup si apoi pe Go. Sa vedem daca se schimba comportamentul. Bineinteles, intervine si caracterul aleator al modelului. Furnicile se misca la intamplare pana cand gasesc hrana si urmeaza dara daca o intalnesc. Putem vedea ca atunci cand populatia este mai mare, furnicile au gasit toata hrana mult mai repede, cel putin asa observam la aceasta rulare. Dar intrucat intervine caracterul aleatoriu, trebuie sa repetati aceste rulari de mai multe ori pentru a confirma ca intr-adevar ele gasesc hrana mai repede atunci cand populatia este mai mare. Iar acesta este unul din avantajele NetLogo, si anume faptul ca puteti dezvolta aceste modele, iar apoi puteti face experimente cu ele, utilizand diferitele componente ale interfetei pentru a seta diverse variabile. Un lucru util pe care vreau sa-l mentionez este acest tab de Help din meniu, care va permite sa accesati diverse resurse ajutatoare, in principal Manualul de utilizare NetLogo si Dictionarul NetLogo. Daca dau click pe User Manual, ma va duce la o pagina web, unde sunt disponibile tutoriale despre cum sa invatati sa programati in NetLogo, precum si multe alte unelte de referinta. Sa ne intoarcem. Ne-am uitat la interfata si la tabul Info, sa ne uitam acum si la cod. Codul este scris in Limbajul de programare NetLogo, care este un limbaj proprietar, foarte usor de invatat. Vom invata un pic despre acesta in cadrul cursului, bineinteles nu in intregime, pentru ca ar necesita un curs separat, dar va veti face o idee despre cum sa scrieti aceste modele, cum sa le depanati si cum sa le rulati. Pentru cei interesati, NetLogo este bazat pe Java. Este scris in Java, deci asta ar fi in spate, dar nu este nevoie sa stiti asta pentru a utiliza si a programa in NetLogo.