Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Rakenna Geneettinen Algoritmi | Geneettiset Algoritmit
Bioinspiroituneet Algoritmit
Osio 2. Luku 4
single

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:

  1. Pääsilmukan sisällä (for-silmukassa) arvioi koko population käyttämällä fitness_function-funktiota jokaiselle yksilölle. Tallenna nämä arvot fitness-listaan.
  2. Etsi nykyisen sukupolven parhaan yksilön indeksi ja tallenna se muuttujaan gen_best_idx. (Vihje: käytä np.argmax().)
  3. Silmukassa while len(new_population) < POP_SIZE: luo uusi yksilö seuraavasti:
    • Valitse parent1 käyttämällä tournament_selection-funktiota.
    • Valitse parent2 käyttämällä tournament_selection-funktiota.
    • Luo child yhdistämällä vanhemmat arithmetic_crossover-funktiolla.
    • Lisää vaihtelua child-yksilöön mutate-funktiolla.
  4. while-silmukan jälkeen korvaa vanha population uudella new_population-listalla, jotta sukupolvi päivittyy.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 4
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt