Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

KELOMPOK 4

Alif Aditya Ramadhani

3122522015

D3 PSDKU SUMENEP

PRODI D3 TEKNIK INFORMATIKA

DEPARTEMEN TEKNIK INFORMATIKA DAN KOMPUTER

PENS PSDKU SUMENEP


import random

# Kata target
target_word = "MATCHING"

# Kamus karakter yang dapat digunakan


characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

# Fungsi untuk membuat individu acak


def create_individual():
return ''.join(random.choice(characters) for _ in range(len(target_word)))

# Fungsi untuk menghitung nilai fitness


def fitness(individual):
return sum(1 for expected, actual in zip(target_word, individual) if
expected == actual)

# Fungsi untuk melakukan crossover


def crossover(parent1, parent2):
crossover_point = random.randint(0, len(target_word) - 1)
child1 = parent1[:crossover_point] + parent2[crossover_point:]
child2 = parent2[:crossover_point] + parent1[crossover_point:]
return child1, child2

# Fungsi untuk melakukan mutasi


def mutate(individual, probability):
mutated_individual = ""
for char in individual:
if random.random() < probability:
mutated_individual += random.choice(characters)
else:
mutated_individual += char
return mutated_individual

# Fungsi untuk menjalankan algoritma genetika


def genetic_algorithm(population_size, crossover_probability,
mutation_probability, iterations):
population = [create_individual() for _ in range(population_size)]

for generation in range(iterations):


population = sorted(population, key=lambda x: fitness(x),
reverse=True)

# Cetak output setiap generasi


print("Generasi:", generation + 1)
print("Kata terbaik:", population[0])
print("Fitness:", fitness(population[0]))
print()
if fitness(population[0]) == len(target_word):
break

next_generation = population[:2] # Memilih 2 individu terbaik untuk


tetap ada di generasi berikutnya

while len(next_generation) < population_size:


if random.random() < crossover_probability:
parent1, parent2 = random.choices(population, k=2)
child1, child2 = crossover(parent1, parent2)
next_generation.extend([mutate(child1, mutation_probability),
mutate(child2, mutation_probability)])
else:
next_generation.append(mutate(random.choice(population),
mutation_probability))

population = next_generation

return population[0]

# Menjalankan algoritma genetika


best_individual = genetic_algorithm(50, 0.5, 0.05, 10)
print("Kata terbaik ditemukan:", best_individual)
print("Fitness kata terbaik:", fitness(best_individual))
output

You might also like