Prírodou inšpirované algoritmy

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

Späť ku kurzom triedy
Obsah
Prostredie, jazyk, adresovanie
Inštrukcie, adresovacie módy a operátory



Ostatné kapitoly
LEE
Framsticks
EINSTein
Nerve garden
Poly World
Simulácia evolúcie rozhodovania
Nornovia
Creatures 3
Primordial Life
Core War
Desktop Garp
Tierra
Avida


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


Prostredie, jazyk, adresovanie

Dewndey so svojim študentom Jonesom na Univerzite Západne Ontário vyvinuli hru Core War.

Skladala sa zo štyroch základných komponentov:

  1. pamäťové pole

  2. Pamäťové pole je cyklické pole zložené z 8000 adries. Je to sekvencia adries 0-7999 a adresa 8000 odpovedá adrese 0. Adresa väčšia ako 7999 sa vždy redukuje. Napr: 9378=1379.

    Na určovanie pozície v pamäti sa používa relatívne adresovanie. Je to jediná používaná metóda v Redcode. To znamená, že hľadaná adresa sa určuje od miesta práve vykonávanej inštrukcie, ktorá ma relatívnu adresu 0. Napr. inštrukcia JMP 9 hovorí aby program skočil na adresu o 9 miest ďalej ako je adresa inštrukcie JMP 9. Neexistuje možnosť pre bojový program dozvedieť sa svoju absolútnu pozíciu.

  3. REDCODE - jazyk

  4. Bojové programy sú písane v jazyku Redcode, ktorý je podobný asembleru. Má inštrukcie na presúvanie obsahu z jednej adresy na inú adresu v pamäti, na aritmetickú zmenu obsahu adresy a na prenesenie vykonávania v programe dopredu alebo dozadu. Zatiaľ čo výstup asembleru je binárne číslo, mnemonická forma inštrukcií v Redcode je prekladaná simulátorom (MARS) do celých čísel v desiatkovej sústave. Tie sa potom ukladajú do pamäťového poľa. Každá adresa v poli udržuje hodnotu vo forme celého čísla. MARS interpretuje aj celé čísla ako inštrukcie.

  5. MARS

  6. - vykonávací program - simulátor (Memory Array Redcode Simulator)

  7. sada zápasiacich bojových programov.



Zápasia vždy len dva programy. Boj začína vložením oboch bojových programov do pamäťového poľa na náhodne vybratú pozíciu. Programy nepoznajú polohu súpera. MARS vykonáva programy striedavo po jednej inštrukcii. Boj môže končiť

  1. remízou - po uplynutí časového intervalu alebo po vykonaní istého počtu inštrukcií oboma stranami.

  2. víťazstvom jedného programu a zároveň prehrou druhého - ak MARS má vykonať nevykonateľnú inštrukciu jedného programu, ktorý sa potom pokladá za porazeného.

Súboj sa dá sledovať na obrazovke, kde každý program je označený inou farbou. Napríklad v DOS-e to vyzerá ako na obrázkoch uvedených vyššie.



Tu sú základné pravidlá pre návrh jednej takejto hry:

  1. Dva bojové programy sa vložia do pamäťového poľa na náhodnú pozíciu, ale nesmú byť bližšie ako 1000 adries.

  2. MARS striedavo vykonáva po jednej inštrukcii z každého programu pokiaľ nepríde k inštrukcii, ktorá nemôže byť vykonaná. Program s nevykonateľnou inštrukciou prehráva.

  3. Programy môžu byť napadnuté všetkými dostupnými zbraňami. (Bomba znamená zápis nuly, resp. hocakého celého čísla, vrátane platnej redcode inštrukcie na niektoré miesto v pamäti, pričom môže byť narušený kód niektorého programu.)

  4. Časový limit sa dáva na každý zápas, závisí od rýchlosti počítača. Ak sa čas naplní a oba programy stále bežia, tak zápas končí remízou.

Hore
Kontakt: Marek Bundzel