Prírodou inšpirované algoritmy

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

Späť ku kurzom triedy
Obsah
Úvod
Prostredie
L-systém
Komunikácia
Mechanizmus šírenia ohňa
Výsledky



Ostatné kapitoly
Lindenmayerove systémy
Modelovanie ekosystémov
Dawkinsove biomorfy
Reakčno-difúzne modely
Difúzne ohraničené zhlukovanie
Voronoiove diagramy
Časticové systémy
Fibbonaciho čísla a zlatý rez


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


Výsledky

Obrázok dole ukazuje šírenie ohňa cez niekoľko iteracií.

Vývin ohňa cez niekoľko iterácií

Dole je uvedený použitý L-systém. Oheň začne ako čiara v strede miestnosti a je tu len jedno pravidlo šírenia ohňa smerom vľavo. Tu je L-systém:

Axiom:
T(44,0,24) T(44,0,25) T(44,0,26) T(44,0,27) T(44,0,28)
T(44,0,29) T(44,0,30) T(44,0,31) T(44,0,32) T(44,0,33)
T(44,0,34) T(44,0,35)
Production:
T(x,y,z):E(x,y,z,getWall)=0->W(x,y,z,setFuel,getFuel (x,y,z)- 2)W(x,y,z,setTemp,getFuel(x,y,z) * 1.5)T(x,y,z)

T určuje, čí sa oheň šíri doľava. Oheň je silnejší tam, kde je viac paliva a taktiež tam aj dlhšie horí. S tým ako oheň spotrebováva palivo, tak sa oheň zoslabuje.

Tabuľka ukazuje niekoľko časových priebehov tohto systému.

IterácieČas L-systému(ms)Čas renderovania(ms)
1501710
55001540
1023701530
1533501320
2059301260

Časové priebehy

Ako je vidieť, hodnoty pri spracovaní L-systému pevne rastú s počtom iterácií. Je to kvôli tomu, že L-systém navštevuje viac miest v prostredí a tak musí vykonať viac výpočtov. Čo sa týka časov renderovania, tak čas klesá, z toho dôvodu, že s tým ako sa palivo spaľuje, tak Java 3D musí stále menej objektov vyrenderovať.

Výsledky takisto ukazujú aké ľahké je zmeniť model ohňa v tomto systéme. Obrázok pod LS ukazuje šírenie ohňa po niekoľkých krokoch v tomto L-systém:

Axiom:
T(44,0,26)A(44,0,26)T(44,0,27)A(44,0,27)T(44,0,28)A(44,0,28)
T(44,0,29)A(44,0,29)T(44,0,30)A(44,0,30)T(44,0,31)A(44,0,31)
T(44,0,32)A(44,0,32)T(44,0,33)A(44,0,33)
Productions:
T(x,y,z):E(x,y,z,getWall)=0>W(x,y,z,setTemp,getFuel(x,y,z))T(x, y,z)
A(x,y,z):E(x,y,z,getWall)=0>W(x,y,z,setTemp,getFuel(x,y,z))A(x, y,z)

Vývin ohňa cez niekoľko iterácií

Kde A určuje šírenie ohňa vpravo. Tento systém nastavuje teplotu bunky podľa množstva paliva, ktoré sa v nej nachádza. Jednoduchou zmenou pravidiel sa mení celé správanie sa systému.

Obrázok dole ukazuje citlivosť L-systému na prostredie. L-systém neprechádza cez hranice miestností, v ktorých sa šíri.

L-Systém sa nešíri v rámci hraníc prostredia

Pre ukázanie šírenia sa ohňa pomocou L-systému v trojrozmernom prostredí, môžu byť do systému pridané pravidlá, ktoré umožňujú systému sa šíriť hore stenou. Tu je patričný L-systém:

Productions:
n(x,y,z) : (getWall(x,y,z-1)=0.0):n(x,y,z) w(x,y,z,getFuel (x,y,z) ,setTemp(x,y,z,f))
n(x,y,z) : (getWall(x,y,z-1)=1.0):v(x,y,z)
v(x,y,z):v(x,y,z) w(x,y,z,getFuel (x,y,z),setTemp(x,y,z,f))
Axiom:
n(30,0,20)n(31,0,20)n(32,0,20)n(33,0,20) n(34,0,20) n(35,0,20)
n(36,0,20)n(37,0,20)

V druhom pravidle, ak podmienka getWall(x,y,z-1) je pravdivá a ak je v danej kocke stena, tak vykonanie pravidla spôsobí šírenie sa ohňa smerom hore. Symbol v spôsobuje vertikálne šírenie ohňa smerom nahor, v mieste kde sa nachádza.

L-Systém lezúci hore stenou

Hore
Kontakt: Marek Bundzel