• Tidak ada hasil yang ditemukan

Problema Knapsack dengan Algoritma Genetika

Bab 2 LANDASAN TEORI

2.4 Problema Knapsack dengan Algoritma Genetika

2.4.1. Algoritma Genetika

Algoritma genetika adalah algoritma komputasi yang diinspirasi oleh teori evolusi yang kemudian diadopsi menjadi algoritma komputasi untuk mencari solusi suatu permasalahan dengan cara yang alamiah. Algoritma ini dikembangkan oleh Goldberg yang terinspirasi dari teori evolusi Darwin yang menyatakan bahwa kelangsungan hidup suatu makhluk dipengaruhi oleh aturan “yang kuat adalah yang menang”. Darwin juga menyatakan bahwa kelangsungan hidup suatu makhluk dapat dipertahankan melalui proses reduksi, crossover, dan mutasi.

Sebuah solusi yang dibangkitkan dalam Algoritma Genetika disebut sebagai kromosom, sedangkan kumpulan kromosom-kromosom tersebut disebut sebagai populasi. Sebuah kromosom dibentuk dari komponen – komponen penyusun yang disebut sebagai gen dan nilainya dapat berupa bilangan numeric, biner, symbol atau pun karakter tergantung dari permasalahan yang ingin diselesaikan. Kromosom-kromosom tersebut akan berevolusi secara berkelanjutan yang disebut dengan generasi. Dlam tiap generasi, kromosom-kromosom tersebut dievaluasi tingkat keberhasilan solusinya terhadap masalah yang ingin diselesaikan (fungsi_objektif) menggunakan ukuran yang disebut fitness.

Untuk memilih kromosom yang tetap dipertahankan untuk generasi selanjutnya, dilakukanlah proses seleksi. Kromosom dengan nilai fitness tinggi akan memiliki peluang lebih besar untuk terpilih lagi pada generasi selanjutnya.

Offspring merupakan kromosom-kromosom baru yang dibentuk dengan cara melakukan perkawinan antar kromosom dalam satu generasi, atau sering disebut sebagai proses crossover. Jumlah kromosom yang mengalami crossover ditentukan oleh parameter Pcrossover. Mekanisme perubahan susunan unsur penyusun makhluk hidup akibat adanya faktor alam disebut dengan mutasi. Jadi, mutasi direpresentasikan sebagai suatu proses berubahnya satu atau lebih nilai gen dalam kromosom dengan suatu nilai acak. Jumlah gen dalam populasi yang mengalami mutasi ditentukan oleh parameter Permutasi. Setelah beberapa generasi akan dihasilkan kromosom-kromosom yang nilai gennya konvergen ke suatu nilai tertentu yang merupakan solusi

terbaik yang dihasilkan oleh Algoritma Genetika terhadap permasalahan yang ingin diselesaikan.

Algoritma Genetika sangat cocok untuk menyelesaikan masalah optimasi dengan ruang lingkup yang besar, karena Algoritma Genetika selalu bergerak dengan mencari sejumlah solusi sekaligus, selama solusi tersebut masih bersifat feasible (tidak melanggar constraint). Dengan setting parameter yang tepat, diharapkan salah satu dari sekian banyak solusi yang dibangkitkan oleh Algoritma Genetika merupakan solusi optimum global.

Akan tetapi, Algoritma Genetika ini juga masih memiliki kelemahan yaitu ketidakpastian untuk menghasilkan solusi optimum global, karena sebagian besar dari algoritma ini berhubungan dengan bilangan random yang bersifat probabilistik. Peranan programer disini adalah memaksimalkan probabilitas dalam menghasilkan solusi optimum global dengan cara membuat suatu skema pengolahan input argumen (fungsi fitness) dan setting parameter yang tepat.

2.4.2. Penerapan Algoritma Genetika dalam Problema Knapsack

Berikut adalah pengolahan fitness dan setting parameter yang kami terapkan : • Representasi Barang

