Introducere la studii complexe, tema 1, optiunea avansati Acesta este un tutorial video care va va ghida pentru realizarea temei pentru avansati Va rog deschideti modelul NetLogo denumit "multipleants.nlogo" Pe care il gasiti si pe site, sectiunea materiale de curs Cand se deschide interfata ar trebui sa arate asa Am facut deja cateva modificari in primele doua sectiuni ale temei Primul lucru care vreau sa-l facem este sa recoloram furnicile astfel incat sa ramana mereu rosii Asa ca voi sterge aceste doua linii de cod pentru a nu crea confuzie Ne intorcem la interfata Tema ne cere sa cream si o dara de feromoni pe care furnicile sa o lase pentru ca celelalte furnici sa le urmeze deindata ce gasesc mancare, iar pentru a testa asta, pentru a vedea daca se vor misca mai repede prin metoda curenta Haideti sa-i dam drumul Mergeti in sectiunea "Cod" Mai intai sa cream o variabila pentru parcele pe care o vom denumi "pheromone" Facem asta aici Apoi mergem mai jos pana la "set up" si va fi nevoie sa pregatim parcelele astfel incat sa aiba si feromoni Asa vai schimba "set up nest" in "set up patches" Vom cere parcelelor sa initializeze feromonii la 0 Haideti sa verificam Dorim sa facem si furnicile sa lase o dara de feromonii dupa ce mananca si se intorc la musuroi Si am dori sa avem alte furnici care sa urmeze aceste dare Pentru a face asta o sa mergem mai jos la procedura pentru musuroi/nest Si vom adauga o linie pentru a seta nivelul feromonilor parcelelor. Vom seta deci nivelul feromonilor la nivelul curent plus unu Iar pentru a vizualiza cat de multi feromoni sunt pe fiecare parcela, voi seta denumirea parcelelor sa fie pur si simplu valoarea numerica a feromonilor ei Puteti folosi si culori diferite daca doriti, dar consider ca este interesant de folosit valoarea numerica Haideti sa verificam si sa vedem daca functioneaza Se pare ca functioneaza Se observa cum furnicile aduna mancarea si se intorc la musuroi si lasa in urma o dara de feromoni care creste numeric de fiecare data cand se intampla asta Acum dorim ca feromonii sa se evapore in timp, asa ca ne vom intoarce la cod Vom crea o noua linie in procedura "go" pe care o vom denumi "evaporate pheromone" Acum o sa scriem si o procedura pentru evaporarea feromonilor Am dori ca feromonii sa aiba o probabilitate de evaporare ceea ce inseamna un numar intre 0 si 1 Vom seta o variabila temporala pe care o vom denumi x si care va avea o valoare aleatoare intre 0 si 1 Apoi vom cere parcelelor cu o valoare a feromonilor mai mare ca 0 deci orice parcela care are feromoni daca variabila x este mai mica decat probabilitatea pe care noi o hotaram folosind sliderul de la interfata, si pe care-l vom denumi probabilitate de evaporare, atunci vom seta feromonii sa fie prezenta valoare minus unu Deci practic feromonii se vor evapora treptat Si deasemeni am dori sa vedem asta asa ca vom reseta denumirea parcelelor/plabel dupa noul numar Va trebui sa adaugam si sliderul despre care v-am vorbit, iar pentru a face asta mergem in interfata la acest buton, dupa care alegem "slider" si-l vom pune aici deocamdata si-l vom denumi probabilitate de evaporare Va fi un numar intre 0 si 1 Ii vom atribui o rata de crestere de .01 si va porni de la .1 Apasam OK As dori sa mut acest sliderul astfel incat sa fie sub celalalt slider Asa ca o sa mut putin mai jos acest grafic si o sa-l aliniez cu partea de jos a hartii Si apoi mut acest slider deasupra O sa-l facem de aceeasi dimensiune ca si celelalte slidere Pare a fi in regula O sa verific Ne intoarcem la interfata si rulam Nivelul feromonilor ar trebui sa scada, si se pare ca asa se si intampla Asta-i bine Acum ultima problema este sa facem si celelalte furnici sa urmeze darele de feromoni Haideti sa facem si asta Aprorpo, modul de a selecta ferestre diferite din interfata este de a da click si selecta ferestrele cu cursorul sau faceti click dreapta dupa ce ati selectat butonul si apoi il puteti edita in diverse moduri Acum hai sa ne intoarcem la cod si vom schimba modul in care furnicile se misca in lumea creata Merge in procedura "to look for food" si vom adauga cateva linii de cod Vom introduce cateva variabile noi in aceasta procedura Fie urma de feromon din fata simtita la unghi 0/let pheromone ahead be scent at angle 0 O sa explic imediat ce inseamna asta Fie urma de feromon din dreapta simtita la unghi 45/let pheromone right be scent at angle 45 Fie urma de feromon din stanga simtita la unghi -45/let pheromone left be scent at angle -45 Acest cod este similar modelului ant.netlogo in libraria de modele Acest cod cere fiecarei furnici sa se uite in fata, la stanga si la dreapta pentru a-si da seama daca sunt feromoni acolo, si daca sunt sa urmeze acea cale Si daca nu sunt sa aleaga o cale la intamplare Acum vom scrie o serie de afirmatii daca/if else daca feromonul din dreapta este mai mare decat cel din fata sau feromonul din stanga este mai mare decat feromonul din fata Inchidem paranteza daca feromonul din dreapta este mai mare decat feromon din stanga va merge la dreapta 45 iar daca nu, va merge la stanga 45 Daca niciuna din reguli nu sunt adevarate inseamna ca fie e feromon in fata fie nu e deloc Sa zicem deci, daca feromon din fata egal 0 atunci o sa continue cu restul din cod O sa punem paranteza aici si o paranteza de inchidere Haideti sa-l verificam Ne spune ca nu este nimic denumit "scent-at-angle" Si este adevarat, nu am setat acest termen inca O sa mergem mai jos la sfarsitul codului si o sa scriem un nou raport to-report scent-at-angle, si vomn introduce unghi/angle fie p parcela dreapta si in fata Acestia sunt termeni simpli ce alcatuiesc NetLogo Daca doriti sa aflati ce inseamna un termen, il puteti selecta, click dreapta pe el, selectati optiunea ajutor rapid si veti avea acces la un scurt rezumat asupra respectivului termen Revening, dreapta si in fata, si vom folosi unghiul pe care deja l-am introdus si distanta care este 1 Daca p=nicio variantaimeni/nu exista feromoni, atunci raport 0 In caz contrar raportul va fi egal cu feromonul prezent Ar trebui sa fie suficient Haideti sa verificam codul Ne lipseste o paranteza de inchidere Observ ca deasemenea mai lipsesc cateva paranteze, asa ca o sa le adaug acum Verificam din nou Totul pare in regula Revenim la interfata, si se pare ca totul se deruleaza cum ar trebui Am putea face o analiza mai riguroasa si sa facem cateva enunturi mai elaborate despre cum functioneaza dar o sa va las voua aceasta oportunitate Observ totusi ca multe furnici colecteaza hrana de la marginea hartii si putem corecta asta mergand in setari bifam optiunile de adunare orizontala si verticala, si apoi apasam OK Acum furnicile sunt foarte rapide in a gasi toata mancarea - 73 miscari Iar in modelul initial, inainte de adaugarea feromonilor, am avut 128 miscari Asta a fost tot pentru tema 1 Sper ca v-a placut acest tutoria si ne vedem data viitoare