You are on page 1of 2

example1

July 6, 2023

[8]: import random

# Genetic Algorithm parameters


population_size = 3000
chromosome_length = 12
mutation_rate = 0.04
generations = 150

# Generate initial population


def create_individual():
return [random.randint(0, 1) for _ in range(chromosome_length)]

population = [create_individual() for _ in range(population_size)]

# Fitness function (example: maximizing the number of ones in the chromosome)


def calculate_fitness(individual):
return sum(individual)

# Selection (tournament selection)


def selection(population):
tournament_size = 3
tournament = random.sample(population, tournament_size)
tournament.sort(key=lambda x: calculate_fitness(x), reverse=True)
return tournament[0]

# Crossover (single-point crossover)


def crossover(parent1, parent2):
crossover_point = random.randint(1, chromosome_length - 1)
child = parent1[:crossover_point] + parent2[crossover_point:]
return child

# Mutation (bit-flip mutation)


def mutation(individual):
for i in range(chromosome_length):
if random.random() < mutation_rate:
individual[i] = 1 - individual[i]
return individual

1
# Genetic algorithm main loop
for _ in range(generations):
next_generation = []
for _ in range(population_size):
parent1 = selection(population)
parent2 = selection(population)
child = crossover(parent1, parent2)
child = mutation(child)
next_generation.append(child)
population = next_generation

# Find the best individual in the final population


best_individual = max(population, key=lambda x: calculate_fitness(x))

# Print the best individual and its fitness


print("Best individual:", best_individual)
print("Fitness:", calculate_fitness(best_individual))

Best individual: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]


Fitness: 12

You might also like