Kami merepresentasikan barang dalam dua array, dimana array pertama berisi weight (berat) barang, dan array kedua berisi profit (keuntungan) barang.

Weight : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 180 170 100 150 270 120 190 140 180 100 140 70 150 120 190 140 80 150 200 130 Profit : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 200 150 90 220 250 80 170 120 190 70 160 110 120 160 220 140 120 110 160 180 • Constraint

Adapun constraint yang digunakan dalam aplikasi ini adalah weight. Jadi, total berat dari sekumpulan barang yang dipilih tidak boleh melebihi kapasitas Knapsack.

• Enconding Kromosom

Untuk mempresentasikan kromoso, kami menggunakan array 1 dimensi yang berisi 1 atau 0.

Misal:

Kromosom : 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 Art : Barang 1, 4, 8, 9, 10, 12, 14, 16, 18 diambil

Barang 2, 3, 5, 6, 7, 11, 13, 15, 17, 19, 20 tidak diambil.

• Termination Conditions

Pencarian solusi berhenti jika terdapat > 60% kromosom yang mempunyai nilai fitness maksimum ATAU jumlah lebih besar limit evolusi yang telah ditentukan (jika jumlah evolusi > 1000).

• Fitness Function

Pada evolusi di dunia nyata, individu bernilai fitness tinggi akan bertahan hidup. Sedangkan individu bernilai fitnesss rendah akan mati. Pada AG, suatu individu dievaluasi berdasarkan suatu fungsi tertentu sebagai ukuran niali fitness nya. Pada aplikasi ini, fitness dihitung dengan menjumlahkan profit tiap barang yang masuk ke dalam knapsack. Jika berat total dalam satu kromosom lebih besar daripada kapasitas maksimum knapsack, maka nilai fitnessnya diassign 0.

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 dengan nilai 0. Hal ini dilakukan terus menerus sampai dipastikan bahwa semua kromosom tidak ada yang melanggar constraint.

Untuk mencegah adanya individu yang dominan dalam suatu populasi (dalam pemilihan parent untuk dicrossover), maka diperlukan suatu fungsi Linier Fitness Ranking. Fungsi ini akan menurunkan perbedaan nilai fitness antar individu, sehingga perbedaan antara nilai fitness terbaik dengan nilai fitness terendah dapat diperkecil.

Dengan begitu setiap kromosom memiliki kemungkinan untuk terpilih menjadi parent secara lebih merata (lebih adil).

• Selection Function

Aplikasi ini menggunakan metode seleksi Roulette Wheel yang dikombinasikan dengan Elitism. Roulette Wheel merupakan suatu metode pemilihan kromosom untuk dijadikan parent, dimana komosom dengan fitness tinggi mempunyai peluang lebih besar untuk dijadikan parent. Sedangkan Elitism adalah suatu metode yang berguna untuk mempertahankan nilai best fitness suatu generasi agar tidak turun di generasi berikutnya.Dalam AG caranya adalah dengan mengcopykan individu terbaik (maxfitness) sebanyak yang dibutuhkan

• Crossover

Crossover merupakan proses mengkombinasikan bit bit dalam satu kromosom dengan kromosom lain yang terpilih sebagai parent. Jumlah kromosom yang mengalami crossover ditentukan oleh parameter Pcrossover. Dimana Pcrossover ini kami assign sebesar 80%, karena kami mengharapkan 80% dari populasi mengalami crossover agar populasi individu menjadi lebih variatif.

• Mutation

Mutation diperlukan untuk mengembalikan informasi bit yang hilang akibat crossover. Mutasi ini dilakukan pada tingkat gen, dan jumlah gen yang dimutasi kami batasi dalam suatu variable Permutasi sebesar 5%. Nilai ini kami rasa cukup karena semakin banyak gen yang dimutasi maka kualitas dari suatu individu bisa mengalami penurunan.

