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


Spoločný život dvoch objektov

Vytvorenie objektu Potrava

Začneme tým, čo už vieme, čiže vytvorením objektu. Objekt FoodSpace (potrava) je veľmi jednoduchý, pretože je pasívny, t.j. v priebehu života sa nemení. Vytvoríme ho ako podtriedu už existujúcej triedy definovanej v knižniciach Swarmu. Toto zapíšeme nasledovne:

@interface FoodSpace : Discrete2d

FoodSpace je podtriedou triedy Discrete2d, ktorá je vlastne mriežkou celočíselných hodnôt a obsahuje metódy pre prácu s týmito hodnotami. Nás zaujímajú dve metódy, ktoré použijeme v našom programe:

  • getValueAtX: (int) x Y: (int) y; - vráť hodnotu políčka na pozícii x,y.
  • putValue: (int) v atX: (int) x Y: (int) y; - daj hodnotu v na pozíciu x,y.

Výskyt potravy zadefinujeme na základe pravdepodobnosti výskytu konštantou seedprob. Tam kde je potrava, hodnota políčka je 1. Model objektu je zapísaný prostredníctvom súborov FoodSpace.h a FoodSpace.m

Máme zadefinovaný objekt FoodSpace a teraz ho pripojíme na chrobáka.

Komunikácia dvoch objektov

Komunikácia v našom prípade znamená, že chrobák hľadá potravu, ak ju nájde tak ju zje (hodnota políčka sa zmení na 0).
Začneme teda doplnením súboru main.m. Dáme smerník na náš objekt a zadefinujeme pravdepodobnosť výskytu:

id FoodSpace;
float seedProob 0.2;

Teraz zadefinujeme samotné objekty FoodSpace a keďže tie budú komunikovať s aBug zadefinujeme znovu aj ten.

FoodSpace

aBug

Ďalej doplníme súbory Bug.h a Bug.m.

Dáme Bugu smerník na FoodSpace a doplníme metódy. Rozbijeme fázu vytvárania na dve časti: createBegin a createEnd. Urobíme to, pretože máme premenné, ktoré sa počas života programu nemenia. Ak teda použijeme metódu createEnd všetko čo je napísané nad ňou sa nebude môcť meniť počas života chrobáka. To čo je napísané za touto metódou môže meniť svoj vnútorný stav.

Do súboru Bug.h doplníme okrem smerníka na FoodSpace ešte aj metódy:

-setFoodSpace: (id) f;
-createEnd;

V súbore Bug.m nastalo viacero zmien preto ho ponúkame celý: Bug.m

Hore
Kontakt: Marek Bundzel