Klonales Selektionsalgorithmus
Der Klonale Selektionsalgorithmus ist von der Reaktion biologischer Immunsysteme auf Antigene inspiriert.
Wenn das Immunsystem einen Eindringling erkennt, wählt es Immunzellen mit der höchsten Affinität aus, klont diese und führt Mutationen ein, um Vielfalt zu erzeugen. Dieser Prozess, genannt Affinitätsreifung, ermöglicht Anpassung und Gedächtnis.
Der Klonale Selektionsalgorithmus nutzt diese Prinzipien zur Optimierung:
- Bewertung der Kandidatenlösungen hinsichtlich ihrer Affinität (Lösungsqualität);
- Häufigeres Klonen derjenigen mit höherer Affinität;
- Mutation der Klone zur Erzeugung neuer Varianten.
Dieser Prozess erkundet den Lösungsraum und konzentriert sich auf vielversprechende Bereiche.
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ät und Anpassung im Klonalen Selektionsalgorithmus
Der klonale Selektionsalgorithmus erhält die Diversität durch Mutation von Klonen, wodurch neue Kandidatenlösungen erzeugt und vorzeitige Konvergenz vermieden werden. Durch wiederholte Selektion, Klonierung und Mutation – bekannt als Affinitätsreifung – passt sich die Population im Laufe der Zeit an. Dieser Prozess balanciert die Ausnutzung hochwertiger Lösungen mit der Erkundung neuer Möglichkeiten und macht den Algorithmus effektiv für komplexe Optimierungsaufgaben.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 6.25
Klonales Selektionsalgorithmus
Swipe um das Menü anzuzeigen
Der Klonale Selektionsalgorithmus ist von der Reaktion biologischer Immunsysteme auf Antigene inspiriert.
Wenn das Immunsystem einen Eindringling erkennt, wählt es Immunzellen mit der höchsten Affinität aus, klont diese und führt Mutationen ein, um Vielfalt zu erzeugen. Dieser Prozess, genannt Affinitätsreifung, ermöglicht Anpassung und Gedächtnis.
Der Klonale Selektionsalgorithmus nutzt diese Prinzipien zur Optimierung:
- Bewertung der Kandidatenlösungen hinsichtlich ihrer Affinität (Lösungsqualität);
- Häufigeres Klonen derjenigen mit höherer Affinität;
- Mutation der Klone zur Erzeugung neuer Varianten.
Dieser Prozess erkundet den Lösungsraum und konzentriert sich auf vielversprechende Bereiche.
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ät und Anpassung im Klonalen Selektionsalgorithmus
Der klonale Selektionsalgorithmus erhält die Diversität durch Mutation von Klonen, wodurch neue Kandidatenlösungen erzeugt und vorzeitige Konvergenz vermieden werden. Durch wiederholte Selektion, Klonierung und Mutation – bekannt als Affinitätsreifung – passt sich die Population im Laufe der Zeit an. Dieser Prozess balanciert die Ausnutzung hochwertiger Lösungen mit der Erkundung neuer Möglichkeiten und macht den Algorithmus effektiv für komplexe Optimierungsaufgaben.
Danke für Ihr Feedback!