200 likes | 369 Views
Umělá inteligence. Genetické algoritmy. Iterativní algoritmy. Algoritmus je postup, sekvence kroků. Iterativní algoritmus používá k vyřešení problému cyklicky opakovaných kroků : algoritmy pro řazení a vyhledávání matematické výpočty například druhá odmocnina. Stochastické algoritmy.
E N D
Umělá inteligence Genetické algoritmy
Iterativní algoritmy • Algoritmus je postup, sekvence kroků. • Iterativní algoritmus používá k vyřešení problému cyklicky opakovaných kroků: • algoritmy pro řazení a vyhledávání • matematické výpočty • například druhá odmocnina
Stochastické algoritmy • V průběhu výpočtu používají náhodné operace. • Algoritmus není jednoznačný, může projít více cestami. • Nezaručují nalezení řešení. • Nezaručují přesnost nalezeného řešení • Aproximativní × Stochastické • Aproximativní algoritmy zaručují nalezení řešení po určitém počtu kroků a přesnost řešení po určitém počtu kroků.
K čemu? • Pokud známe (a můžeme použít) deterministický algoritmus pro řešení úlohy, pak je stochastický algoritmus nevhodný. • Stochastické algoritmy jsou dobré všude tam, kde není nic lepšího. • Modelové úlohy: • TSP • Batoh • Tření, ráz, dvě tělesa
Genetické algoritmy • Stochastické algoritmy založené na simulaci evolučního procesu. • Obecný přístup, který má velké množství modifikací. • Mají dobré schopnosti prohledávání prostoru řešení. • Paralelní algoritmy: • v jednom okamžiku poskytuje systém několik možných řešení úlohy. • výpočet každého řešení probíhá nezávisle • výpočet buď sériově nebo paralelně spuštěný
Genetické algoritmy • Mohou být spuštěné z náhodných počátečních podmínek. • Na počátku náhodně vygeneruje několik řešení – obyčejně velmi špatných. • Každé řešení ohodnotí podle nějakých kritérií. • Nejlepší řešení zkombinuje tak, aby mohlo vniknout ještě lepší řešení. • Přidá několik náhodně vygenerovaných řešení. • Všechny řešení znovu ohodnotí a kombinuje.
Genetický algoritmus • Hypotetický příklad pro ilustraci odlišnosti přístupu: • Výpočet druhé odmocniny čísla 64 • Náhodná řešení: • 34, 7654, 43, 567, 542, 1, 6 • Hodnocení: (x*x = 64) • Nejlepší řešení: (1, 6, 34) • Po kombinaci nejlepších řešení(): • 1, 6, 34, 3.5, 20, 17.5
Genetický algoritmus Chromozom – posloupnost znaků/čísel do které je zakódováno řešení Jedinec + Populace – řešení zadané úlohy Kódování – systém, který řešení úlohy zakóduje do chromozomu Fitness funkce – funkce, která každému jedinci přiřadí hodnocení Konvergence – proces přibližování se ke správnému řešení Křížení – operace, při které vzniká nový jedinec kombinací několika jiných Mutace – operace, při které vzniká nový jedinec náhodnou změnou jiného
Příklad – hledání funkce • Ukázka:
Příklad – hledání minima funkce • Využití pro složité funkce více proměnných. • Pro funkci jedné proměnné:
Křížení • Před křížením se musí aplikovat selekce. • Křížení:
Výhody a nevýhody • Genetické algoritmy nevyžadují nastavení počátečních podmínek (viz. lineární optimalizace). • Není nutné splnit množství matematických podmínek (spojitá, hladká funkce; singularity)
Výhody × nevýhody Je možné řešit úlohy jak numericky, tak analyticky. Stačí znát hodnotu kriteriální funkce v bodě Genetické algoritmy mají za určitých podmínek zaručenou konvergenci. GA najde řešení, ale nelze říct kdy.
Výhody × nevýhody Pokud GA najde řešení, pak se nemusí nutně jednat o řešení zadané úlohy. GA algoritmus řeší fitness funkci, nikoliv původní úlohu. Návrh fitness funkce je klíčový a nejtěžší. Pokud GA najde řešení zadané úlohy, je jeho přesnost nejistá. GA algoritmus se musí navrhnout vždy pro zadanou úlohu.
Generování algoritmů – gramatika <statement> ::= <begin><statement><statement> | <if><condition><statement> | <function><expression><expression> | <assign><var><expression> <expression> ::= <function><expression> |<const> | <var> | <function><expression><expression> <condition> ::= <operator><expression><expression> <operator> ::= < | > | != | == | >= | <= <var> ::= $a | $b | $result <const> ::= 0 | 1| -1 <function> ::= + | - | * | / <begin> ::= {} <if> ::= if {} <assign> ::= =
Generování algoritmů • Vstupní data: • {(−3, 3); (43, 43); (3, 3); (123, 123); (−345, 345); (−8, 8); (−11, 11); (0, 0)} • Kriteriální funkce: • Prefix: <?php functionabsol($a) { $result = "no_value"; • Sufix: return $result;} • Body za: nastavení hodnoty, číselnou hodnotu, kladnou hodnotu, požadovanou hodnotuě
Jiný algoritmus • Vstupní hodnotou funkce jsou dvě celá čísla aab. Výstupní hodnotou je číslo c, pro které platí: • pro • pro • Tréninková množina: • {(−3, 5,−1); (43, 0, 1); (8, 8, 0); (3, 4,−1); (−3,−4, 1); }