Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Algoritmo de Selección Clonal | Sistemas Inmunológicos Artificiales
Algoritmos Bioinspirados

bookAlgoritmo de Selección Clonal

Note
Definición

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.

123456789101112131415161718192021222324252627282930313233
import 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])])
copy

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.

question mark

¿Cuáles afirmaciones sobre el algoritmo de selección clonal son correctas?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 6.25

bookAlgoritmo de Selección Clonal

Desliza para mostrar el menú

Note
Definición

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.

123456789101112131415161718192021222324252627282930313233
import 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])])
copy

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.

question mark

¿Cuáles afirmaciones sobre el algoritmo de selección clonal son correctas?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3
some-alt