Алгоритм Клонального Відбору
Алгоритм клонального відбору натхненний тим, як біологічна імунна система реагує на антигени.
Коли імунна система виявляє чужорідний об'єкт, вона обирає імунні клітини з найвищою афінністю, клонує їх і вводить мутації для створення різноманіття. Цей процес, що називається дозріванням афінності, забезпечує адаптацію та пам'ять.
Алгоритм клонального відбору використовує ці ідеї для оптимізації:
- Оцінка кандидатних рішень за їхньою афінністю (якість рішення);
- Частіше клонування рішень з вищою афінністю;
- Мутація клонів для створення нових варіацій.
Цей процес досліджує простір рішень і зосереджується на перспективних областях.
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])])
Різноманітність і адаптація в алгоритмі клонального відбору
Алгоритм клонального відбору підтримує різноманітність шляхом мутації клонів, створюючи нові кандидатні розв'язки та запобігаючи передчасній збіжності. Завдяки повторюваному відбору, клонуванню та мутації — процесу, відомому як дозрівання афінності — популяція адаптується з часом. Цей процес забезпечує баланс між експлуатацією якісних розв'язків і дослідженням нових можливостей, що робить алгоритм ефективним для складних задач оптимізації.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Алгоритм Клонального Відбору
Свайпніть щоб показати меню
Алгоритм клонального відбору натхненний тим, як біологічна імунна система реагує на антигени.
Коли імунна система виявляє чужорідний об'єкт, вона обирає імунні клітини з найвищою афінністю, клонує їх і вводить мутації для створення різноманіття. Цей процес, що називається дозріванням афінності, забезпечує адаптацію та пам'ять.
Алгоритм клонального відбору використовує ці ідеї для оптимізації:
- Оцінка кандидатних рішень за їхньою афінністю (якість рішення);
- Частіше клонування рішень з вищою афінністю;
- Мутація клонів для створення нових варіацій.
Цей процес досліджує простір рішень і зосереджується на перспективних областях.
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])])
Різноманітність і адаптація в алгоритмі клонального відбору
Алгоритм клонального відбору підтримує різноманітність шляхом мутації клонів, створюючи нові кандидатні розв'язки та запобігаючи передчасній збіжності. Завдяки повторюваному відбору, клонуванню та мутації — процесу, відомому як дозрівання афінності — популяція адаптується з часом. Цей процес забезпечує баланс між експлуатацією якісних розв'язків і дослідженням нових можливостей, що робить алгоритм ефективним для складних задач оптимізації.
Дякуємо за ваш відгук!