Prírodou inšpirované algoritmy

študijné materiály pre projekt mobilnej triedy umelej inteligencie

Späť ku kurzom triedy
Obsah
Základné princípy OOP
Prvý program v Objective C
Spoločný život dvoch objektov
Používanie Swarmu
Viac agentov v prostredí
Parametre modelu
Grafické rozhranie



Ostatné kapitoly
Swarm
RePast
LEM
SDML
Eos
DDLab


Tutoriály
 Celulárne automaty
 Morfogenéza
 Simulátory
 Evolučné algoritmy
 Chaos
 Roboty
 Rôzne


Používanie Swarmu

Urobíme celkom novú verziu programu, nezmenené ostanú definície objektov Bug a FoodSpace. Vytvoríme špeciálny objekt nazývaný Swarm, ktorý slúži na vytváranie a riadenie ostatných objektov.

Pri typickej Swarm simulácii budeme v súbore main.m vytvárať toplevel Swarmu, ktorý bude riadiť vytváranie, spoluprácu a spúšťanie modelov.

Nová štruktúra súboru main.m

Všetko čo sme doteraz definovali v súbore main.m prenesieme do objektu, ktorý budeme nazývať modelSwarm. A main použije na komunikáciu s týmto objektom tak ako sme to robili predtým s Bugom a FoodSpace.

Zadefinujeme tu špeciálnu triedu objektov nazývanú activities, ktorá je vlastne "zoznamom" odkazov posielaných objektom.

Takže swarm je špeciálny druh objektu, ktorý obsahuje objekty a má vnútorné cesty, ktoré tvoria odkazy pre tieto objekty. Detailnejšie to pochopíme keď dôjdeme k samotným súborom ModelSwarm.h ModelSwarm.m. Takže ako to už vieme vytvoríme objekt modelSwarm. Povieme mu aby vytvoril objekty a aktivity, spojil ich a odštartoval program.

Popis objektu ModelSwarm

Objekt ModelSwarm je ako každý objekt uložený v dvoch súboroch, ModelSwarm.m a ModelSwarm.h. ModelSwarm je druh podtriedy Swarmu, to je zapísané v ModelSwarm.h. ModelSwarm je objekt, kde sa detaily konkrétneho modelu spúšťajú skryté od ostatných vecí, ktoré nechceme alebo nepotrebujeme poznať. Tieto môžeme meniť v našom modely bez toho aby sme porušili ostatné komponenty našej simulácie alebo experimentu.

Ďalší postup rozdelíme do troch krokov:

  • najprv zostrojíme rôzne objekty v modeli tak, ako sme to robili pred tým v main.m. Teraz máme na to miesto v metóde -buildObjects.
  • ďalej usporiadame odkazy, ktoré budú posielané objektom, ale bez ciest pre cykly. Presnejšie, vytvoríme pasívne dátové štruktúry pozostávajúce z odkazov, ktoré chceme poslať alebo prijať. Na to je miesto v metóde -buildActions.
  • Po tretie, vytvoríme určitý počet pasívnych dátových štruktúr - držiteľov informácie a chceme ich spojiť a umožniť im, aby komunikovali zo štruktúrami vytvorenými inde. Toto sa nachádza v metóde -activateIn.

Model teraz nespustíme, postavíme rozvrhy a spojíme s rozvrhmi z iných svetov s ktorými budeme spolupracovať.

Prejdime si to teraz metódu po metóde:

  • +createBegin : plus znamená, že táto metóda je odlišná od metód označovaných mínus. Táto metóda špecifikuje ako sa má vytvoriť inštancia v ModelSwarme. Táto metóda je volaná na vytvorenie inštancie ModelSwarmu. Je to skôr triedová ako inštančná metóda a zahŕňa akcie, ktoré musí trieda vykonať, aby priviedla inštanciu do života. Čiže, niečo musí byť zodpovedné za vytvorenie inštancie ale nemôže to byť inštancia samotná, pretože ešte neexistuje.
  • -createEnd : umožňuje riadiacej triede urobiť posledné úpravy, ak je to potrebné.
  • -buildObject : metóda, v ktorej sa vytvárajú objekty.
  • -buildActions : slúži na vytváranie dátových štruktúr, ktoré sú nositeľom informácií, ktoré neskôr budeme posielať.

Rozvrh je objekt, ktorý riadi odkazy pre nás, umožňujúc nám prístup k týmto odkazom. V našom prípade zostrojíme jednoduchý rozvrh v ktorom opakovane nastavuje peatInteval na 1 zabezpečuje, že táto akcia sa bude opakovať donekonečna alebo do stlačenia CTRL+c.

-ActivateIn slúži na spájanie nášho rozvrhu a ModelSwarmu samotného s inými rozvrhmi na rôznych úrovniach.

Hore
Kontakt: Marek Bundzel