• Tidak ada hasil yang ditemukan

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 p

Selain 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,...,n

5. 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

Dokumen terkait