Setelah dilakukan mutasi, kembali dicek untuk tiap kromosomnya apakah melanggar constraint atau tidak. Jika ada kromosom yang total beratnya melebihi kapasitas Knapsack, maka secara random, gen yang bernilai 1 akan diganti dengan 0 sampai kromosom tersebut tidak melanggar constraint. Jadi dapat disimpulkan, aplikasi kami akan selalu menemukan solusi.

2.4.3. Flowchart

Gambar 2.6 Flowchart Algoritma Genetika Start

Inisialisasi populasi pertama secara random

Hitung nilai fitness dan volume dari tiap kromosom, cari juga nilai fitness maks

Secara random, pilih 2 kromosom untuk dijadikan parent

Crossover 2 kromossom terpilih tadi

Lakukan mutasi

Pengecekkan coinstraint (kapasitas knapsack)

Apakah terdapat > 60%

kromosom yang mempunyai nilai fitness maksimum | |

Jumlah evolusi lebih besar limit evolusi yang telah ditentukan??

STOP No

BAB 3

PEMBAHASAN

3.1. Pendekatan Basis

Sebelum kita memproses kasus Problema Knapsack, terlebih dahulu kita membahas ide dasarnya adalah pandang Problema Program Integer (PI) :

Minimum P=cT x (1) Kendala Axb (2) x≥0 (3) J j berbagai untuk cacah ∈ j x (4)

Komponen vektor

( )

xB k layak basis terhadap PI yang diselesaikan sebagai problema kontinu dapat ditulis sebagai :

( )

xB kk −αki

( )

xN i −...−αkj

( )

xN j−...−αk,nm

( )

xN nm (5) Catatan bahwa, pernyataan ini dapat ditemukan pada Tabel Akhir Simpleks. Andaikan

( )

xB k adalah sebuah variabel integer dan kita asumsikan bahwa βk

dipartisi menjadi komponen integer dan sebagian kecil komponen telah diberikan yaitu:

[ ]

+ ,0≤ ≤1

= k k k

k β f f

β (6)

andaikan kita ingin menaikkan

( )

xB k ke integer terdekat,

([ ]

β +1

)

. Ide dasar dari solusi yang baik kita boleh menaikkan variabel non basis, misalnya

( )

xN j diatas batasannya dari Nol, asalkan αkjyaitu salah satu elemen vektor αkj adalah negatif.

Ambil ∆j dijumlahkan dari bukan variabel

( )

xN j. Sedemikian hingga nilai numerik dari skalar

( )

xB k adalah integer.

=kj k j f α 1 (7) ketika hasil bukan basis tetap Nol. Dapat dilihat setelah mensubstistusikan ke persamaan (7) untuk

( )

xN j dan dimasukkan ke perhitungan partisi dari βk diberikan pada persamaan (6), kita tunjukkan :

( )

xB k =

[ ]

β +1

Maka,

( )

xB k sekarang adalah integer.

Sekarang jelas bahwa bermain dengan varibel non basis adalah tugas yang sangat penting untuk integer yang cocok dengan variabel non-basis. Maka, hasilnya adalah untuk menjelaskan bahwa harus menjadi variabel non-integer untuk pembulatan,

Theorema 1. Tunjukkan bahwa IP (1)-(4) mempunyai solusi optimal, kemudian beberapa dari variabel non basis

( )

xN j = 1, … ,n harus menjadi variabel non integer. Bukti.

Menyelesaikan masalah slack variabel kontinu (bukan integer, kecuali pada kasus persamaan kendala). Jika kita mengesumsikan bahwa vektor variabel basis xB terdiri dari seluruh slack variabel kemudian seluruh variabel integer akan menjadi vektor non-basis xN dan karena itu bernilai integer.

3.2. Metode derivative

Jelas bahwa komponen lainnya

( )

xB ik, dari vektor xB akan juga mempengaruhi seperti nilai numerik dari skalar

( )

