Projekt z umělé inteligence

Miroslav Prýmek

Motivace, cíl

Cílem projektu je vytvořit nadstavbu nad existující systém simulátoru umělého života (artificial life simulator)[1], která by umožňovala vytvářet simulace kontaminace životního prostředí zdraví škodlivými látkami a sledování reakcí vyvíjející se populace na ni.

K řešení bude využit autorův systém Kairos (k popisu možností systému viz [2], instrukce k instalaci a provozu viz [3]).

Implementace

Pro splnění stanoveného cíle je třeba v systému Kairos definovat tyto objekty a jejich chování:

  • organismus
  • políčko
  • objekt "jed"
  • koloběh energie

Zdrojový kód implementace můžete stáhnout zde pod názvem "Neural/poison impl.".

Organismus

Jelikož naším cílem je vytvořit populaci, která je schopna reagovat na výskyt jedu v prostředí, musíme zvolit flexibilní způsob řízení chování organismů (k možnostem, které Kairos nabízí viz [2]). Nejvhodnější implementací se ukázala být jednoduchá dopředná neuronová síť.

Zvolená neuronová síť je dvojvrstvá, plně propojená, s dvaceti vstupy a čtyřmi výstupy. Hodnoty vah spojů jsou nastaveny podle genetické informace jedince a v průběhu jeho života jsou neměné. Implementace tedy zcela pomíjí v přírodě existující ontogenetické děje a zaměřuje se pouze na vývoj fylogenetický.

Vstupy sítě jsou napojeny na "senzory" ("smysly"), pomocí kterých organismus pozoruje svoje okolí. Celkem je sledováno sedm políček (dvě vlevo, dvě vpravo, dvě v předu a políčko, na kterém organismus stojí). Jeden vstup sítě sleduje vnitřní stav organismu - množství disponibilní energie. U každého políčka (kromě toho, na kterém organismus stojí) jsou sledovány tři veličiny: zda je možné na políčko vstoupit, zda je na něm jed a kolik je zde energie k dispozici.

Výstupy sítě ovládají aktuátory - na základě rozhodnutí sítě může organismus provést tyto akce: přijímat energii, otočit se vlevo, otočit se vpravo nebo se rozmnožit (naklonovat). Klonování je jediným způsobem rozmnožování organismů. Jde o silné zjednodušení a pravděpodobně i snížení schopnosti evolvování a bylo zvoleno jen z důvodu zjednodušení implementace.

Aby evoluce nebyla vytvářena jen náhodným prohledáváním stavového prostoru neuronových sítí s náhodnou konfigurací, je klonování organismů spojeno s náhodnými mutacemi, jejichž četnost i hloubku zásahu do genomu je možné nastavit bez nutnosti rekompilace.

Políčko

Implementace políčka je velmi jednoduchá. Činnost políčka sestává z toho, že:

  • po určitých intervalech přeměňuje využitou energii (metabolity organismů) zpět na využitelnou energii
  • vytváří jed - pravděpodobnost vytváření jedu je určeno funkcí vzdálenosti od "epicentra" kontaminace - v našem případě se jedná o logaritmickou funkci

Jed

Objekt jed je konkretizací objektu ObjectBase systému Kairos. Objekt nemá téměř žádné přidané vlastnosti, funguje tedy v podstatě pouze jako nosič informace "vlastník tohoto objektu je kontaminován". Reakce na jed je definována v objektu organismu - v rámci tohoto projektu jsem zkoušel dvě varianty jedu: jed "freezing", který způsobuje ztrátu schopnosti pohybu a tedy i neschopnost hledat potravu, a jed "lethal", který organismus usmrtí okamžitě po požití.

Koloběh energie

Přestože Kairos umožňuje vytváření velmi složitých koloběhů energie, v tomto projektu byl použit nejjednodušší možný: organismy přijímají z políček "usable energy" a v rámci svého metabolismu (využití energie) ji převádí na "used energy". V prostředí není zaveden žádný objekt typu "rostlina", ale jak už bylo řečeno, zpětný převod energie a tím i uzavření koloběhu, je definováno přímo v objektu "políčko".

Tento nejjednodušší model byl zvolen z důvodu toho, aby se nezvyšoval počet proměných a dějů, které by měly vliv na průběh evoluce.

Snímky výstupů

Výsledky

Vzhledem k omezenému času pro testování implementace se bohužel nepodařilo získat jednoznačné výsledky. Systém bohužel zahrnuje příliš mnoho proměnných, z nichž některé mají dalekosáhlý vliv na běh simulace. Optimalizace všech proměnných vyžaduje experimentální přístup a statistické zpracování výsledků běhů, které jsou velmi časově náročné.

Nepodařilo se tedy získat populaci, která by viditelně reagovala na kontaminaci prostředí. Na druhou stranu se ale projevily náznaky evoluce představované vývinem zlepšené schopnosti přežití druhu v prostředí (viz graf).

Jistou míru evolvování je možné pozorovat i okem, pomocí vizualizace prostředí programem wxKairos. Zatímco zpočátku se organismy chovají naprosto chaoticky, téměř se nepohybují a velmi brzo umírají, časem se objeví organismy, které po prostředí chodí a tak zvyšují svoji šanci nalézt potravu. Nejlepší strategií, které jsem si u organismů všimnul je pohyb pouze po omezeném prostoru (např. v kruhu) - organismus se tak nevystavuje nenadálým nebezpečím a má i prostor pro rozmnožování a dostatek potravy.

[1] K problematice simululátorů umělého života viz např.
Csontó, J.: Umělý život. v: Mařík, V., Štěpánková, O., Lažanský, J. a kol.: Umělá inteligence 3. Praha: Academia. 2001.
nebo
Csontó,J., Palko, M.: Umelý život. Košice: ELFA 2002.
[2] http://www.fi.muni.cz/~xprymek/Kairos/czech/stat.shtml
[3] http://www.fi.muni.cz/~xprymek/Kairos/install.shtml