Prírodou inšpirované algoritmy

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

Späť ku kurzom triedy
Obsah
Abstrakt
Pravidlá života
Vyvíjajúci sa floyi
Implementácia v Jave
Prehľad appletov
Floyi - applet
Individuálni Floyi - applet
Vyvíjajúci sa Floyi - applet
Súperiaci floyi - applet
Aquarium - applet
O tejto kapitole



Ostatné kapitoly
Výpočtové schopnosti celulárnych automatov
Celulárne automaty - úvod
Samoreprodukujúce sa celulárne automaty
Kryštálove výpocty
HAL
Boidi
Floyi
Aplikácie celulárnych automatov
CAPOW
LIFE - Hra života
Fredkinov biliardový automat


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


Vyvíjajúci sa Floyi - applet

Applet je vytvorený pomocou vlákien - každý jedinec je jedno vlákno. Preto môže byť beh appletu pri voľbe veľkého počtu jedincov a vysokej rýchlosti trhaný, nepravidelný a v tom prípade treba jednu z hodnôt znížiť (je to spôsobené tým, že s počtom jedincov časová náročnosť kvadraticky narastá). Rýchlosť pohybu jedincov závisí od výkonu počítača, na ktorom je applet spustený.

Pravidlá vývinu

EFloyi sa vyvíjajú tak, že každý eFloy je potomok dvoch rodičov. Matka a otec sú vybraný podľa mechanizmu neprirodzeného výberu (Survival of the Fittest by Unnatural Selection). Vhodnosť je definovaná dvoma hodnotami: energia a bezpečie. Tieto hodnoty sa počas života eFloya zvyšujú a znižujú. Tieto hodnoty sú tým vyššie čím je viac eFloy najedený (fitter). To sú odmeny a tresty, ktoré ovplyvňujú vhodnosť.

Celková vhodnosť sa vypočíta:

fitness = e.E + b.B + s.S

e - energia

E - koeficient váhy energie

b - bezpečie

B - koeficient váhy bezpečia

s - spolupráca

S - koeficient váhy spolupráce (štandartne sa S = 0)

  • Jedlo je energia: Stále ako uhryzneš votrelca, tvoja energia narastie.
  • Najlepšia možnosť je dobehnúť votrelca ako prvý a celého ho zjesť.
  • Ak si votrelec, stále keď si uhryznutý , tvoja energia klesá.
  • Ak sa tvoja energia vyčerpá, zomrieš.
  • Ak sa pohybuješ rýchlo tvoja energia klesá.
  • Čím sa rýchlejšie pohybuješ, tým viac energie stratíš.
  • Ak si blízko svojich susedov, tvoje bezpečie narastá.
  • Čím si bližšie pri svojich susedoch, tým viac bodov bezpečia dostaneš.

Proces vývinu

Mechanizmus vývoja sa skladá z troch vrstiev:

Najspodnejšia vrstva je genotyp: Je to aktuálny chromozomálny reťazec, v ktorom sú zakódované gény. V eFloyovom genetickom algoritme každé miesto v chromozóme reprezentuje špecifickú vlastnosť. Na tejto úrovni máme iba charakteristické reťazce, ktoré neznamenajú nič kým nebudú interpretované.

Stredná vrstva je fenotyp: Tu sú informácie kódované v génoch preložené na správanie, ktoré môžeme vidieť. Napríklad špecifický znak na špecifickom mieste v chromozóme môže znamenať špecifické eFloyové zrýchlenie.

Tretia vrstva je vývojová vhodnosť: Vhodnosť závisí na fenotypickej vlastnosti, ale nie vždy priamo. Nie sú tam žiadne gény pre vhodnosť. eFloyové vhodnosť sa maximalizuje keď energia a bezpečnosť sú maximálne, eFloy musí dobehnúť votrelca pred ostatnými eFloymi, takže musí byť odvážny a nezávislý. Na druhej strane súčin bezpečia z vhodnosti sa zmenšuje keď je ďaleko od svojich susedov. Uhryznutie zvyšuje energiu ale rýchly pohyb ju znižuje a byť rýchly je nevyhnutné aby sa dostal ku votrelcovi prvý.

Takže máme takúto postupnosť:

