Klonal Selektionsalgoritm
Klonal selektionsalgoritmen är inspirerad av hur biologiska immunsystem svarar på antigener.
När immunsystemet upptäcker en inkräktare väljs immunceller med högst affinitet ut, klonas och utsätts för mutationer för att skapa mångfald. Denna process, kallad affinitetsmognad, möjliggör anpassning och minne.
Klonal selektionsalgoritmen använder dessa idéer för optimering:
- Utvärdera kandidatlösningar utifrån deras affinitet (lösningskvalitet);
- Klona de med högre affinitet oftare;
- Mutera kloner för att generera nya variationer.
Denna process utforskar lösningsrymden och fokuserar på lovande områden.
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])])
Mångfald och anpassning i klonalt urval
Klonalt urvalsalgoritmen upprätthåller mångfald genom att mutera kloner, vilket genererar nya kandidatlösningar och undviker för tidig konvergens. Genom upprepad selektion, kloning och mutation—kallat affinitetsmognad—anpassar sig populationen över tid. Denna process balanserar exploatering av högkvalitativa lösningar med utforskning av nya möjligheter, vilket gör algoritmen effektiv för komplexa optimeringsproblem.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 6.25
Klonal Selektionsalgoritm
Svep för att visa menyn
Klonal selektionsalgoritmen är inspirerad av hur biologiska immunsystem svarar på antigener.
När immunsystemet upptäcker en inkräktare väljs immunceller med högst affinitet ut, klonas och utsätts för mutationer för att skapa mångfald. Denna process, kallad affinitetsmognad, möjliggör anpassning och minne.
Klonal selektionsalgoritmen använder dessa idéer för optimering:
- Utvärdera kandidatlösningar utifrån deras affinitet (lösningskvalitet);
- Klona de med högre affinitet oftare;
- Mutera kloner för att generera nya variationer.
Denna process utforskar lösningsrymden och fokuserar på lovande områden.
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])])
Mångfald och anpassning i klonalt urval
Klonalt urvalsalgoritmen upprätthåller mångfald genom att mutera kloner, vilket genererar nya kandidatlösningar och undviker för tidig konvergens. Genom upprepad selektion, kloning och mutation—kallat affinitetsmognad—anpassar sig populationen över tid. Denna process balanserar exploatering av högkvalitativa lösningar med utforskning av nya möjligheter, vilket gör algoritmen effektiv för komplexa optimeringsproblem.
Tack för dina kommentarer!