Ajuste de Parâmetros e Convergência
Ajuste de parâmetros em algoritmos genéticos refere-se à seleção e ajuste de valores-chave como taxa de mutação, probabilidade de cruzamento e tamanho da população para controlar o comportamento do algoritmo e melhorar a convergência.
Ajuste Estático vs. Dinâmico de Parâmetros
Existem duas abordagens principais para o controle de parâmetros em algoritmos genéticos:
- Ajuste estático de parâmetros: parâmetros como taxa de mutação, probabilidade de cruzamento e tamanho da população são definidos antes do início do algoritmo e permanecem constantes durante a execução;
- Ajuste dinâmico (adaptativo) de parâmetros: os parâmetros são ajustados automaticamente com base no feedback da população ou no progresso do algoritmo. O ajuste adaptativo auxilia na manutenção da diversidade e evita a convergência prematura.
O ajuste estático é simples, mas pode ser subótimo quando as configurações ideais mudam ao longo do tempo.
O ajuste dinâmico proporciona flexibilidade, melhorando tanto a velocidade de convergência quanto a robustez.
1234567891011121314151617181920212223242526272829import numpy as np def adaptive_mutation_rate(population, min_rate=0.01, max_rate=0.2): """ Adjusts mutation rate based on population diversity. Diversity is measured as the average Hamming distance between individuals. """ def hamming_distance(ind1, ind2): return sum(a != b for a, b in zip(ind1, ind2)) n = len(population) if n < 2: return min_rate # No diversity in a single-individual population # Compute average Hamming distance distances = [] for i in range(n): for j in range(i + 1, n): distances.append(hamming_distance(population[i], population[j])) avg_distance = np.mean(distances) max_distance = len(population[0]) # Normalize diversity diversity = avg_distance / max_distance if max_distance else 0 # Inverse relationship: lower diversity -> higher mutation mutation_rate = max_rate - (max_rate - min_rate) * diversity return np.clip(mutation_rate, min_rate, max_rate)
Quando a diversidade da população diminui, os indivíduos tornam-se muito semelhantes e o algoritmo corre o risco de estagnação. Aumentar a taxa de mutação nesses momentos injeta novo material genético, auxiliando na fuga de ótimos locais. Quando a diversidade está alta, reduzir a mutação permite uma exploração mais focada de boas soluções. Esse controle adaptativo equilibra dinamicamente a exploração e a exploração, melhorando a estabilidade da convergência.
123456789101112131415161718192021222324import matplotlib.pyplot as plt # Simulate parameter and fitness changes for illustration generations = np.arange(1, 51) mutation_rates = np.linspace(0.2, 0.01, 50) + 0.02 * np.random.randn(50) avg_fitness = np.linspace(10, 90, 50) + 5 * np.random.randn(50) plt.figure(figsize=(10, 5)) plt.subplot(1, 2, 1) plt.plot(generations, mutation_rates, label="Mutation Rate") plt.xlabel("Generation") plt.ylabel("Mutation Rate") plt.title("Adaptive Mutation Rate Over Time") plt.legend() plt.subplot(1, 2, 2) plt.plot(generations, avg_fitness, color="green", label="Average Fitness") plt.xlabel("Generation") plt.ylabel("Average Fitness") plt.title("Population Fitness Over Time") plt.legend() plt.tight_layout() plt.show()
Monitoramento e Convergência
Para alcançar convergência e desempenho confiáveis em algoritmos genéticos:
- Iniciar com faixas de parâmetros provenientes da literatura ou de experimentos anteriores;
- Utilizar parâmetros estáticos para tarefas simples, mas preferir ajuste adaptativo para problemas complexos;
- Monitorar métricas como diversidade populacional, melhor e média de aptidão;
- Ajustar parâmetros dinamicamente para manter o equilíbrio entre exploração e exploração.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 6.25
Ajuste de Parâmetros e Convergência
Deslize para mostrar o menu
Ajuste de parâmetros em algoritmos genéticos refere-se à seleção e ajuste de valores-chave como taxa de mutação, probabilidade de cruzamento e tamanho da população para controlar o comportamento do algoritmo e melhorar a convergência.
Ajuste Estático vs. Dinâmico de Parâmetros
Existem duas abordagens principais para o controle de parâmetros em algoritmos genéticos:
- Ajuste estático de parâmetros: parâmetros como taxa de mutação, probabilidade de cruzamento e tamanho da população são definidos antes do início do algoritmo e permanecem constantes durante a execução;
- Ajuste dinâmico (adaptativo) de parâmetros: os parâmetros são ajustados automaticamente com base no feedback da população ou no progresso do algoritmo. O ajuste adaptativo auxilia na manutenção da diversidade e evita a convergência prematura.
O ajuste estático é simples, mas pode ser subótimo quando as configurações ideais mudam ao longo do tempo.
O ajuste dinâmico proporciona flexibilidade, melhorando tanto a velocidade de convergência quanto a robustez.
1234567891011121314151617181920212223242526272829import numpy as np def adaptive_mutation_rate(population, min_rate=0.01, max_rate=0.2): """ Adjusts mutation rate based on population diversity. Diversity is measured as the average Hamming distance between individuals. """ def hamming_distance(ind1, ind2): return sum(a != b for a, b in zip(ind1, ind2)) n = len(population) if n < 2: return min_rate # No diversity in a single-individual population # Compute average Hamming distance distances = [] for i in range(n): for j in range(i + 1, n): distances.append(hamming_distance(population[i], population[j])) avg_distance = np.mean(distances) max_distance = len(population[0]) # Normalize diversity diversity = avg_distance / max_distance if max_distance else 0 # Inverse relationship: lower diversity -> higher mutation mutation_rate = max_rate - (max_rate - min_rate) * diversity return np.clip(mutation_rate, min_rate, max_rate)
Quando a diversidade da população diminui, os indivíduos tornam-se muito semelhantes e o algoritmo corre o risco de estagnação. Aumentar a taxa de mutação nesses momentos injeta novo material genético, auxiliando na fuga de ótimos locais. Quando a diversidade está alta, reduzir a mutação permite uma exploração mais focada de boas soluções. Esse controle adaptativo equilibra dinamicamente a exploração e a exploração, melhorando a estabilidade da convergência.
123456789101112131415161718192021222324import matplotlib.pyplot as plt # Simulate parameter and fitness changes for illustration generations = np.arange(1, 51) mutation_rates = np.linspace(0.2, 0.01, 50) + 0.02 * np.random.randn(50) avg_fitness = np.linspace(10, 90, 50) + 5 * np.random.randn(50) plt.figure(figsize=(10, 5)) plt.subplot(1, 2, 1) plt.plot(generations, mutation_rates, label="Mutation Rate") plt.xlabel("Generation") plt.ylabel("Mutation Rate") plt.title("Adaptive Mutation Rate Over Time") plt.legend() plt.subplot(1, 2, 2) plt.plot(generations, avg_fitness, color="green", label="Average Fitness") plt.xlabel("Generation") plt.ylabel("Average Fitness") plt.title("Population Fitness Over Time") plt.legend() plt.tight_layout() plt.show()
Monitoramento e Convergência
Para alcançar convergência e desempenho confiáveis em algoritmos genéticos:
- Iniciar com faixas de parâmetros provenientes da literatura ou de experimentos anteriores;
- Utilizar parâmetros estáticos para tarefas simples, mas preferir ajuste adaptativo para problemas complexos;
- Monitorar métricas como diversidade populacional, melhor e média de aptidão;
- Ajustar parâmetros dinamicamente para manter o equilíbrio entre exploração e exploração.
Obrigado pelo seu feedback!