Du skal implementere hovedløkken i en genetisk algoritme for at finde maksimumværdien af en matematisk funktion. Funktionen, der skal optimeres, er en simpel parabel: f(x) = -(x - 3)² + 10. Denne funktion har et tydeligt toppunkt ved x = 3, hvor dens værdi er 10.
Alle hjælpefunktioner (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) samt hovedstruktur for løkken er givet på forhånd.
Din opgave er at udfylde den centrale logik i den evolutionære proces:
- Inden for hoved-
for-løkken skal du først evaluere helepopulationved at anvendefitness_functionpå hver enkelt individ. Gem disse scorer i listenfitness. - Find indekset for det bedst præsterende individ i den aktuelle generation og gem det i
gen_best_idx. (Tip:np.argmax()er nyttig her). - Inden for løkken
while len(new_population) < POP_SIZE:skal du oprette et nyt individ ved at:
- Udvælge
parent1ved hjælp af funktionentournament_selection. - Udvælge
parent2ved hjælp af funktionentournament_selection. - Oprette et
childved at kombinere forældrene med funktionenarithmetic_crossover. - Anvende variation på
childved hjælp af funktionenmutate.
- Efter
while-løkken skal du erstatte den gamlepopulationmednew_populationfor at fuldføre generationen.
Tak for dine kommentarer!
single
Udfordring: Opbyg et Genetisk Algoritme
Stryg for at vise menuen
Swipe to start coding
Du skal implementere hovedløkken i en genetisk algoritme for at finde maksimumværdien af en matematisk funktion. Funktionen, der skal optimeres, er en simpel parabel: f(x) = -(x - 3)² + 10. Denne funktion har et tydeligt toppunkt ved x = 3, hvor dens værdi er 10.
Alle hjælpefunktioner (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) samt hovedstruktur for løkken er givet på forhånd.
Din opgave er at udfylde den centrale logik i den evolutionære proces:
- Inden for hoved-
for-løkken skal du først evaluere helepopulationved at anvendefitness_functionpå hver enkelt individ. Gem disse scorer i listenfitness. - Find indekset for det bedst præsterende individ i den aktuelle generation og gem det i
gen_best_idx. (Tip:np.argmax()er nyttig her). - Inden for løkken
while len(new_population) < POP_SIZE:skal du oprette et nyt individ ved at:
- Udvælge
parent1ved hjælp af funktionentournament_selection. - Udvælge
parent2ved hjælp af funktionentournament_selection. - Oprette et
childved at kombinere forældrene med funktionenarithmetic_crossover. - Anvende variation på
childved hjælp af funktionenmutate.
- Efter
while-løkken skal du erstatte den gamlepopulationmednew_populationfor at fuldføre generationen.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat