Osio 2. Luku 4
single
Haaste: Rakenna Geneettinen Algoritmi
Pyyhkäise näyttääksesi valikon
Tehtävä
Pyyhkäise aloittaaksesi koodauksen
Sinun tehtävänäsi on toteuttaa geneettisen algoritmin pääsilmukka, jonka tarkoituksena on löytää matemaattisen funktion maksimiarvo. Optimoitava funktio on yksinkertainen paraabeli: f(x) = -(x - 3)² + 10. Tällä funktiolla on selkeä huippu kohdassa x = 3, jolloin sen arvo on 10.
Kaikki apufunktiot (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) sekä pääsilmukan rakenne on annettu valmiiksi.
Tehtävänäsi on täydentää evoluutioprosessin ydinlogiikka:
- Pääsilmukan sisällä (
for-silmukassa) arvioi kokopopulationkäyttämälläfitness_function-funktiota jokaiselle yksilölle. Tallenna nämä arvotfitness-listaan. - Etsi nykyisen sukupolven parhaan yksilön indeksi ja tallenna se muuttujaan
gen_best_idx. (Vihje: käytänp.argmax().) - Silmukassa
while len(new_population) < POP_SIZE:luo uusi yksilö seuraavasti:- Valitse
parent1käyttämällätournament_selection-funktiota. - Valitse
parent2käyttämällätournament_selection-funktiota. - Luo
childyhdistämällä vanhemmatarithmetic_crossover-funktiolla. - Lisää vaihtelua
child-yksilöönmutate-funktiolla.
- Valitse
while-silmukan jälkeen korvaa vanhapopulationuudellanew_population-listalla, jotta sukupolvi päivittyy.
Ratkaisu
Oliko kaikki selvää?
Kiitos palautteestasi!
Osio 2. Luku 4
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme