|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Genetiniai algoritmai
Prieš paskaitos testą
Genetiniai algoritmai (GA) yra pagrįsti evoliuciniu požiūriu į dirbtinį intelektą, kuriame naudojami populiacijos evoliucijos metodai, siekiant rasti optimalią sprendimo būdą tam tikrai problemai. Jie buvo pasiūlyti 1975 m. John Henry Holland.
Genetiniai algoritmai remiasi šiomis idėjomis:
- Galimi problemos sprendimai gali būti pateikti kaip genai
- Kryžminimas leidžia sujungti du sprendimus ir gauti naują galiojantį sprendimą
- Atranka naudojama optimalesnių sprendimų pasirinkimui pagal tam tikrą tinkamumo funkciją
- Mutacijos įvedamos siekiant destabilizuoti optimizaciją ir išvengti vietinio minimumo
Norint įgyvendinti genetinį algoritmą, reikia:
- Rasti būdą, kaip koduoti problemos sprendimus naudojant genus g∈Γ
- Genų rinkinyje Γ apibrėžti tinkamumo funkciją fit: Γ→R. Mažesnės funkcijos reikšmės atitinka geresnius sprendimus.
- Apibrėžti kryžminimo mechanizmą, kad būtų galima sujungti du genus ir gauti naują galiojantį sprendimą crossover: Γ2→Γ.
- Apibrėžti mutacijos mechanizmą mutate: Γ→Γ.
Daugeliu atvejų kryžminimas ir mutacija yra gana paprasti algoritmai, skirti manipuliuoti genais kaip skaitmeninėmis sekų ar bitų vektoriais.
Konkreti genetinio algoritmo įgyvendinimo forma gali skirtis priklausomai nuo atvejo, tačiau bendras struktūra yra tokia:
- Pasirinkti pradinę populiaciją G⊂Γ
- Atsitiktinai pasirinkti vieną iš operacijų, kurios bus atliekamos šiame žingsnyje: kryžminimas arba mutacija
- Kryžminimas:
- Atsitiktinai pasirinkti du genus g1, g2 ∈ G
- Apskaičiuoti kryžminimą g=crossover(g1,g2)
- Jei fit(g)<fit(g1) arba fit(g)<fit(g2) - pakeisti atitinkamą geną populiacijoje g.
- Mutacija - pasirinkti atsitiktinį geną g∈G ir pakeisti jį mutate(g)
- Kartoti nuo 2 žingsnio, kol pasieksime pakankamai mažą fit reikšmę arba kol bus pasiektas žingsnių limitas.
Tipinės užduotys
Užduotys, kurias dažniausiai sprendžia genetiniai algoritmai, apima:
- Tvarkaraščių optimizavimas
- Optimalus pakavimas
- Optimalus pjovimas
- Išsamios paieškos pagreitinimas
✍️ Pratimai: Genetiniai algoritmai
Tęskite mokymąsi šiuose užrašuose:
Eikite į šį užrašą, kad pamatytumėte du genetinių algoritmų naudojimo pavyzdžius:
- Teisingas lobio padalijimas
- 8 karalienių problema
Išvada
Genetiniai algoritmai naudojami spręsti daugelį problemų, įskaitant logistikos ir paieškos problemas. Ši sritis įkvėpta tyrimų, kurie sujungė psichologijos ir kompiuterių mokslo temas.
🚀 Iššūkis
"Genetiniai algoritmai yra paprasti įgyvendinti, tačiau jų elgesį sunku suprasti." šaltinis Atlikite tyrimą, kad rastumėte genetinio algoritmo įgyvendinimą, pavyzdžiui, sprendžiant Sudoku galvosūkį, ir paaiškinkite, kaip jis veikia eskizu arba srauto diagrama.
Po paskaitos testą
Apžvalga ir savarankiškas mokymasis
Žiūrėkite šį puikų vaizdo įrašą, kuriame kalbama apie tai, kaip kompiuteris gali išmokti žaisti Super Mario, naudojant neuroninius tinklus, treniruotus genetiniais algoritmais. Daugiau apie kompiuterio mokymąsi žaisti tokio tipo žaidimus sužinosime kitame skyriuje.
Užduotis: Diofantinė lygtis
Jūsų tikslas yra išspręsti vadinamąją Diofantinę lygtį - lygtį su sveikaisiais sprendiniais. Pavyzdžiui, apsvarstykite lygtį a+2b+3c+4d=30. Jums reikia rasti sveikuosius sprendinius, kurie atitinka šią lygtį.
Ši užduotis įkvėpta šio įrašo.
Patarimai:
- Galite apsvarstyti sprendinius intervale [0;30]
- Kaip geną, apsvarstykite šaknų reikšmių sąrašą
Naudokite Diophantine.ipynb kaip pradinį tašką.