single
Défi : Concevoir un Algorithme Génétique
Glissez pour afficher le menu
Glissez pour commencer à coder
Vous devez implémenter la boucle principale d'un algorithme génétique afin de trouver la valeur maximale d'une fonction mathématique. La fonction à optimiser est une simple parabole : f(x) = -(x - 3)² + 10. Cette fonction atteint son sommet en x = 3, où sa valeur est 10.
Toutes les fonctions utilitaires (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) ainsi que la structure de la boucle principale vous sont fournies.
Votre tâche consiste à compléter la logique centrale du processus évolutif :
- À l'intérieur de la boucle principale
for, commencez par évaluer l'ensemble de lapopulationen appliquant lafitness_functionà chaque individu. Stockez ces scores dans la listefitness. - Trouvez l'indice de l'individu le plus performant de la génération courante et stockez-le dans
gen_best_idx. (Astuce :np.argmax()est utile ici). - À l'intérieur de la boucle
while len(new_population) < POP_SIZE:, créez un nouvel individu en :
- Sélectionnant
parent1à l'aide de la fonctiontournament_selection. - Sélectionnant
parent2à l'aide de la fonctiontournament_selection. - Créant un
childen combinant les parents avec la fonctionarithmetic_crossover. - Appliquant une variation au
childà l'aide de la fonctionmutate.
- Après la boucle
while, remplacez l'anciennepopulationpar lanew_populationpour compléter la génération.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion