Algoritmo de Seleção Clonal
O algoritmo de seleção clonal é inspirado na forma como os sistemas imunológicos biológicos respondem a antígenos.
Quando o sistema imunológico detecta um invasor, ele seleciona as células imunes com maior afinidade, clona essas células e introduz mutações para criar diversidade. Esse processo, chamado de maturação por afinidade, possibilita adaptação e memória.
O algoritmo de seleção clonal utiliza esses conceitos para otimização:
- Avaliação das soluções candidatas quanto à sua afinidade (qualidade da solução);
- Clonagem mais frequente das soluções com maior afinidade;
- Mutação dos clones para gerar novas variações.
Esse processo explora o espaço de soluções e foca em áreas promissoras.
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])])
Diversidade e Adaptação na Seleção Clonal
O algoritmo de seleção clonal mantém a diversidade ao mutar clones, gerando novas soluções candidatas e evitando a convergência prematura. Por meio da seleção repetida, clonagem e mutação—conhecida como maturação por afinidade—a população se adapta ao longo do tempo. Esse processo equilibra a exploração de soluções de alta qualidade com a exploração de novas possibilidades, tornando o algoritmo eficaz para tarefas complexas de otimização.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 6.25
Algoritmo de Seleção Clonal
Deslize para mostrar o menu
O algoritmo de seleção clonal é inspirado na forma como os sistemas imunológicos biológicos respondem a antígenos.
Quando o sistema imunológico detecta um invasor, ele seleciona as células imunes com maior afinidade, clona essas células e introduz mutações para criar diversidade. Esse processo, chamado de maturação por afinidade, possibilita adaptação e memória.
O algoritmo de seleção clonal utiliza esses conceitos para otimização:
- Avaliação das soluções candidatas quanto à sua afinidade (qualidade da solução);
- Clonagem mais frequente das soluções com maior afinidade;
- Mutação dos clones para gerar novas variações.
Esse processo explora o espaço de soluções e foca em áreas promissoras.
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])])
Diversidade e Adaptação na Seleção Clonal
O algoritmo de seleção clonal mantém a diversidade ao mutar clones, gerando novas soluções candidatas e evitando a convergência prematura. Por meio da seleção repetida, clonagem e mutação—conhecida como maturação por afinidade—a população se adapta ao longo do tempo. Esse processo equilibra a exploração de soluções de alta qualidade com a exploração de novas possibilidades, tornando o algoritmo eficaz para tarefas complexas de otimização.
Obrigado pelo seu feedback!