AI-For-Beginners/translations/cs/lessons/6-Other/21-GeneticAlgorithms
localizeflow[bot] 3c760d21ff chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:29:36 +00:00
..
Diophantine.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
Genetic.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 16:53:37 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:29:36 +00:00

README.md

Genetické algoritmy

Kvíz před přednáškou

Genetické algoritmy (GA) jsou založeny na evolučním přístupu k umělé inteligenci, kde se využívají metody evoluce populace k nalezení optimálního řešení daného problému. Byly navrženy v roce 1975 Johnem Henry Hollandem.

Genetické algoritmy vycházejí z následujících myšlenek:

  • Platná řešení problému lze reprezentovat jako geny
  • Pomocí křížení lze kombinovat dvě řešení a získat nové platné řešení
  • Selektivní výběr se používá k výběru optimálnějších řešení pomocí nějaké fitness funkce
  • Mutace se zavádějí, aby destabilizovaly optimalizaci a pomohly nám dostat se z lokálního minima

Pokud chcete implementovat genetický algoritmus, potřebujete následující:

  • Najít způsob kódování řešení problému pomocí genů g∈Γ
  • Na množině genů Γ definovat fitness funkci fit: Γ→R. Menší hodnoty funkce odpovídají lepším řešením.
  • Definovat mechanismus křížení, který kombinuje dva geny a vytváří nové platné řešení crossover: Γ2→Γ.
  • Definovat mechanismus mutace mutate: Γ→Γ.

V mnoha případech jsou algoritmy pro křížení a mutace poměrně jednoduché a manipulují s geny jako s číselnými sekvencemi nebo bitovými vektory.

Konkrétní implementace genetického algoritmu se může případ od případu lišit, ale obecná struktura je následující:

  1. Vyberte počáteční populaci G⊂Γ
  2. Náhodně vyberte jednu z operací, která bude v tomto kroku provedena: křížení nebo mutace
  3. Křížení:
  • Náhodně vyberte dva geny g1, g2 ∈ G
  • Spočítejte křížení g=crossover(g1,g2)
  • Pokud fit(g)<fit(g1) nebo fit(g)<fit(g2), nahraďte odpovídající gen v populaci genem g.
  1. Mutace - náhodně vyberte gen g∈G a nahraďte jej mutate(g)
  2. Opakujte od kroku 2, dokud nedosáhnete dostatečně malé hodnoty fit, nebo dokud nebude dosažen limit počtu kroků.

Typické úlohy

Úlohy, které se obvykle řeší pomocí genetických algoritmů, zahrnují:

  1. Optimalizace rozvrhů
  2. Optimální balení
  3. Optimální řezání
  4. Zrychlení vyčerpávajícího prohledávání

✍️ Cvičení: Genetické algoritmy

Pokračujte ve studiu v následujících noteboocích:

Přejděte na tento notebook, kde najdete dva příklady použití genetických algoritmů:

  1. Spravedlivé rozdělení pokladu
  2. Problém 8 dam

Závěr

Genetické algoritmy se používají k řešení mnoha problémů, včetně logistiky a vyhledávacích problémů. Tato oblast je inspirována výzkumem, který spojil témata psychologie a informatiky.

🚀 Výzva

"Genetické algoritmy jsou jednoduché na implementaci, ale jejich chování je obtížné pochopit." zdroj Proveďte výzkum a najděte implementaci genetického algoritmu, například pro řešení sudoku, a vysvětlete, jak funguje, formou náčrtu nebo diagramu.

Kvíz po přednášce

Přehled a samostudium

Podívejte se na toto skvělé video, které ukazuje, jak se počítač může naučit hrát Super Mario pomocí neuronových sítí trénovaných genetickými algoritmy. O tom, jak se počítače učí hrát hry, se dozvíme více v další sekci.

Úkol: Diofantická rovnice

Vaším cílem je vyřešit tzv. Diofantickou rovnici - rovnici s celočíselnými kořeny. Například uvažujme rovnici a+2b+3c+4d=30. Musíte najít celočíselné kořeny, které tuto rovnici splňují.

Tento úkol je inspirován tímto článkem.

Tipy:

  1. Můžete uvažovat kořeny v intervalu [0;30]
  2. Jako gen zvažte použití seznamu hodnot kořenů

Použijte Diophantine.ipynb jako výchozí bod.