xN j menaikkan ke ∆j. Konsekuensinya, jika beberapa elemen vektor αkj, i.e., αkj untuk i k adalah positif, maka elemen yang cocok dari xB akan dikurangi dan kadang-kadang boleh mendekati Nol. Sekalipun demikian, beberapa komponen dari vektor x tidak harus lebih kecil dari Nol untuk pembatasan tak negatif. Oleh karena itu, sebuah formula, dikatakan uji rasio minimum

dibutuhkan agar dapat melihat bagaimana pergerakan maksimum dari bukan basis

( )

xN j dinyatakan bahwa seluruh komponen dari x solusi layak. Rasio ini akan diuji pada 2 kasus :

1. Variabel basis

( )

xB ik dikurangi ke nol (batasan rendah) pertama. 2. Variabel basis

( )

xB k dinaikkan ke integer.

Khususnya, cocok untuk tiap-tiap kasus diatas. Persamaan akan dihitung :

        = > * 0 * 1 min j i k i k αβ ϑ α (8) * 2 =∆j θ (9)

Sejauh akan dikeluarkan bukan basis

( )

xN j batasan dari Nol, maka vector x adalah solusi layak akan bergantung pada uji rasio θ* diberikan sebagai berikut :

*

θ = min

(

θ12

)

(10)

Nyatanya, jika θ*1, persamaan dari variabel basis

( )

xB ik akan tepat pada batasan rendah sebelum

( )

xB k menjadi integer. Jika θ*2, nilai numerik dari variabel basis

( )

xB k akan menjadi integer dan layak untuk masih dipertahankan. Sama halnya, kita mampu untuk mendapatkan hasil numerik dari variabel basis

( )

xB k untuk integer tertutup

[ ]

βk . Pada kasus ini bergerak penuh dari variabel non-basis khusus,

( )

xN j, cocok untuk beberapa elemen vektor αj, diberikan oleh :

kj k f f α = ∆ ' (11)

Urutan untuk mempertahankan uji layak untuk uji rasio θ* masih dibutuhkan. Mengingat bergerak dari variabel non-basis khusus, ∆, dinyatakan pada persamaan (7) dan (11). Hanya faktor persamaan tersebut membutuhkan perhitungan elemen yang cocok dari vektor αj dapat dinyatakan sebagai :

, 1 , 1 = =B j j j α α . . ., n – m (12)

Oleh karena itu, untuk mendapatkan elemen utama dari vektor αj kita akan mampu membedakan kolom yang cocok untuk matriks [B]-1. Andaikan kita membutuhkan nilai dari elemen αkj, misalkan vTk untuk kolom ke – k vektor [B]-1, kemudian kita mempunyai :

1 =e B v T k T k (13)

berikutnya adalah nilai numerik dari αkj dihasilkan dari : *

aj vTk kj =

α (14)

pada istilah Linier Programming (LP) operasi dilakukan pada persamaan (12) dan (13) dikatakan nilai operasi. Vektor mengurangi harga dj digunakan untuk ukuran kelemaan dari fungsi objektif dikarenakan oleh melepaskan variabel non-basis dari batasannya. Akibatnya, memutuskan non basis akan dilepaskan pada proses pembulatan, vektor dj harus dimasukkan ke dalam perhitungan, maka meminimumkan kelemahannya. Anggap bahwa solusi kontinu minimum diberikan batasan terendah pada beberapa solusi layak-integer. Namun, jumlah dari variabel khusus non-basis diberikan pada persamaan (7) atau (11), bergantung pada beberapa cara dari elemen yang cocok dari vektor αj. Oleh karena itu, dapat diamati dengan kelemahan dari nilai fungsi objektif antara melepaskan variabel non-basis

( )

xN j agar pembulatan variabel basis

( )

xB k dapat diukur oleh rasio :

*

kj k d

α (15)

