Algoritmo de Selección Clonal
El algoritmo de selección clonal se inspira en la forma en que los sistemas inmunológicos biológicos responden a los antígenos.
Cuando el sistema inmunológico detecta un invasor, selecciona las células inmunitarias con mayor afinidad, las clona e introduce mutaciones para crear diversidad. Este proceso, denominado maduración por afinidad, permite la adaptación y la memoria.
El algoritmo de selección clonal utiliza estas ideas para la optimización:
- Evaluar las soluciones candidatas según su afinidad (calidad de la solución);
- Clonar con mayor frecuencia aquellas con mayor afinidad;
- Mutar los clones para generar nuevas variaciones.
Este proceso explora el espacio de soluciones y se enfoca en las áreas más prometedoras.
123456789101112131415161718192021222324252627282930313233import numpy as np # Objective function: maximize f(x) = -x**2 + 5 def affinity(x): return -x**2 + 5 # Initial candidate solutions population = np.random.uniform(-5, 5, size=10) # --- Main Clonal Selection Loop --- for generation in range(5): # Evaluate affinities affinities = np.array([affinity(ind) for ind in population]) # Select top candidates num_selected = 4 selected_indices = affinities.argsort()[-num_selected:] selected = population[selected_indices] # Clone proportionally to affinity num_clones = [int(5 * (affinity(ind) - min(affinities)) / (max(affinities) - min(affinities) + 1e-6)) + 1 for ind in selected] clones = np.concatenate([[ind] * n for ind, n in zip(selected, num_clones)]) # Mutation: add small noise mutation_strength = 0.1 mutated_clones = clones + np.random.normal(0, mutation_strength, size=clones.shape) # Form new population population = np.concatenate([selected, mutated_clones]) # Keep population size fixed population = np.random.choice(population, size=10, replace=False) print("Best solution:", population[np.argmax([affinity(ind) for ind in population])])
Diversidad y Adaptación en la Selección Clonal
El algoritmo de selección clonal mantiene la diversidad mediante la mutación de clones, generando nuevas soluciones candidatas y evitando la convergencia prematura. A través de la selección repetida, clonación y mutación—conocida como maduración por afinidad—la población se adapta con el tiempo. Este proceso equilibra la explotación de soluciones de alta calidad con la exploración de nuevas posibilidades, haciendo que el algoritmo sea eficaz para tareas complejas de optimización.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 6.25
Algoritmo de Selección Clonal
Desliza para mostrar el menú
El algoritmo de selección clonal se inspira en la forma en que los sistemas inmunológicos biológicos responden a los antígenos.
Cuando el sistema inmunológico detecta un invasor, selecciona las células inmunitarias con mayor afinidad, las clona e introduce mutaciones para crear diversidad. Este proceso, denominado maduración por afinidad, permite la adaptación y la memoria.
El algoritmo de selección clonal utiliza estas ideas para la optimización:
- Evaluar las soluciones candidatas según su afinidad (calidad de la solución);
- Clonar con mayor frecuencia aquellas con mayor afinidad;
- Mutar los clones para generar nuevas variaciones.
Este proceso explora el espacio de soluciones y se enfoca en las áreas más prometedoras.
123456789101112131415161718192021222324252627282930313233import numpy as np # Objective function: maximize f(x) = -x**2 + 5 def affinity(x): return -x**2 + 5 # Initial candidate solutions population = np.random.uniform(-5, 5, size=10) # --- Main Clonal Selection Loop --- for generation in range(5): # Evaluate affinities affinities = np.array([affinity(ind) for ind in population]) # Select top candidates num_selected = 4 selected_indices = affinities.argsort()[-num_selected:] selected = population[selected_indices] # Clone proportionally to affinity num_clones = [int(5 * (affinity(ind) - min(affinities)) / (max(affinities) - min(affinities) + 1e-6)) + 1 for ind in selected] clones = np.concatenate([[ind] * n for ind, n in zip(selected, num_clones)]) # Mutation: add small noise mutation_strength = 0.1 mutated_clones = clones + np.random.normal(0, mutation_strength, size=clones.shape) # Form new population population = np.concatenate([selected, mutated_clones]) # Keep population size fixed population = np.random.choice(population, size=10, replace=False) print("Best solution:", population[np.argmax([affinity(ind) for ind in population])])
Diversidad y Adaptación en la Selección Clonal
El algoritmo de selección clonal mantiene la diversidad mediante la mutación de clones, generando nuevas soluciones candidatas y evitando la convergencia prematura. A través de la selección repetida, clonación y mutación—conocida como maduración por afinidad—la población se adapta con el tiempo. Este proceso equilibra la explotación de soluciones de alta calidad con la exploración de nuevas posibilidades, haciendo que el algoritmo sea eficaz para tareas complejas de optimización.
¡Gracias por tus comentarios!