Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Bygg en Genetisk Algoritm | Genetiska Algoritmer
Bioinspirerade Algoritmer
Avsnitt 2. Kapitel 4
single

single

Utmaning: Bygg en Genetisk Algoritm

Svep för att visa menyn

Uppgift

Svep för att börja koda

Du ska implementera huvudloopen i en genetisk algoritm för att hitta det maximala värdet av en matematisk funktion. Funktionen som ska optimeras är en enkel parabel: f(x) = -(x - 3)² + 10. Denna funktion har en tydlig topp vid x = 3, där dess värde är 10.

Alla hjälpfunktioner (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) samt strukturen för huvudloopen är redan tillhandahållna.

Din uppgift är att fylla i kärnlogiken för den evolutionära processen:

  1. Inuti huvudloopen (for-loopen) ska du först utvärdera hela population genom att tillämpa fitness_function på varje individ. Spara dessa poäng i listan fitness.
  2. Hitta indexet för den bäst presterande individen i den aktuella generationen och spara det i gen_best_idx. (Tips: np.argmax() är användbart här).
  3. Inuti loopen while len(new_population) < POP_SIZE: ska du skapa en ny individ genom att:
  • Välja parent1 med hjälp av funktionen tournament_selection.
  • Välja parent2 med hjälp av funktionen tournament_selection.
  • Skapa ett child genom att kombinera föräldrarna med funktionen arithmetic_crossover.
  • Applicera variation på child med hjälp av funktionen mutate.
  1. Efter while-loopen ska du ersätta den gamla population med new_population för att slutföra generationen.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt