Algorithme de Sélection Clonale
L’algorithme de sélection clonale s’inspire du mode de réponse des systèmes immunitaires biologiques face aux antigènes.
Lorsque le système immunitaire détecte un envahisseur, il sélectionne les cellules immunitaires ayant la plus grande affinité, les clone et introduit des mutations afin de créer de la diversité. Ce processus, appelé maturation d’affinité, permet l’adaptation et la mémoire.
L’algorithme de sélection clonale applique ces principes à l’optimisation :
- Évaluation des solutions candidates selon leur affinité (qualité de la solution) ;
- Clonage plus fréquent des solutions à forte affinité ;
- Mutation des clones pour générer de nouvelles variations.
Ce processus explore l’espace des solutions et cible les zones prometteuses.
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])])
Diversité et adaptation dans la sélection clonale
L’algorithme de sélection clonale maintient la diversité en mutant les clones, générant ainsi de nouvelles solutions candidates et évitant la convergence prématurée. Par une sélection, une clonage et une mutation répétés—appelés maturation d’affinité—la population s’adapte au fil du temps. Ce processus équilibre l’exploitation des solutions de haute qualité avec l’exploration de nouvelles possibilités, rendant l’algorithme efficace pour des tâches d’optimisation complexes.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain how the clonal selection algorithm differs from genetic algorithms?
What are some real-world applications of the clonal selection algorithm?
Can you walk me through the code and explain each step in detail?
Awesome!
Completion rate improved to 6.25
Algorithme de Sélection Clonale
Glissez pour afficher le menu
L’algorithme de sélection clonale s’inspire du mode de réponse des systèmes immunitaires biologiques face aux antigènes.
Lorsque le système immunitaire détecte un envahisseur, il sélectionne les cellules immunitaires ayant la plus grande affinité, les clone et introduit des mutations afin de créer de la diversité. Ce processus, appelé maturation d’affinité, permet l’adaptation et la mémoire.
L’algorithme de sélection clonale applique ces principes à l’optimisation :
- Évaluation des solutions candidates selon leur affinité (qualité de la solution) ;
- Clonage plus fréquent des solutions à forte affinité ;
- Mutation des clones pour générer de nouvelles variations.
Ce processus explore l’espace des solutions et cible les zones prometteuses.
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])])
Diversité et adaptation dans la sélection clonale
L’algorithme de sélection clonale maintient la diversité en mutant les clones, générant ainsi de nouvelles solutions candidates et évitant la convergence prématurée. Par une sélection, une clonage et une mutation répétés—appelés maturation d’affinité—la population s’adapte au fil du temps. Ce processus équilibre l’exploitation des solutions de haute qualité avec l’exploration de nouvelles possibilités, rendant l’algorithme efficace pour des tâches d’optimisation complexes.
Merci pour vos commentaires !