Evolučný výber sa robí podľa vhodnosti, vhodnosť závisí na fenotypických vlastnostiach a tie sú definované podľa genetického reťazca. Evolučné operátory (reprodukcia, kríženie, mutácia) pôsobia na chromozómový reťazec. Celý proces je celkom zložitý. Percento prežitia, koeficient mutácie a koeficient kríženia sú vlastnosti evolučných operátorov, ktoré môžeme ovplyvniť.

A výsledok môže byť nepredvídateľný: Po zmene špecifických vlastností, ovplyvníme nečakané správanie, ktoré nie je vždy ľahko predvídať. Je zaujímavé sledovať správanie a vývoj eFloyov aj keď je to jednoduchý systém.

Ovládanie appletu:

  • Rýchlosť: Ovládanie rýchlosti appletu od 1% do 100%.
  • Počet jedincov: Ovládanie počtu jedincov od 2 do 50.Po zmene počtu jedincov sa populácia resetuje.
  • Model prostredia: Možnosť voľby prostredia medzi toroidom (keď jedinec príde na koniec zobrazovacej plochy vyjde z druhej strany) a ohraničenou plochou (pri náraze sa jedinec mierne spomalí a otočí sa v náhodnom smere). Použitím voľby Ohraničený sa dosiahne reálnejšia simulácia.
  • Vlastnosti: Po kliknutí na tlačítko sa zobrazí nové okno, v ktorom sa nastavujú všetky vlastnosti jedincov a prostredia
    • Prostredie
      • Koeficient váhy energie: Koeficient, ktorým sa násobí energia v počítaní fitness (vhodnosti). Čím je väčší tým väčšia je váha energie na vhodnosti.
      • Koeficient váhy bezpečia: Koeficient, ktorým sa násobí bezpečie v počítaní fitness (vhodnosti). Čím je väčší tým väčšia je váha bezpečia na vhodnosti.
      • Koeficient váhy spolupráce: Koeficient, ktorým sa násobí spolupráca v počítaní fitness (vhodnosti). Čím je väčší tým väčšia je váha spolupráce na vhodnosti.
      • Maximálny energetický podiel: Maximálny počet energetických bodov (odmena alebo trest), ktoré jedinec môže získať alebo stratiť.
      • Maximálny podiel bezpečnosti: Maximálny počet bodov bezpečia (odmena alebo trest), ktoré jedinec môže získať alebo stratiť.
      • Maximálny podiel spolupráce: Maximálny počet bodov spolupráce (odmena alebo trest), ktoré jedinec môže získať alebo stratiť.
      • Percento prežitia: Percentuálna šanca rodičov, že budú v novej generácii.
      • Koeficient slobodnej vôle: Koeficient náhodného správania.
      • Votrelcova dĺžka života: Energia votrelca pri narodení.
    • Pevné vlastnosti
      • Typ: Určenie typu jedinca: miestny alebo votrelec. Ak nastavíme typ jedinca Votrelec, jedincovi ostane pôvodná farba.
      • Farba: Farba jedinca. Jedinec môže mať aj červenú farbu a nestane sa votrelcom. V tomto applete farba a typ jedinca niesú prepojené.
      • Počet susedov: Počet susedov, s ktorými jedinci udržujú kontakt. Snažia sa nevzdialiť od svojich susedov.
      • Koeficient mutácie: Pravdepodobnosť mutácie génu jedinca.
      • Koeficient kríženia: Pravdepodobnosť kríženia pri narodení jedinca.
      • Stupeň energie: Energia jedinca.
      • Stupeň bezpečnosti: Bezpečnosť jedinca.
      • Stupeň spolupráce: Spolupráca jedinca.
      • Fitness (Vhodnosť): Fitness (Vhodnosť) jedinca.
    • Hlavné vlastnosti
      • Maximálna rýchlosť: Maximálna rýchlosť pohybu jedinca.
      • Rýchlosť odrazu od steny: Rýchlosť pri odraze od okrajov akvária , v ktorom sa pohybujú.
      • Zrýchlenie: Zrýchlenie jedinca.
      • Lipnutie k stredu: Funguje len pri ohraničenom móde. Čim je číslo väčšie, tým sa budú jedinci viac držať pri strede akvária.
      • Kolízna vzdialenosť: Definuje vzdialenosť, ktorú sa snažia od seba jedinci udržiavať aby nedošlo ku kolízii. Táto vzdialenosť sa nedodržiava pri strete jedincov s votrelcom.
    • Vedľajšie vlastnosti
      • Vzdialenosť (Miestny, Miestny): Koeficient vzdialenosti. Čím vyšší koeficient bude, tým viac sa bude snažiť byť jedinec pri druhom a čím bude menší, tým viac sa k sebe nebudú chcieť priblížiť. Táto vlastnosť platí iba pre jedincov typu Miestny, inak sa táto vlastnosť nebrie do úvahy.
      • Vzdialenosť (Miestny, Votrelec): Koeficient vzdialenosti. Čím vyšší koeficient bude, tým viac sa bude snažiť byť jedinec pri votrelcovi a čím bude menší, tým viac sa k sebe nebudú chcieť priblížiť. Táto vlastnosť platí iba pre jedincov typu Miestny, inak sa táto vlastnosť nebrie do úvahy.
      • Vzdialenosť (Votrelec, Miestny): Koeficient vzdialenosti. Čím vyšší koeficient bude, tým viac sa bude snažiť byť votrelec pri jedincovi a čím bude menší, tým viac sa k sebe nebudú chcieť priblížiť. Táto vlastnosť platí iba pre jedincov typu Votrelec, inak sa táto vlastnosť nebrie do úvahy.
      • Kolízia (Miestny, Miestny): Koeficient kolízie. Čím vyšší koeficient bude, tým viac bude dochádzať ku kolízii jedinca s iným jedincom a čím bude menší, tým bude ku kolízii dochádzať menej. Pri kolízii jedince nestrácajú energiu. Táto vlastnosť platí iba pre jedincov typu Miestny, inak sa táto vlastnosť nebrie do úvahy.
      • Kolízia (Miestny, Votrelec): Koeficient kolízie. Čím vyšší koeficient bude, tým viac bude dochádzať ku kolízii jedinca s votrelcom a čím bude menší, tým bude ku kolízii dochádzať menej. Táto vlastnosť platí iba pre jedincov typu Miestny, inak sa táto vlastnosť nebrie do úvahy.
      • Kolízia (Votrelec, Miestny): Koeficient kolízie. Čím vyšší koeficient bude, tým viac bude dochádzať ku kolízii votrelca s jedincom a čím bude menší, tým bude ku kolízii dochádzať menej. Táto vlastnosť platí iba pre jedincov typu Votrelec, inak sa táto vlastnosť nebrie do úvahy.
      • Kolízia votrelca a miestneho eFloya znamená pre votrelca, že bol uhryznutý a pre miestneho eFloya, že uhryzol votrelca. Pri uhryznutí votrelca miestnym eFloyom klesne votrelcovi energia o 1 a miestnemu eFloyovi sa energia zvýši o maximálny energetický podiel.

  • Aktualizuj: Aktualizuje nastavenia práve vybratého jedinca.
  • Koniec: zavrie okno s nastaveniami vlastností.
  • Reštart: Nastaví predvolené hodnoty celého appletu.
  • Pauza: Zastavenie letu jedincov (názov tlačidla sa zmení z Pauza na Pokračovať). Opätovným stlačením tlačidla sa pohyb jedincov obnoví.
  • Pridať: Kliknutím na tlačítko sa premení nultý jedinec na votrelca.
  • Odobrať: Po kliknutí sa votrelec premení opäť na nultého jedinca populácie a preberie vlastnosti prvého jedinca.
  • Ukáž čísla: Miesto tiel jedincov sa budú zobrazovať ich poradové čísla (názov tlačidla sa zmení z Ukáž čísla na Ukáž Floyov). Opätovným stlačením tlačidla sa zobrazovanie tiel jedincov obnoví.
  • Štart evolúcie: Spustí sa proces evolúcie jedincov. (názov tlačidla sa zmení zo Štart evolúcie na Stop evolúcie). Opätovným stlačením tlačidla sa proces evolúcie zastaví.
  • Nová generácia: Narodenie novej generácie (vytvorenie generácie ako pri evolučnom procese).
  • Zamiešať: Zamiešanie populácie. Keď sa populácia zamieša, niektorý jedinci na seba zoberú aj označenie votrelca a potom sú napádaný inými eFloymi. Pri zamiešaní sa farby priradzujú náhodné a každému eFloyovi sa zmutuje chromozóm. Ak sa pri náhodnom priradení farby, priradí eFloyovi farba červená, automaticky sa stáva votrelcom. Neskôr sa farba dedí po rodičoch.
  • Vopred definované: Tu sa dajú nastaviť už vopred definované nastavenia jedincov a prostredia čo malo za následok rôzne správanie celej populácie jedincov a rôzny vývoj jedincov.
    • Nervózna populácia: Nastaví celú populáciu tak, aby bola energická, rýchla, nervózna.
    • Flegmatická populácia: Nastaví celú populáciu tak, aby bola pomalá, lenivá, flegmatická.
    • Opatrná evolúcia: Nastaví prostredie tak, aby sa v evolúcii jedincov uprednostňovalo bezpečie nad energiou.
    • Riskujúca evolúcia: Nastaví prostredie tak, aby sa v evolúcii jedincov uprednostňovala energia nad bezpečím.
    • Zvoľ štandartnú: Zvolenie štandartných nastavení populácie a prostredia.
    • Zruš: Ponechá existujúce nastavenia populácie a prostredia.
    • Tabuľka vopred definovaných vlastností

        Štandartné nastavenia Nervózna populácia Flegmatická populácia Opatrná evolúcia Riskujúca evolúcia
      Maximálna rýchlosť 5 8 1 5 5
      Odrazová rýchlosť 0,8 2 0,1 0,8 0,8
      Zrýchlenie 0,3 0,8 0,05 0,3 0,3
      Lipnutie k stredu 0,1 0,1 0 0,1 0,1
      Vzdialenosť (Miestny, Miestny) 1 3 1 1 1
      Vzdialenosť (Miestny, Votrelec) 20 40 10 20 20
      Vzdialenosť (Votrelec, Miestny) 0 0 0 0 0
      Kolízna vzdialenosť 200 200 200 200 200
      Kolízia (Miestny, Miestny) -1 -1 -1 -1 -1
      Kolízia (Miestny, Votrelec) 30 50 10 30 30
      Kolízia (Votrelec, Miestny) -40 -50 -20 -40 -40
      Počet susedov 2 2 2 2 2
      Koeficient mutácie 0,1 0,1 0,1 0,1 0,1
      Koeficient kríženia 1 1 1 1 1
      Stupeň energie 10 10 10 10 10
      Stupeň bezpečnosti 10 10 10 10 10
      Stupeň spolupráce 10 10 10 10 10
      Fitness(Vhodnosť) 1 1 1 1 1
      Koeficient váhy energie 1 1 1 1 3
      Koeficient váhy bezpečia 0 0 0 3 1
      Koeficient váhy spolupráce 0 0 0 0 0
      Percento prežitia 10 10 10 0 0
      Koeficient slobodnej vôle 0,05 0,05 0,05 0,05 0,05
      Votrelcova dĺžka života 50 50 50 25 25

  • Limitovaný rozsah: Zmení rozsah a hodnotu podielov energií, bezpečia, spolupráce na hodnotu 1 a rozsah od -10 do 10 (názov tlačidla sa zmení z Limitovaný rozsah na Normálny rozsah). Opätovným stlačením tlačidla sa zmení rozsah a hodnoty podielov energií, bezpečia, spolupráce na hodnotu 10 a rozsah od 0 do 20.
  • Ukáž Log: Otvorenie logovacieho okna kde sa zaznamenáva vznik novej generácie, začiatok a koniec celej session a opakovanie rodičov v prípade že je matka alebo otec votrelec.
  • Ukáž info: Otvorí sa okno, v ktorom sú všetky momentálne nastavenia prostredia a jedincov a všetky hodnoty energie, bezpečia, spolupráce a z nich vypočítaný fitness (vhodnosť). V tomto okne môžeme sledovať celý vývin populácie.

Tento applet vznikol obmenou programu, ktorý vytvoril Ariel Dolan.

Zdrojový kód appletu.

Hore
Kontakt: Marek Bundzel