|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Genetické algoritmy
Kvíz pred prednáškou
Genetické algoritmy (GA) sú založené na evolučnom prístupe k umelej inteligencii, kde sa využívajú metódy evolúcie populácie na získanie optimálneho riešenia pre daný problém. Navrhol ich v roku 1975 John Henry Holland.
Genetické algoritmy sú založené na nasledujúcich myšlienkach:
- Platné riešenia problému môžu byť reprezentované ako gény
- Kombinácia (crossover) umožňuje spojiť dve riešenia a získať nové platné riešenie
- Selektovanie sa používa na výber optimálnejších riešení pomocou nejakej fitness funkcie
- Mutácie sa zavádzajú na destabilizáciu optimalizácie a na vyhnutie sa lokálnemu minimu
Ak chcete implementovať genetický algoritmus, potrebujete:
- Nájsť spôsob kódovania riešení problému pomocou génov g∈Γ
- Na množine génov Γ definovať fitness funkciu fit: Γ→R. Menšie hodnoty funkcie zodpovedajú lepším riešeniam.
- Definovať mechanizmus kombinácie na spojenie dvoch génov a získanie nového platného riešenia crossover: Γ2→Γ.
- Definovať mechanizmus mutácie mutate: Γ→Γ.
V mnohých prípadoch sú kombinácia a mutácia pomerne jednoduché algoritmy na manipuláciu s génmi ako číselnými sekvenciami alebo bitovými vektormi.
Konkrétna implementácia genetického algoritmu sa môže líšiť podľa prípadu, ale celková štruktúra je nasledovná:
- Vyberte počiatočnú populáciu G⊂Γ
- Náhodne vyberte jednu z operácií, ktorá sa vykoná v tomto kroku: kombinácia alebo mutácia
- Kombinácia:
- Náhodne vyberte dva gény g1, g2 ∈ G
- Vypočítajte kombináciu g=crossover(g1,g2)
- Ak fit(g)<fit(g1) alebo fit(g)<fit(g2) - nahraďte príslušný gén v populácii génom g.
- Mutácia - vyberte náhodný gén g∈G a nahraďte ho mutate(g)
- Opakujte od kroku 2, kým nedosiahnete dostatočne malú hodnotu fit, alebo kým sa nedosiahne limit počtu krokov.
Typické úlohy
Úlohy, ktoré sa typicky riešia pomocou genetických algoritmov, zahŕňajú:
- Optimalizácia rozvrhov
- Optimálne balenie
- Optimálne rezanie
- Urýchlenie vyčerpávajúceho vyhľadávania
✍️ Cvičenia: Genetické algoritmy
Pokračujte v učení v nasledujúcich notebookoch:
Prejdite na tento notebook, kde nájdete dva príklady použitia genetických algoritmov:
- Spravodlivé rozdelenie pokladu
- Problém 8 dám
Záver
Genetické algoritmy sa používajú na riešenie mnohých problémov, vrátane logistiky a vyhľadávacích problémov. Táto oblasť je inšpirovaná výskumom, ktorý spája témy z psychológie a informatiky.
🚀 Výzva
"Genetické algoritmy sú jednoduché na implementáciu, ale ich správanie je ťažké pochopiť." zdroj Urobte si výskum a nájdite implementáciu genetického algoritmu, napríklad na riešenie Sudoku, a vysvetlite, ako funguje, vo forme náčrtu alebo diagramu.
Kvíz po prednáške
Prehľad a samostatné štúdium
Pozrite si toto skvelé video, ktoré hovorí o tom, ako sa počítač môže naučiť hrať Super Mario pomocou neurónových sietí trénovaných genetickými algoritmami. Viac sa o učení počítača hrať takéto hry dozvieme v ďalšej sekcii.
Úloha: Diofantická rovnica
Vašou úlohou je vyriešiť tzv. Diofantickú rovnicu - rovnicu s celočíselnými koreňmi. Napríklad zvážte rovnicu a+2b+3c+4d=30. Musíte nájsť celočíselné korene, ktoré túto rovnicu spĺňajú.
Táto úloha je inšpirovaná týmto článkom.
Tipy:
- Môžete uvažovať korene v intervale [0;30]
- Ako gén zvážte použitie zoznamu hodnôt koreňov
Použite Diophantine.ipynb ako východiskový bod.