Prírodou inšpirované algoritmy

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

Späť ku kurzom triedy
Obsah
Úvod
Od myšlienky k schéme
Ako je to s hostiteľmi
Intrinzické faktory
Extrinzické faktory
Úvod do kvantitatívnej memetiky
Symbolická memetika
Zaujímavosti
Myšlienková vojna
Memetic AI toolkit
Linky
O tejto kapitole



Ostatné kapitoly
Freemanove K modely
Umelé imunitné systémy
Biomimicry - Biomimetics
Umelé chémie
Chemické vlny
DNK počítače
Artificial Music
Memetika
Artificial Life Games
Artificial Art
Väzenská dilema


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


Memetic AI toolkit

Toolkit správania sa pre PC hru Neverwinter nights

Memetic AI toolkit je rozšíriteľný systém pre vytváranie nie-hráčskych postáv (non-player characters) NPC pre počítačové hry ako Neverwinter Nights (NWN). Táto implementácia je napísaná v NWScripte, skriptovacom jazyku pre NWN od firmy Bioware. Je navrhnutý, ako hotový súbor knižníc, ktorý môže byť prispôsobený návrhármi pre rôzne spôsoby použitia.

Doposiaľ sa počítačové vedy venovali memetike z pohľadu genetických algoritmov. Táto teória vyzerá asi takto:
Jeden bit kódu pokúšajúci sa adaptovať svojmu prostrediu pomocou bežného genetického algoritmu by mohol prenášať úspešné správanie sa podobným spôsobom, ako prebieha memetický prenos. Výsledkom je evolúcia chytľavého skupinového správania sa. Toto je podporované teóriou, že ľudia nepotrebujú genetickú mutáciu pre prispôsobenie sa - to by trvalo trochu pridlho. Máme jazyk, ktorý nám umožňuje okamžitú formu memetickej evolúcie.

Ciele a motivácia

Tento toolkit bol urobený pre dlho trvajúcu viac-hráčsku (multi-player) online misiu (campaign). Je navrhnutý pre vytvorenie adaptabilných NPC, ktorí prežívajú počas týždňov a mesiacov - nie minút alebo hodín. Ich účelom je byť základným kameňom dynamického okolia. Tu sú niektoré základné myšlienky, ktoré boli motiváciou, pre vytvorenie tohto toolkitu:

  • Inteligentné správanie všetkých postáv môže byť poskladateľné z jednotlivých blokov.

  • Správanie by malo byť plánovateľné, aktivovateľné a priorizovateľné v priebehu vývoja hry.

  • Správanie by malo byť budovateľné, zdieľateľné a schopné ukončenia behom hry.

  • Pružný plánovací systém, by mal umožniť rôznym správaniam, aby sa presadili kedykoľvek je to možné a vrátiť sa späť do pôvodného stavu.

  • Rutiny, ako napr.: pozeranie sa okolo alebo vyhodnocovanie vnútorného stavu, by mali byť možné bez prerušenia normálneho správania.

  • Správania by mali byť generované ako odpoveď na rôzne situácie, vonkajšie a vnútorné stimuly.

  • Správania by sa mali navrhovať (odporúčať) a súťažiť; len najlepší spôsob jednania by mal byť nasledovaný.

  • Postavy by mali komunikovať internými kanálmi a dátami.

  • Mala by to byť zaujímavá, praktická aproximácia a-life toolkitu.

Pre splnenie týchto cieľov je potrebný memetický slovník. Musí dávať zmysel, musí byť jednoduchý a byť použiteľný pri bežnom rozhovore. Vo všeobecnosti, dobrá implementácia Memetickej AI musí byť modulárna, rozšíriteľná a abstraktná v tom zmysle, aby bola ľahko kódovateľná a používateľná.

Kompletný prehľad memetických skriptov

Mémy

Ak sa medveď prechádza lesom, čo mu prechádza mysľou? Zastať a najesť sa bobúľ, označkovať si teritórium alebo zaspať v noci? Medveď premýšľa nad mnohými akciami a jednu si vyberie. Ale ako to zakódovať vo všeobecnosti, aby sa to dalo opakovane použiť? Je potrebný model správania sa.

Použitím memetic AI, každá NPC môže byť nositeľom rôzneho počtu mémov, čakajúcich na šancu stať sa aktívnymi. Keď nový mém vznikne, zmení svoju prioritu alebo je ukončený, ďalší môže dostať šancu byť spustený. NPC sú stále činný podľa svojich mémov.

Priority a modifikátory

Každý mém má svoju prioritu: veľmi vysokú (very high), vysokú (high), strednú (medium), nízku (low) alebo žiadnu (none). V rámci každej premennej má modifikátor z rozsahu od -100 do 100. V reálnom čase môže byť aktívny iba jeden mém a ten je vyberaný automaticky podľa priority. Mémy so žiadnou prioritou sú ignorovaný, považovaný za spiacich. Ak sa mém stane aktívnym, jeho kód získa kontrolu nad štandartnou NPC frontou (queue) akcií. Môže spoľahlivo zavolať funkciu ActionDoCommand(), riadiť okamžite NPC.

Priority mémov v akcii

Keď je raz mém vytvorený, môže meniť svoju prioritu v každom čase. Najvyššia priorita je vždy spustená. Ak v rovnakom čase má množina mémov rovnakú prioritu a modifikátor, spustený bude prvý z fronty (queue) s touto prioritou, za ním ďalší atď., pokiaľ sa vo fronte nenachádza žiadny mém takejto priority.

Memetické sekvencie

Žiaľ, písanie mémov pre každý možný druh správania sa stáva únavným a nepraktickým. V mnohých prípadoch je najednoduchšie zreťaziť niekoľko mémov do jednoduchej postupnosti (sequence).

sekvencia mémov

Sekvencie majú prioritu, tak ako každý mém. Jej priorita môže byť fixná, alebo odvodená od mémov, ktoré obsahuje. Keď má prioritu vyššiu ako ostatné správania sa, spustí obsahujúce mémy v sekvenčnom poradí - nie podľa priority. Ak je sekvencia prerušená mémom s vyššou prioritou, má možnosť znovu začať na poslednej pozícii v sekvencii, alebo na méme, ktorý bol označený ako checkpoint.

Vo všeobecnosti, sekvencie nás posunuli bližšie k nášmu cieľu používať mémy ako stavebnicové bloky. Knižnica mémov bola vyvíjaná tak, aby budovač modulov mohol dynamicky zreťazovať správania sa podľa hráčovej angažovanosti v hre.

Hore
Kontakt: Marek Bundzel