single
Herausforderung: Entwicklung Eines Genetischen Algorithmus
Swipe um das Menü anzuzeigen
Wischen, um mit dem Codieren zu beginnen
Sie sollen die Hauptschleife eines genetischen Algorithmus implementieren, um den Maximalwert einer mathematischen Funktion zu finden. Die zu optimierende Funktion ist eine einfache Parabel: f(x) = -(x - 3)² + 10. Diese Funktion hat ein deutliches Maximum bei x = 3 mit dem Funktionswert 10.
Alle Hilfsfunktionen (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) sowie die Struktur der Hauptschleife sind bereits vorgegeben.
Ihre Aufgabe ist es, die Kernlogik des evolutionären Prozesses auszufüllen:
- Innerhalb der Haupt-
for-Schleife muss zunächst die gesamtepopulationbewertet werden, indem diefitness_functionauf jedes Individuum angewendet wird. Speichern Sie diese Werte in der Listefitness. - Ermitteln Sie den Index des leistungsstärksten Individuums der aktuellen Generation und speichern Sie ihn in
gen_best_idx. (Tipp:np.argmax()ist hierfür hilfreich). - Innerhalb der Schleife
while len(new_population) < POP_SIZE:muss ein neues Individuum erzeugt werden durch:
- Auswahl von
parent1mit der Funktiontournament_selection. - Auswahl von
parent2mit der Funktiontournament_selection. - Erzeugung eines
childdurch Kombination der Eltern mit der Funktionarithmetic_crossover. - Anwendung von Variation auf das
childmit der Funktionmutate.
- Nach der
while-Schleife die altepopulationdurch dienew_populationersetzen, um die Generation abzuschließen.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen