BAB I PENDAHULUAN 1
C. Masalah Knapsack
Kasus yang akan dipecahkan disini dimisalkan terdapat n obyek dengan masing-masing obyeknya dikatakan sebagai((xi;i=1,2,3,....n) yang masing-masing obyek tersebut mempunyai berat atau disebut wi. Setiap obyek tersebut masing-masing memiliki nilai (profit) pi yang berbeda-beda. Yang menjadi permasalahan adalah bagaimana obyek-obyek tersebut dapat dimuat atau dimasukkan kedalam ransel (Knapsack) yang mempunyai
kpasitas maksimum sebesar W sehingga timbul permasalahan sebagai
berikut:
• Bagaimana menentukan atau memilih beberapa obyek yang akan
dimuat dari n obyek yang ada sedemikian sehingga nilai kumulatif obyek yang termuat dalam ransel itu jumlahnya maksimum sesuai dengan kapasitas ransel
(
≤W)
?• Jika semua obyek yang harus dimuat kedalam ransel, maka berapa
bagian dari setiap obyek yang ada dapat dimuat ke dalam ransel sedemikian sehingga nilai kumulatifnya maksimum dan sesuai dengan kapasitas ransel?
Penyelesaian secara Matematika
Dalam beberapa literatur, istilah lain dari fungsi tujuan dapat disebut sebagai fungsi utama atau juga fungsi obyektif yaitu fungsi yang menjadi penyelesaian permasalahan dengan mendapatkan solusi yang optimal. Solusi yang dimaksud adalah menemukan nilai (profit) yang maksimal untuk
BAB III
ALGORITMA GENETIKA
UNTUK MASALAH KNAPSACK
Pada skripsi ini akan dibuat sistem dengan menggunakan algoritma untuk membantu user dalam menyelesaikan masalah knapsack dengan waktu yang lebih singkat Penulis membangun sistem ini dengan menggunakan bahasa pemrograman MATLAB.
Di bawah ini akan dituliskan secara rinci penggunaan algoritma genetika untuk menyelesaikan masalah knapsack.
A. Analisis
A. Representasi Masalah
Hal yang paling penting dalam menyelesaikan masalah optimasi adalah representasi atau pemodelan masalah ke dalam suatu model yang sesuai dengan algoritma yang digunakan. Untuk menyelesaikan masalah knapsack dengan algoritma genetika, maka masalah harus direpresentasikan atau dimodelkan terlebih dahulu. Jenis representasi yang dapat digunakan untuk menyelesaikan masalah Knapsack:
a. Binary representation approach b. Order representation approach
c. Variable-length representation approach
Untuk menyelesaikan masalah knapsack akan digunakan Binary
knapsack dalam bentuk string biner 0/1. Dimana 1 berarti pemasukan salah satu obyek dan 0 berarti pengeluaran salah satu obyek dari n obyek yang ada didalam knapsack.
Masalah knapsack dapat diformulasikan sebagai berikut: Misalkan dipunyai sejumlah nilai p1,p2,...,pn dan jumlah S dan harus dihitung nilai
n x x
x1, 2,...., sehingga nantinya didapat hasil S = p1x1+ p2x2 +....+ pnxn. Nilai dari koefisien xi sama dengan 1 atau 0 yag mengindikasikan bahwa obyek ada atau tidak ada dalam ransel.
Representasi ini mengkodekan komposisi barang yang dapat termuat dalam ransel sebagai urutan operasi dan setiap gen mewakili satu operasi. Contoh: Misalkan terdapat 10 buah barang yang akan dimuat ke dalam ransel (knapsack) yang mempunyai kapasitas daya muat maksimum 100 kg. Masing-masing barang tersebut mempunyi berat 40 kg, 50 kg, 30 kg, 10 kg, 10 kg, 40 kg, 30 kg, 20 kg.30 kg, dan 20 kg dan selain itu masing-masing barang juga memiliki nilai, yaitu 40, 60, 10, 10, 3, 20, 60, 20,10, dan 20.
Tabel 3.1.1 Daftar 10 barang yang akan dimuat ke dalam ransel
n=10, W=100
Bobot/berat(w) 40 50 30 10 10 40 30 20 30 20 Nilai/profit(p) 40 60 10 10 3 20 60 20 10 20
Sasaran dari contoh ini jelas yaitu memaksimalkan nilai tanpa melebihi batas W=100. Ukuran populasi (population size) yang digunakan adalah antara 10 sampai 1000, hal ini dimaksudkan untuk mengetahui
pengaruh dari ukuran populasi terhadap kecepatan terjadinya konvergensi solusi. Contoh: Salah satu solusi yang dapat mewakili masalah 10 obyek dapat direpresentasikan dalam string bit seperti berikut:[1 1 0 1 0 0 0 0 0 0] .Ini berarti bahwa 1, 2,dan 4 terpilih untuk dimasukkan ke dalam ransel. Penjelasan ini dapat dikategorikan sebagai sebuah solusi yang tidak mungkin (infeasible solution).Dengan kata lain, susunan banyaknya bit-bit yang ditentukan mungkin akan melebihi kapasitas ransel. Berikut dua metode yang telah diusulkan untuk menangani ketidakmungkinannya :
• Penalty metoda,(metode hukuman)
• Decoder metoda (metode ahli sandi)
Metoda hukuman menugaskan satu hukuman sampai masing-masing solusi yang tidak mungkin. Metoda ahli sandi menghasilkan solusi dari sebuah kromosom menggunakan perkiraan-perkiraan greedy secara heuristik.
B. Pembangkitan Kromosom
Setelah dilakukan representasi atau pemodelan masalah, kemudian dilakukan pembangkitan kromosom. Pembangkitan kromosom dalam
masalah knapsack akan dilakukan secara acak atau random. Semakin
banyak barang dan bobot yang akan dicari total maksimal kapasitas knapsack maka semakin banyak pula kromosom yang dibangkitkan.
Untuk inisialisasi populasi yang pertama, dalam program akan menggunakan distribusi Bernoulli yang akan menghasilkan nilai output 0
atau 1 dengan banyaknya variable adalah 10, banyaknya bilangan yang dirandom antara 10 sampai 100 dan probabilitasnya 0.5. Contoh inisialisasi populasi awal dapat lihat pada Gambar 3.1.2
Kromosom ke- Bentuk representasinya
k1 1 1 0 1 0 0 0 0 0 0 k2 1 1 0 0 1 0 0 0 0 0 k3 1 0 1 1 0 0 0 1 0 0 k4 1 0 1 0 1 0 0 1 0 0 k5 1 0 1 0 0 0 1 0 0 0 k6 1 0 0 1 1 1 0 0 0 0 k7 1 0 0 1 0 0 1 1 0 0 k8 1 0 0 0 1 0 1 1 0 0 k9 1 0 0 0 0 1 0 1 0 0 k10 0 1 1 1 1 0 0 0 0 0
Gambar 3.1.2 Contoh inisialisasi populasi awal sebanyak 10 kromosom
C. Pencarian nilai fitness untuk masing-masing kromosom
Kromosom yang telah dibangkitkan akan ditentukan berdasarkan nilai fitness-nya. Nilai fitness disini merupakan solusi dari permasalahan knapsack yaitu nilai (profit) yang maksimal untuk sejumlah obyek yang akan dimuat dalam ransel sedemikian sehingga jumlah ransel sesuai dengan kapasitas.Setiap kromosom yang telah dikodekan akan diterjemahkan untuk dicari nilai fitness-nya.
Untuk menentukan fitness terbaik adalah memilih dari seluruh
merepresentasikan komposisi barang yang dapat termuat dalam ransel. Jika berat total dalam satu kromosom lebih besar daripada kapasitas maksimum knapsack, maka nilai fitnessnya akan diassign 0.
Secara matematis, fungsi fitness untuk mencari nilai (profit) yang maksimal untuk sejumlah obyek yang akan dimuat dalam ransel dapat dituliskan sebagai berikut:
Fungsi Tujuan Maksimum: i
n i ix p
∑
=1 Fungsi Pembatas: wxi W n i i ≤∑
=1 0 = i x atau xi =1 0 ; 0 > > i i w pSelain dihitung nilai fitnessnya, dihitung pula berat total dari tiap kromosom untuk kemudian dilakukan pengecekan, dimana apabila ada kromosom yang berat totalnya melebihi kapasitas dari knapsack, maka akan dilakukan pencarian gen dalam kromosom tersebut yang bernilai 1 untuk diganti 0. Hal ini dilakukan terus menerus sampai dipastikan bahwa semua kromosom tidak ada yang melebihi kapasitas knapsack
Untuk mencegah adanya individu yang dominan dalam suatu populasi(dalam pemilihan parent untuk di crossover), maka diperlukan suatu fungsi Linier Fitness Ranking. Fungsi ini akan menurunkan perbedaan nilai fitness antar individu, sehingga perbedaan anatara nilai fitness terbaik dengan nilai fitness terendah diperkecil. Dengan begitu
setiap kromosom memiliki kemungkinan untuk terpilih menjadi parent secara lebih merata.
D. Pemilihan kromosom untuk dijadikan orang tua
Pemilihan kromosom untuk dijadikan orang tua dilakukan berdasarkan nilai fitnes dari masing-masing kromosom. Orang tua dipilih melalui proses seleksi. Seleksi yang digunakan adalah seleksi roda roulette (roulette wheel selection) karena seleksi ini lebih cepat mencapai konvergensi solusi dibandingkan seleksi ranking, atau seleksi turnamen. Cara kerja seleksi roda roulette wheel adalah menyeleksi populasi baru dengan distribusi probabilitas yang berdasarkan nilai fitness. Semua
kromosom yang telah dicari nilai fitnes-nya ditempatkan dalam suatu
lingkaran, luas masing-masing kromosom ditentukan dari nilai fitnes-nya, semakin besar nilai fitnes dari suatu kromosom maka semakin luas tempat dari kromosom tersebut dalam lingkaran sehingga kromosom yang
mempunyai nilai fitnes yang besar mempunyai kemungkinan besar untuk
terpilih. Kemudian roda roulette akan diputar dan roda roulette akan menunjuk kromosom yang dipilih. Anggota-anggota populasi yang terpilih ini akan dijadikan orang tua yang nantinya akan dikenakan operasi persilangan (crossover) dan operasi mutasi untuk mendapatkan kromosom yang lebih baik daripada sebelumnya.
Skema seleksi Roda Roulette dilakukan dengan tahapan berikut: 1. Hitung fitness untuk setiap individu, sebagai fi
3. Hitung proporsi fitness setiap individu terhadap jumlahnya, f i i s f p =
4. Hitung kumulatif proporsi fitness secara berturut, menjadi
i
pc =
∑
pk, k=0,...,n5. Buat nbilangan random pri dari 0 sampai 1 dengan
1
+ ≤
≤ i i
i pr pc
pc yang akan dijadikan induk dalam crossover.
Metode seleksi Roda Roulette dikombinasikan dengan elitism.Elitism berguna untuk mempertahankan nilai fitness terbaik suatu generasi agar tidak turun di generasi berikutnya. Dalam Algoritma Genetika caranya adalah dengan mengcopykan individu terbaik(Fitness Max) sebanyak yang dibutuhkan.
E. Proses reproduksi untuk mendapatkan kromosom-kromosom baru Untuk mendapatkan total maksimal kapasitas knapsack, diperlukan modifikasi terhadap kromosom-kromosom. Modifikasi yang dilakukan adalah operasi persilangan dan operasi mutasi. Operasi persilangan adalah proses penggabungan dua kromosom (dua orang tua yang terpilih) untuk menghasilkan dua individu baru sedangkan operasi mutasi merupakan proses pengubahan sebuah kromosom yang terpilih untuk menghasilkan individu baru.
a. Operasi persilangan
Setelah proses seleksi selesai dilakukan dan didapat individu-individu yang akan digunakan sebagai calon induk maka dilakukan
perkawinan silang. Perkawinan silang yang akan digunakan dalam program, yaitu perkawinan silang 1-titik(1- point crossover)
Sebelum dilakukan perkawinan silang, acak bilangan antara 0 dan 1 dengan distribusi seragam untuk menandai setiap individu ke-I apakah akan dilakukan perkawinan silang atau tidak. Berdasar pada probabilitas crossover, Pc, jika individu I mempunyai Pi<Pc maka akan dilakukan perkawinan silang, dan jika sebaliknya tidak. Dalam program akan digunakan 4 nilai Pc, yaitu
0.8;0.85;0.9;0.95
.Banyaknya variasi Pcdimaksudkan sebagai bahan perbandingan
analisis.
Perkawinan silang 1-titik
Dalam perkawinan silang 1-titik, 1 titik dipilih secara acak sebagai titik perkawinan silang. Gen-gen dari kedua orang tua kemudian diberikan ke keturunannya. Perkawinan silang 1-titik akan menghasilkan 2 offspring. Contoh perkawinan silang 1-titik dapat dilihat pada Gambar 3.1.5.1
Gambar 3.1.5.1 Contoh perkawinan silang 1 titik pada titik ke-5.
induk anak
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0
b. Operasi mutasi
Mutasi dilakukan untuk menghindari terjadinya konvergensi dini.Jenis mutasi yang dilakukan adalah dengan cara mengubah bit 1 menjadi 0 atau sebaliknya 0 menjadi 1.Karena untuk semua gen yang ada, jika bilangan random yang dibangkitkan kurang dari probabilitas mutasi
m
p yang ditentukan maka nilai gen tersebut diubah menjadi nilai
kebalikannya. Biasanyapm diset sebagai 1 , dimana n n adalah jumlah gen dalam kromosom. Dengan pm sebesar ini berarti mutasi hanya terjadi pada sekitar satu gen saja. Berdasarkan mutasi tersebut maka dalam implementasi program akan digunakan mutasi inversi 2 titik. Contoh mutasi inversi tersebut dapat dilihat pada gambar 3.4. Mutasi inversi 2 titik berarti ada dua gen yang mengalami inversi nilai. Langkah-langkah mutasi adalah sebagai berikut:
1. Buat bilangan random antara 0 dan 1 sebanyak ukuran populasi
yang diinginkan dengan distribusi uniform untuk menandai setiap individu, pi.
2. Bandingkan pi dan pm. Jika pi < pm maka akan dilakukan mutasi sedangkan jika sebaliknya maka tidak.
3. Buat 2 kolom bilangan random dengan banyaknya baris sama
dengan ukuran populasi dengan distribusi uniform untuk menentukan posisi gen yang akan mengalami mutasi.
4. Untuk setiap gen yang terpilih, ubah bit 0 menjadi 1 dan bit 1 menjadi 0( mutasi inverse)
Gambar 3.1.5.2 Contoh mutasi invers
F. Skema Update generasi
Untuk mendapatkan generasi baru, maka akan dilakukan update generasi dengan cara mengulangi proses mulai langkah mengevalusi nilai fitness. Dalam implementasi program hanya akan digunakan satu skema update generasi yaitu, yaitu steady-state reproduction . Prinsip kerja skema tersebut adalah hanya mengganti satu individu dalam setiap generasi. Individu harus dihapus untuk menjaga ukuran populasi tetap sesuai dengan jumlah individu dalam populasi. Terdapat beberapa prosedur penghapusan individu, yaitu penghapusan individu yang bernilai fitness paling rendah atau penghapusan individu yang paling tua. Penghapusan bisa berlaku hanya pada individu orang tua saja atau bisa juga berlaku pada semua individu dalam populasi.
.
induk anak
43