Implementasi Algoritma Genetika dengan Python

Visualisasi Sederhana Siklus Algoritma Genetika Crossover Mutasi Seleksi

Apa Itu Algoritma Genetika?

Algoritma Genetika (Genetic Algorithm/GA) adalah salah satu teknik optimasi metaheuristik yang terinspirasi oleh proses seleksi alam dan genetika biologis, seperti yang dijelaskan oleh Charles Darwin. Algoritma ini sangat efektif digunakan untuk mencari solusi optimal atau mendekati optimal dari masalah yang memiliki ruang pencarian sangat besar dan kompleks, di mana metode pencarian tradisional mungkin gagal atau membutuhkan waktu komputasi yang sangat lama.

Dalam konteks pemrograman, terutama ketika kita membahas algoritma genetika Python, kita memanfaatkan kekuatan bahasa Python untuk memodelkan konsep-konsep biologis ini: kromosom, populasi, fitness (kebugaran), seleksi, crossover (persilangan), dan mutasi.

Komponen Inti Algoritma Genetika

Setiap implementasi GA harus mendefinisikan lima elemen dasar agar dapat bekerja secara efektif. Keberhasilan GA sangat bergantung pada bagaimana elemen-elemen ini dimodelkan.

1. Kromosom (Representasi Solusi)

Kromosom adalah representasi dari satu solusi potensial. Dalam pemrograman, kromosom biasanya direpresentasikan sebagai string biner (0 dan 1), urutan angka, atau struktur data lain yang sesuai dengan masalah yang sedang diselesaikan. Misalnya, dalam masalah penjadwalan, kromosom mungkin berupa urutan tugas yang harus diselesaikan.

2. Populasi Awal

Ini adalah sekumpulan awal dari kromosom yang dibuat secara acak. Semakin beragam populasi awal, semakin besar kemungkinan algoritma menemukan area solusi yang luas di ruang pencarian.

3. Fungsi Fitness (Kebugaran)

Ini adalah inti dari GA. Fungsi fitness bertugas menilai seberapa "baik" atau "layak" suatu kromosom dalam memecahkan masalah. Nilai fitness yang lebih tinggi menunjukkan solusi yang lebih baik. Perancangan fungsi fitness yang akurat sangat krusial.

4. Seleksi

Proses di mana kromosom "terbugar" (fitness tinggi) diberi peluang lebih besar untuk dipilih sebagai induk bagi generasi berikutnya. Metode seleksi yang umum meliputi Roulette Wheel Selection atau Tournament Selection.

5. Operator Genetika: Crossover dan Mutasi

Implementasi Algoritma Genetika Python

Python sangat populer untuk implementasi GA berkat ekosistem pustaka ilmiahnya yang kuat, seperti NumPy untuk manipulasi array dan SciPy. Meskipun kita bisa membangunnya dari nol, banyak pengembang memilih menggunakan pustaka khusus.

Menggunakan Pustaka DEAP

Salah satu kerangka kerja (framework) paling populer untuk membangun GA di Python adalah DEAP (Distributed Evolutionary Algorithms in Python). DEAP menyediakan struktur modular untuk mendefinisikan semua komponen GA (kromosom, operator, dll.) secara efisien.

Berikut adalah kerangka dasar bagaimana Anda mendefinisikan masalah Anda menggunakan Python dan konsep GA:

# Contoh konsep dasar
import random

# 1. Definisi Kromosom (misalnya, string biner panjang 10)
def create_individual(length=10):
    return [random.randint(0, 1) for _ in range(length)]

# 2. Fungsi Fitness (misalnya, jumlah angka 1)
def fitness_function(individual):
    return sum(individual)

# 3. Proses Generasi Berikutnya (Siklus GA)
populasi = [create_individual() for _ in range(100)]
generasi = 0

while generasi < 50:
    # Seleksi (Pilih yang terbaik)
    # ...

    # Crossover dan Mutasi
    # ...

    # Buat populasi baru
    # ...

    # Evaluasi fitness populasi baru
    # ...
    
    generasi += 1

Kelebihan dan Tantangan

Kelebihan utama dari algoritma genetika Python adalah kemampuannya menangani masalah optimasi yang non-linear dan multivariabel. GA juga bersifat paralel dan tidak memerlukan turunan (gradien) dari fungsi objektif, yang membuatnya fleksibel untuk berbagai jenis fungsi.

Namun, ada tantangan yang perlu diperhatikan. Waktu komputasi bisa menjadi mahal, terutama jika populasi besar dan fungsi fitness kompleks. Selain itu, hasil akhir seringkali merupakan solusi yang 'cukup baik' (mendekati optimal) dan bukan solusi optimal yang terjamin secara matematis. Penyetelan parameter (seperti laju mutasi dan crossover) juga memerlukan eksperimen yang cermat.