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.
|