|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Geneetilised algoritmid
Eelloengu viktoriin
Geneetilised algoritmid (GA) põhinevad evolutsioonilisel lähenemisel tehisintellektile, kus populatsiooni evolutsioonimeetodeid kasutatakse optimaalse lahenduse leidmiseks antud probleemile. Need pakkus välja John Henry Holland aastal 1975.
Geneetilised algoritmid põhinevad järgmistel ideedel:
- Kehtivaid lahendusi probleemile saab esitada geenidena
- Ristamine võimaldab kombineerida kahte lahendust, et saada uus kehtiv lahendus
- Valik kasutatakse optimaalsemate lahenduste leidmiseks, kasutades sobivusfunktsiooni
- Mutatsioonid lisatakse, et destabiliseerida optimeerimist ja vältida lokaalset miinimumi
Geneetilise algoritmi rakendamiseks on vaja järgmist:
- Leida meetod, kuidas kodeerida probleemilahendusi geenide abil g∈Γ
- Geenide hulgal Γ tuleb defineerida sobivusfunktsioon fit: Γ→R. Väiksemad funktsiooni väärtused vastavad parematele lahendustele.
- Defineerida ristamismehhanism, et kombineerida kaks geeni ja saada uus kehtiv lahendus crossover: Γ2→Γ.
- Defineerida mutatsioonimehhanism mutate: Γ→Γ.
Paljudel juhtudel on ristamine ja mutatsioon üsna lihtsad algoritmid, mis manipuleerivad geene numbriliste jadade või bittvektoritena.
Geneetilise algoritmi konkreetne rakendus võib juhtumiti erineda, kuid üldine struktuur on järgmine:
- Valida algpopulatsioon G⊂Γ
- Juhuslikult valida operatsioon, mida sellel sammul teostatakse: ristamine või mutatsioon
- Ristamine:
- Juhuslikult valida kaks geeni g1, g2 ∈ G
- Arvutada ristamine g=crossover(g1,g2)
- Kui fit(g)<fit(g1) või fit(g)<fit(g2) - asendada vastav geen populatsioonis geeniga g.
- Mutatsioon - valida juhuslik geen g∈G ja asendada see mutate(g)-ga
- Korrata alates sammust 2, kuni saavutatakse piisavalt väike sobivusfunktsiooni väärtus või kuni sammude arv jõuab piirini.
Tüüpilised ülesanded
Geneetiliste algoritmidega lahendatavad ülesanded hõlmavad:
- Graafiku optimeerimine
- Optimaalne pakkimine
- Optimaalne lõikamine
- Kurnava otsingu kiirendamine
✍️ Harjutused: Geneetilised algoritmid
Jätka õppimist järgmistes märkmikes:
Mine sellele märkmikule, et näha kahte näidet geneetiliste algoritmide kasutamisest:
- Aarde õiglane jagamine
- 8 kuninganna probleem
Kokkuvõte
Geneetilisi algoritme kasutatakse paljude probleemide lahendamiseks, sealhulgas logistika ja otsinguprobleemid. Valdkond on inspireeritud uurimistööst, mis ühendas psühholoogia ja arvutiteaduse teemasid.
🚀 Väljakutse
"Geneetilisi algoritme on lihtne rakendada, kuid nende käitumist on raske mõista." allikas Uuri geneetilise algoritmi rakendust, näiteks Sudoku lahendamist, ja selgita, kuidas see töötab visandi või vooskeemi abil.
Järelloengu viktoriin
Ülevaade ja iseseisev õppimine
Vaata seda suurepärast videot, mis räägib sellest, kuidas arvuti saab õppida mängima Super Mariot, kasutades geneetiliste algoritmidega treenitud närvivõrke. Õpime rohkem arvuti õppimisest selliste mängude mängimiseks järgmises osas.
Ülesanne: Diofantiline võrrand
Sinu eesmärk on lahendada nn Diofantiline võrrand - võrrand täisarvuliste juurtega. Näiteks kaalu võrrandit a+2b+3c+4d=30. Pead leidma täisarvulised juured, mis rahuldavad seda võrrandit.
See ülesanne on inspireeritud sellest postitusest.
Vihjed:
- Võid kaaluda juuri vahemikus [0;30]
- Geenina võid kasutada juurväärtuste loendit
Kasuta Diophantine.ipynb lähtepunktina.
Lahtiütlus:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.