|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Genetiska Algoritmer
Quiz före förelÀsningen
Genetiska algoritmer (GA) bygger pÄ en evolutionÀr metod inom AI, dÀr metoder för att utveckla en population anvÀnds för att hitta en optimal lösning för ett givet problem. De föreslogs 1975 av John Henry Holland.
Genetiska algoritmer baseras pÄ följande idéer:
- Giltiga lösningar pÄ problemet kan representeras som gener
- Korsning gör det möjligt att kombinera tvÄ lösningar för att fÄ en ny giltig lösning
- Urval anvÀnds för att vÀlja mer optimala lösningar med hjÀlp av en fitnessfunktion
- Mutationer introduceras för att destabilisera optimeringen och ta oss ur lokala minima
Om du vill implementera en genetisk algoritm behöver du följande:
- Hitta ett sĂ€tt att koda vĂ„ra problemlösningar med hjĂ€lp av gener gâÎ
- PĂ„ mĂ€ngden gener Î behöver vi definiera en fitnessfunktion fit: ÎâR. Mindre funktionsvĂ€rden motsvarar bĂ€ttre lösningar.
- Definiera en korsningsmekanism för att kombinera tvĂ„ gener och fĂ„ en ny giltig lösning crossover: Î2âÎ.
- Definiera en mutationsmekanism mutate: ÎâÎ.
I mÄnga fall Àr korsning och mutation ganska enkla algoritmer för att manipulera gener som numeriska sekvenser eller bitvektorer.
Den specifika implementeringen av en genetisk algoritm kan variera frÄn fall till fall, men den övergripande strukturen Àr följande:
- VĂ€lj en initial population GâÎ
- VÀlj slumpmÀssigt en av de operationer som ska utföras vid detta steg: korsning eller mutation
- Korsning:
- VĂ€lj slumpmĂ€ssigt tvĂ„ gener g1, g2 â G
- BerÀkna korsning g=crossover(g1,g2)
- Om fit(g)<fit(g1) eller fit(g)<fit(g2) - ersÀtt motsvarande gen i populationen med g.
- Mutation - vĂ€lj en slumpmĂ€ssig gen gâG och ersĂ€tt den med mutate(g)
- Upprepa frÄn steg 2 tills vi fÄr ett tillrÀckligt litet vÀrde pÄ fit, eller tills grÀnsen för antalet steg har nÄtts.
Typiska Uppgifter
Uppgifter som vanligtvis löses med genetiska algoritmer inkluderar:
- Optimering av scheman
- Optimal packning
- Optimal skÀrning
- Snabba upp uttömmande sökningar
âïž Ăvningar: Genetiska Algoritmer
FortsÀtt ditt lÀrande i följande anteckningsböcker:
GÄ till denna anteckningsbok för att se tvÄ exempel pÄ anvÀndning av genetiska algoritmer:
- RÀttvis fördelning av skatt
- 8 drottningars problem
Slutsats
Genetiska algoritmer anvÀnds för att lösa mÄnga problem, inklusive logistik och sökproblem. FÀltet Àr inspirerat av forskning som kombinerade Àmnen inom psykologi och datavetenskap.
đ Utmaning
"Genetiska algoritmer Àr enkla att implementera, men deras beteende Àr svÄrt att förstÄ." kÀlla Gör lite forskning för att hitta en implementering av en genetisk algoritm, som att lösa ett Sudoku-pussel, och förklara hur det fungerar som en skiss eller flödesschema.
Quiz efter förelÀsningen
Granskning & SjÀlvstudier
Titta pÄ denna fantastiska video som handlar om hur datorer kan lÀra sig spela Super Mario med hjÀlp av neurala nÀtverk trÀnade av genetiska algoritmer. Vi kommer att lÀra oss mer om hur datorer lÀr sig spela sÄdana spel i nÀsta avsnitt.
Uppgift: Diofantisk Ekvation
Ditt mÄl Àr att lösa den sÄ kallade Diofantiska ekvationen - en ekvation med heltalsrötter. Till exempel, övervÀg ekvationen a+2b+3c+4d=30. Du behöver hitta heltalsrötterna som uppfyller denna ekvation.
Denna uppgift Àr inspirerad av detta inlÀgg.
Tips:
- Du kan övervÀga rötterna att vara i intervallet [0;30]
- Som en gen kan du anvÀnda listan över rotvÀrden
AnvÀnd Diophantine.ipynb som startpunkt.