Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Parametertuning og Konvergens | Genetiske Algoritmer
Bio-inspirerede Algoritmer

bookParametertuning og Konvergens

Note
Definition

Parameterindstilling i genetiske algoritmer refererer til valg og justering af nøgleværdier såsom mutationsrate, crossover-sandsynlighed og populationsstørrelse for at styre algoritmens adfærd og forbedre konvergensen.

Statisk vs. Dynamisk Parameterindstilling

To hovedtilgange findes til styring af parametre i genetiske algoritmer:

  • Statisk parameterindstilling: parametre såsom mutationsrate, crossover-sandsynlighed og populationsstørrelse fastsættes før algoritmen starter og forbliver konstante under udførelsen;
  • Dynamisk (adaptiv) parameterindstilling: parametre justeres automatisk baseret på feedback fra populationen eller algoritmens fremskridt. Adaptiv indstilling hjælper med at opretholde diversitet og undgå for tidlig konvergens.

Statisk indstilling er enkel, men kan være suboptimal, når optimale indstillinger ændrer sig over tid.
Dynamisk indstilling giver fleksibilitet og forbedrer både konvergenshastighed og robusthed.

1234567891011121314151617181920212223242526272829
import 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)
copy

Når populationsdiversiteten falder, bliver individerne for ens, og algoritmen risikerer stagnation. En forøgelse af mutationsraten i disse situationer tilfører nyt genetisk materiale, hvilket hjælper med at undslippe lokale optima. Når diversiteten er høj, muliggør en lavere mutationsrate en mere målrettet udnyttelse af gode løsninger. Denne adaptive styring balancerer dynamisk mellem udforskning og udnyttelse, hvilket forbedrer konvergensens stabilitet.

123456789101112131415161718192021222324
import 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()
copy

Overvågning og konvergens

For at opnå pålidelig konvergens og ydeevne i genetiske algoritmer:

  • Start med parameterværdier fra litteraturen eller tidligere eksperimenter;
  • Brug statiske parametre til simple opgaver, men foretræk adaptiv justering til komplekse problemer;
  • Overvåg målinger som populationsdiversitet, bedste og gennemsnitlig fitness;
  • Justér parametre dynamisk for at opretholde balancen mellem udforskning og udnyttelse.
question mark

Hvilke udsagn om parameterjustering og konvergens i genetiske algoritmer er korrekte? Vælg alle, der passer.

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 6.25

bookParametertuning og Konvergens

Stryg for at vise menuen

Note
Definition

Parameterindstilling i genetiske algoritmer refererer til valg og justering af nøgleværdier såsom mutationsrate, crossover-sandsynlighed og populationsstørrelse for at styre algoritmens adfærd og forbedre konvergensen.

Statisk vs. Dynamisk Parameterindstilling

To hovedtilgange findes til styring af parametre i genetiske algoritmer:

  • Statisk parameterindstilling: parametre såsom mutationsrate, crossover-sandsynlighed og populationsstørrelse fastsættes før algoritmen starter og forbliver konstante under udførelsen;
  • Dynamisk (adaptiv) parameterindstilling: parametre justeres automatisk baseret på feedback fra populationen eller algoritmens fremskridt. Adaptiv indstilling hjælper med at opretholde diversitet og undgå for tidlig konvergens.

Statisk indstilling er enkel, men kan være suboptimal, når optimale indstillinger ændrer sig over tid.
Dynamisk indstilling giver fleksibilitet og forbedrer både konvergenshastighed og robusthed.

1234567891011121314151617181920212223242526272829
import 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)
copy

Når populationsdiversiteten falder, bliver individerne for ens, og algoritmen risikerer stagnation. En forøgelse af mutationsraten i disse situationer tilfører nyt genetisk materiale, hvilket hjælper med at undslippe lokale optima. Når diversiteten er høj, muliggør en lavere mutationsrate en mere målrettet udnyttelse af gode løsninger. Denne adaptive styring balancerer dynamisk mellem udforskning og udnyttelse, hvilket forbedrer konvergensens stabilitet.

123456789101112131415161718192021222324
import 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()
copy

Overvågning og konvergens

For at opnå pålidelig konvergens og ydeevne i genetiske algoritmer:

  • Start med parameterværdier fra litteraturen eller tidligere eksperimenter;
  • Brug statiske parametre til simple opgaver, men foretræk adaptiv justering til komplekse problemer;
  • Overvåg målinger som populationsdiversitet, bedste og gennemsnitlig fitness;
  • Justér parametre dynamisk for at opretholde balancen mellem udforskning og udnyttelse.
question mark

Hvilke udsagn om parameterjustering og konvergens i genetiske algoritmer er korrekte? Vælg alle, der passer.

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 3
some-alt