A więc, pytanie to wymaga od nas utworzenia gniazda
w środku świata z 9 obszarami żerowania
Stworzymy teraz gniazdo w kolorze pomarańczowym
Więc, przejdźmy do kodu
Najpierw dodamy nową zmienną 'turtle'
Więc w pierwszej linii kodu, w której mamy
'turtles own', wpiszmy 'return to nest?' (powrót do gniazda)
znak zapytania
Po czym stworzymy nową zmienną obszaru (patch)
Wpiszmy tu 'patches-own' nawias [nest?] znak zapytania i zamknąć nawias
Teraz musimy dodać kilka linii w procedurze Setup
więc w poleceniu
'ask turtles' zróbmy ustawienie
'return to nest?' (powrót do gniazda) na "fałsz"
Jeśli tego nie zrobimy, Netlogo ustali
nową zmienną na 'prawdę' jako wartość domyślną
Teraz dodamy nową linię
która stanie się nową procedurą
którą nazwiemy 'set-up nest' (załóż gniazdo)
Teraz, aby dodać nową procedurę
zacznijmy od 'to set-up nest'
i dodajmy 'ask patches'
To wprowadza nas w kontekst obszarów (patch)
by ustawić zmienną 'nest' na wartość 'prawda'
gdy tylko obszar znajdzie się w odległości 2 jednostek od źródła
Aby to zapisać użyjemy
odległości bazowej 'distance 0 0'
w nawiasach okrągłych, <2
jeżeli obszar (patch) spełni te kryteria
jeśli 'nest' ma wartość 'prawda'
ustawmy pcolor na pomarańczowy
Zawsze kończymy procedurę wyrażeniem 'end'
Sprawdźmy teraz, czy wszystko jest ok
Wygląda na to, że zapomniałem zamknąć nawias
dodajmy go
teraz chyba jest dobrze
Wróćmy do interfejsu i wybierzmy Setup
Widzimy, że trudno stwierdzić, czy mamy
tutaj 9 obszarów, ale założę, że tak jest
Mamy tu pomarańczowe gniazdo
w środku świata
Następnie proszeni jesteśmy o napisanie części kodu
który spowoduje, że mrówki wrócą do gniazda
po zjedzeniu pokarmu
zanim ponownie wyruszą na poszukiwanie pożywienia
Jest wiele sposobów, jakimi możemy to zrobić
Sposób, w który ja to zrobię jest następujący:
Po pierwsze, chciałbym nieco uprościć
procedurę 'to go'
więc stworzę nową procedurę
którą nazwę 'look for food' (szukaj pokarmu)
Wytnę teraz tę sekcję
napiszę nową linię procedury
i wkleję ją
A teraz powrócę do
procedury 'go' po czym wstawię
'ifelse return-to-nest? is 'false'
wtedy będziemy szukać pokarmu, 'look-for-food'
i konsekwentnie 'ifelse return-to-nest?' jest prawdą
wtedy wrócimy do gniazda
'[return-to-nest]'
Jeszcze nie napisaliśmy procedury
return-to-nest. Zrobimy to w następnej kolejności
Zanim to uczynimy, dobrze jest
sprawdzić kod, by zobaczyć
czy dotychczas nie zrobiliśmy błędów
Wcisnę teraz Check
Widzimy, że nie napisaliśmy
procedury 'return-to nest'
Zauważyłem również, że zapomniałem o znaku równości
po tej linii, więc dopiszę go
Napiszemy procedurę 'return-to-nest'
W tym celu napiszemy po prostu
'face patch 0 0' (zwróć się do obszaru 0 0) który jest źródłowy
i idź w jego kierunku; to skieruje każdą mrówkę
dla której zmienna 'return-to-nest' jest prawdziwa
w kierunku źródła i spowoduje
krok w tym kierunku, następnie chcemy
nakazać jej wyruszyć na żerowanie ponownie
jeśli jest w gnieździe
więc jeśli pcolor jest pomarańczowy, co oznacza
że mrówka wróciła do domu
ustawimy wartość 'return-to-nest' na 'fałsz'
ponieważ ona już tam jest
nawias zamykający
Dotychczas nie mamy żadnych mrówek
z wartością 'return-to-nest' będącą 'prawdą'
więc, oczywiście musimy to zrobić
Po tym jak zjadły one swój pokarm
ustawmy 'return-to-nest' na 'prawdę'
Sprawdzę ten kod, wygląda dobrze
Wracamy do interfejsu.
Kliknijmy Setup
I potem Go
Jest tu sporo mrówek
trudno stwierdzić, co one robią
Zmniejszmy ich liczbę
i spróbujmy raz jeszcze
Zwolnijmy to wszystko trochę
Możecie dostrzec, że mrówki
zachowują się tak, jak powinny
jedzą pokarm, wracają do gniazda
zanim znów z niego wyruszą
Możemy zmienić kolor z powrotem na czerwony
by było to bardziej oczywiste
ale wstrzymajmy się z tym do następnego razu