Sección 2. Capítulo 4
single
Desafío: Construir un Algoritmo Genético
Desliza para mostrar el menú
Tarea
Desliza para comenzar a programar
Se te asigna la tarea de implementar el bucle principal de un algoritmo genético para encontrar el valor máximo de una función matemática. La función a optimizar es una parábola simple: f(x) = -(x - 3)² + 10. Esta función tiene un pico claro en x = 3, donde su valor es 10.
Todas las funciones auxiliares (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) y la estructura del bucle principal ya están proporcionadas.
Tu tarea consiste en completar la lógica central del proceso evolutivo:
- Dentro del bucle principal
for, primero debes evaluar toda lapopulationaplicando lafitness_functiona cada individuo. Almacena estos puntajes en la listafitness. - Encuentra el índice del individuo con mejor desempeño en la generación actual y guárdalo en
gen_best_idx. (Sugerencia:np.argmax()es útil aquí). - Dentro del bucle
while len(new_population) < POP_SIZE:, debes crear un nuevo individuo mediante:
- Selección de
parent1usando la funcióntournament_selection. - Selección de
parent2usando la funcióntournament_selection. - Creación de un
childcombinando los padres con la funciónarithmetic_crossover. - Aplicación de variación al
childusando la funciónmutate.
- Después del bucle
while, reemplaza la antiguapopulationcon lanew_populationpara completar la generación.
Solución
¿Todo estuvo claro?
¡Gracias por tus comentarios!
Sección 2. Capítulo 4
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla