Viac agentov v prostredí
Namodelujeme do nášho životného priestoru viac chrobákov,
pričom na jednom mieste môže byť len jeden chrobák.
Súbor main.m sa nemení, mení
sa ModelSwarm a súbory Bug.
Štruktúra ModelSwarm pre viac agentov
Pridáme dve štruktúry na umiestnenie nových agentov:
- pretože nechceme aby si agenti stúpali po hlavách
pridáme ďalší priestor, s ktorým budú agenti
interagovať, čo nám zabezpečí, že nie je viac
chrobákov na jednom mieste.
- vytvoríme kolekciu všetkých chrobákov tak , že s nimi
môžeme zaobchádzať ako s celkom. V podstate ich
zapuzdríme do "zoznamu" objektov a
komunikujeme s nimi posielaním správ do tohto zoznamu
(bugList) .
Využijeme triedu objektov Grid2d ,
ktorá je už zadefinovaná v knižniciach Swarmu, takže ju len
požiadame o vytvorenie inštancie. Grid2d
pracuje tak, že v jednej bunke môže byť iba jeden chrobák.
Ak je na políčku chrobák tak tam má svoje "id" ak tam nie je, je tam "nil" . Keď vytvoríme chrobáka
umiestnime ho do sveta na jeho x, y súradnice.
Zoznam objektov je už preddefinovaný.
Požijeme objekt z knižnice náhodných čísel uniformDblRand id , ktorý nám vracia
náhodné reálne čísla s normálnym rozložením.
Zoberieme chrobáka zo zoznamu, zapíšeme do reporterBug , či sa stretol s potravou. Po
tom ako sme získali informáciu o potrave zaradíme chrobáka
späť do zoznamu.
V buildActions vytvoríme zoznam
simulovaných akcií. Tieto uložíme do skupiny, pretože tieto
akcie chceme vykonať v určitom poradí, ale tak aby tieto kroky
netrvali žiadny čas. M(lojzo)
znamená odkaz z názvom lojzo ,
čiže je možné poslať správu jednotlivým objektom alebo
všetkým objektom.
CreateActionForEach -
odkaz pre všetkých chrobákov
CreateActionTo
- odkaz pre jedného chrobáka
Chceme dve veci, a to aby všetky chrobáky vykonali jeden
krok v priestore a aby nás reportBug
informoval o nájdenej potrave.
Nakoniec vytvoríme rozvrh, ktorý vykoná model akcií (ModelActions ). ModelActions
je ActionGroup , ktorá v reálnej
reprezentácii neexistuje, je tu vlastne preto, že počítač
vykonáva operácie sekvenčne. Tento rozvrh má interval
opakovania jedna - vykonáva sa v každom kroku.
Štruktúra súborov Bug.m a Bug.h pre viac
agentov.
Chrobáky sú teraz závislé jeden na druhom, pretože žijú
v jednom svete. Musia byť schopné spoznať, že na mieste kam
chcú ísť nikto nie je. Kontrolujú to tým istým spôsobom ako
potravu, t.j. v krokovej metóde. Pri vytváraní sme rozšírili
metódu setFoodSpace na setWodld: Food: . Ak chrobák nájde
potravu, nastaví sa príznak haveeaten
na jednotku a vykoná sa metóda -report.
|