Urutan untuk meminimumkan kelemahan dari solusi optimal kontinu kita menggunakan strategi selanjutnya untuk menentukan yang mana variabel non basis bias dinaikkan ke batasan nol, maka,

m n j d kj k j = −         ,..., 1 , min * α (16)

Dari strategi “kendala aktif” dan partisi dari kendala yang cocok untuk basis (B), superbasis (S) dan non-basis (N) variabel dapat dituliskan :

=





N S N

b

b

x

x

x

I

N

S

B

(18) atau b Nx Sx Bxb + S + N = (18) xN = bN (19) Basis matriks B di asumsikan bujursangkar dan non-singular, kita dapatkan:

N S B Wx x x =β − −α (20) dimana b B−1 = β (22) S B W = 1 (23) N B1 = α (24)

Persamaan (19) indikasi bahwa variabel non-basis diperoleh dari hasil yang sama untuk batasannya. Jelaslah selesai “pendekatan” basis dari persamaan (20), strategi pembulatan dibicarakan pada bagian selanjutnya. Secara khusus, kita bias melepaskan variabel non-basis dari batasannya, persamaan (20) dan pertukarannya dengan varibel basis yang cocok pda proses pembulatan, meskipun solusi dapat

digeneralkan. Selanjutnya, theorema (1) diatas akan dijelaskan untuk Problema Knapsack.

Theorema 2. Andaikan Problema Knapsack mempunyai batasan solusi kontinu yang optimal, kemudian kita dapat selalu mendapatkan non-integer yj pada vektor variabel basis optimum.

Bukti.

1. Jika variabel ini adalah non-basis, maka akan dibatasi. Oleh karena itu harus bernilai integer.

2. Jika yjsuperbasis, mungkin untuk membuat basis yj dan membawanya kedalam non-basis pada batasannya diletakkan pada superbasis.

Bagaimanapun, uji rasio untuk persamaan (10) tidak dapat digunakan sebagai alat untuk jaminan bahwa menemukan hasil solusi integer optimal pada wilayah yang layak. Malahan, dapat digunakan uji kelayakan dari Minos pada urutan untuk cek apakah solusi integer layak atau tidak layak.

3.3. Hasil

Sekarang ini, kita pada posisi dimana variabel basis utama,

( )

xB k dibulatkan, dengan demikian variabel non-basis

( )

cN j* dilepaskan dari batasannya ke Nol. Andaikan

( )

xN j bergerak maksimum memenuhi

( )

xB k adalah nilai integer untuk memanfaatkan cara perubahan basis pada Minos, akan dapat mengerjakan

( )

xN j ke B (diletakkan ke

( )

xB k) dan nilai integer

( )

xB k ke S pada urutan mempertahankan solusi integer. Sekarang mempunyai solusi umum sejak variabel basis dibatasi. Proses pembulatan dengan himpunan baru [B, S]. Pada kasus ini, terkadang kita mengakhiri dengan solusi variabel integer menjadi superbasis.

Theorema 3. solusi optimal berlaku untuk Problema Knapsack yang mana seluruh integer variabel adalah superbasis.

Bukti.

1. Jika seluruh variabel integer di N, maka akan dibatasi.

2. Jika sebuah variabel adalah basis maka mungkin untuk yang lainnya. • Simpangan dengan variabel superbasis kontinu, atau

• Membuat variabel integer superbasis ini dan membawanya ke non-basis pada pada batasannya untuk mengganti basis yang memberikan solusi umum.

Pada kasus yang lainnya akan terjadi berbeda dan variabel basis

( )

xB ik boleh batasannya sebelum

( )

xB k menjadi integer. Atau dengan kata lain, berada pada situasi dimana :

1 * =∆

θ

Pada kasus ini kita mengerjakan variabel basis

( )

xB ike N dan posisinya pada basis variabel vektor akan digantikan oleh non-basis

( )

xN j. Catatan

( )

xB k masih variabel bais non-integer dengan nilai baru.

Dokumen terkait