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