Avsnitt 2. Kapitel 4
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:
- Inuti huvudloopen (
for-loopen) ska du först utvärdera helapopulationgenom att tillämpafitness_functionpå varje individ. Spara dessa poäng i listanfitness. - 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). - Inuti loopen
while len(new_population) < POP_SIZE:ska du skapa en ny individ genom att:
- Välja
parent1med hjälp av funktionentournament_selection. - Välja
parent2med hjälp av funktionentournament_selection. - Skapa ett
childgenom att kombinera föräldrarna med funktionenarithmetic_crossover. - Applicera variation på
childmed hjälp av funktionenmutate.
- Efter
while-loopen ska du ersätta den gamlapopulationmednew_populationför att slutföra generationen.
Lösning
Var allt tydligt?
Tack för dina kommentarer!
Avsnitt 2. Kapitel 4
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal