Prírodou inšpirované algoritmy

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

Späť ku kurzom triedy
Obsah
Čo je umelá chémia?
Prehľad projektov umelej chémie
Umelý život cez umelú chémiu?
Chémia delenia čísel
Polymérová chémia
Literatura
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


Chémia delenia čísel

Podkapitoly:

Java applet chémie delenia čísel

Chémia delenia čísel a jej rozdelenie

Jednoduchá aritmetika alebo logický operátor sa môžu použiť na konštrukciu umelej chémie so zaujímavými spôsobmi. Chémia delenia čísel využíva matematickú operáciu delenie na vytvorenie systémov čísel, a skúma ich vzájomné reakcie a interakcie definované reakčnými pravidlami, a delí sa na:

  • konštruktívnu, charakteristickým znakom tejto chémie je vznik nových objektov rôznych od objektov počiatočnej množiny

  • nekonštruktívnu, nový objekt (výsledok reakcie) je vždy identický s niektorým objektom počiatočnej množiny

Konštruktívna chémia delenia čísel

Objekty chémie v tomto prípade predstavujú čísla, ktoré môžu byť vybrané z množiny prirodzených reálnych čísel s kladným či záporným znamienkom. Reakčné pravidlá sú tvorené množinou rozhodovacích pravidiel, napr. ak výsledok po celo číselnom delení je rovný nule, tak nový objekt sa rovná deliteľovi, inak nový objekt sa rovná výsledku celo číselného delenia. Samozrejme tieto pravidlá je možné modifikovať aj počas priebehu reakcií v systéme, ktorého vlastnosti a správanie definuje aj populačná dynamika.

Príklad konštruktívneho systému:

Objekty:
S={2,3,4,...}
Reakčné pravidlá
S1 + S2 -> S1 + S3
S3 = S2/S3 ak S2 mod S1 = 0 inak S3 = S2
Populačná Dynamika
Populácia:
P[ 1 ],P[ 2 ],...,P[ M ]
Reakčná schéma:
S1 + S2 -> S1 + S3

while not termitate() do

i1 := randomInteger(1,M);
S1:=P[ i1 ];
i2 := randomInteger(1,M);
S2:=P[ i2 ];
S3:=reaction(S1, S2);
if S3 != 0 then P [i2] := S3;
i
od

Nekonštruktívna chémia delenia čísel

Pre nekonštruktívne systémy je typické, že v reakciách nevznikajú objekty, ktoré by boli nositeľmi nových vlastností na rozdiel od konštruktívnych systémov. Výsledkom reakcie je objekt identický s niektorým objektom počiatočnej množiny.

Príklad nekonštruktívneho systému:

Objekty:
S={1,2}
Reakčné pravidlá
S1 + S2 + X-> S1 + S2 + S3

1 + 1 + X -> 1 + 1 + 2 ..................... 1 + 1 => 2

1 + 2 + X -> 1 + 2 + 2 ..................... 1 + 2 => 2

2 + 1 + X -> 2 + 1 + 2 ...skrátene... 2 + 1 => 2

2 + 2 + X -> 2 + 2 + 2 ...====== .. 2 + 2 => 2

Populačná Dynamika

Populácia:
P[ 1 ],P[ 2 ],...,P[ M ]
Reakčná schéma:
S1 + S2 + X -> S1 + S2 +S3

while not terminate() do

S1 := P[randomInteger(1, M)]
S2 := P[randomInteger(1, M)]
if a rule (S1 + S2 => S3) exists in R
P[randomInteger(1, M)] := S3
fi
od

Stručný popis Appletu

Applet jednoduchej chémie delenia čísel, s počiatočnou množinou S a reakčnými pravidlami a populačnou dynamikou uvedenou nižšie, kde výsledkom je graf zobrazujúci počet prvých štyroch prvočísiel v novovytvorenej populácii.

Konštruktívny systém:

Objekty:
S = {2,3,4,...}
Reakčné pravidlá

S1 + S2 -> S1 + S3

S3 = S2/S3 ak S2 div S1 > 1 inak S3 = S2

Populačná Dynamika

Populácia:
P[ 1 ],P[ 2 ],...,P[ M ]
Reakčná schéma:
S1 + S2 -> S1 + S3

while not termitate() do
i1:=randomInteger(1,M);
S1 := P[ i1 ];
i2 := randomInteger(1,M);
S2 := P[ i2 ];
S3 := reaction(S1,S2);
if S3 > 1 then P [ i2] := S3;
fi
od

Počiatočnú množinu S vytvoríme vkladaním jednotlivých číselných objektov, tlačidlo pridať. Ak máme počiatočnú množinu vytvorenú zvolíme si veľkosť populácie. Reakciu možno spustiť tlačidlom reakcia. Výsledok sa zobrazí v grafe appletu. Pred ďalším spustením appletu použite tlačidlo reset.

Zdrojáky

Applet

Správanie sa konštruktívneho systému, reprezentovaného java appletom, klasifikujeme na základe počtu výskytu prvých štyroch prvočísiel 2, 3, 5, 7 avšak výsledky aj pri rovnakej počiatočnej množine objektov môžu byť veľmi odlišné. Pri opísanej populačnej dynamike a reakčných pravidlách by sa dalo očakávať (aj som očakával), že najväčší počet výskytu by malo mať prvočíslo 2, potom 3, 5, 7, no napriek tomu obrázok A reprezentuje typickú vzorku výsledkov v nasledovnom poradí 2, 3, 7, 5. Aj pri iných náhodne zvolených počiatočných množinách S sa prvočíslo 7 sa nachádza novej populácii častejšie ako 5.



Obrázok B, predstavuje "divné" správanie sa systému, ktoré ma nie raz prekvapilo. V tomto prípade prvočíslo 7 sa nachádzalo až 40 krát v populácií, dosť ojedinelý prípad ak si uvedomíme populačnú dynamiku, ktorá je založená na náhodnom výbere reagujúcich objektov.

Hore
Kontakt: Marek Bundzel