5
BAB 2 LANDASAN TEORI
Pada bab ini akan dibicarakan beberapa model penyelesaian problema Knapsack dengan memakai beberapa metode yang telah ada yang akan digunakan pada bab pembahasan. 2.1 Problema Knapsack dengan Algoritma Branch and Bound. 2.1.1. Algoritma Branch and bound
Sebagaimana pada algortima runut-balik, algoritma Branch & Bound juga merupakan metode
pencarian
didalam
ruang
solusi
secara
sistematis.
Ruang
Solusi
diorganisasikan ke dalam pohon ruang status. Pembentukan pohon ruang status. Pembentukan pohon ruang status pada algoritma Branch & Bound berbeda dengan pembentukan pohon pada algoritma runut balik. Bila pada algoritma runut-balik ruang solusi dibangun secara Depth-First Search (DFS), maka pada algoritma Branch & Bound ruang solusi dibangun dengan skema Breadth-First Search (BFS). Pada algoritma Branch & Bound, pencarian ke simpul solusi dapat dipercepat dengan memilih simpul hidup berdasarkan nilai ongkos (cost). Setiap simpul hidup diasosiasikan dengan sebuah ongkos yang menyatakan nilai batas (bound). Pada prakteknya, nilai batas untuk setiap simpul umumnya berupa taksiran atau perkiraan. Fungsi heuristik untuk menghitung taksiran nilai tersebut dinyatakan secara umum sebagai : cˆ(i ) = f (i ) + gˆ (i )
yang dalam hal ini, cˆ(i ) = ongkos untuk simpul i f (i ) = ongkos untuk mencapai simpul i dari akar gˆ (i ) = ongkos mencapai simpul tujuan dari simpul akar i (diperkirakan)
Universitas Sumatera Utara
6
Nilai cˆ digunakan untuk mengurutkan pencarian. Simpul berikutnya yang
dipilih untuk diekspansi adalah simpul yang memiliki cˆ minimum (Simpul-E). Strategi memilih simpul-E seperti ini dinamakan strategi pencarian berdasarkan biaya terkecil (least cost search). Prinsip dari algoritma branch and bound ini adalah : 1. Masukkan simpul akar ke dalam antrian Q. Jika simpul akar adalah simpul solusi (goal node), maka solusi telah ditemukan. Stop. 2. Jika Q kosong, tidak ada solusi . Stop. 3. Jika Q tidak kosong, pilih dari antrian Q simpul i yang mempunyai cˆ(i )
paling kecil. Jika terdapat beberapa simpul i yang memenuhi, pilih satu secara sembarang. 4. Jika simpul i adalah simpul solusi, berarti solusi sudah ditemukan, stop. Jika simpul i bukan simpul solusi, maka bangkitkan semua anak-anaknya. Jika i tidak mempunyai anak, kembali ke langkah 2. 5. Untuk setiap anak j dari simpul i, cˆ( j ) hitung , dan masukkan semua anakanak tersebut ke dalam antrian Q. 6. Kembali ke langkah 2.
2.1.2. Pohon
Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. Dengan setiap kemungkinan solusi dianggap sebagai sebuah simpul dan akar dari pohon, banyak algoritma yang menggunakan ruang solusi berupa pohon ini karena akan lebih memudahkan dalam penelusuran solusi yang ada berupa simpul-simpul pohon.
2.1.3. Metode
Untuk lebih memahami tahap-tahap penyelesaian problema Knapsack ini, kita ambil contoh persoalan seperti yaitu dimana seorang pedagang keperluan rumah
Universitas Sumatera Utara
7
tangga keliling harus memilih barang-barang yang akan dijual setiap harinya dengan batas daya angkut gerobak yang dimilikinya. Untuk mempermudah, kita misalkan pedagang keliling tersebut hanya memiliki 4 jenis barang untuk dijual dengan berat dan keuntungan penjualan yang berbeda-beda untuk tiap jenisnya. Gerobak yang akan dipakai untuk mengangkut barang-barang tersebut hanya mampu menampuk beban seberat 16kg. Berikut merupakan tabel penggambaran berat dan keuntungan yang akan diperoleh untuk tiap penjualan barang tersebut.
Barang
Berat
Keuntungan
P/W
ke-
(W)
(P)
1
2
12
6
2
5
15
3
3
10
50
5
4
5
10
2
Tabel 2.1 Keterangan berat, keuntungan dan P/W tiap jenis barang
Dalam algoritma ini , kita akan menentukan cost dari tiap tiap simpul anak untuk dapat menentukan simpul mana yang kelak akan dibangkitkan yaitu simpul dengan cost tertinggi dalam penelusuran pohon untuk mencapai solusi dari permasalahan ini. Dalam permasalahan ini, kita akan mencari simpul-simpul yang akan membawa kita pada keuntungan terbesar oleh karena itu urutan pembangkitan simpul akan ditentukan oleh simpul mana yang memiliki cost tertinggi. Cost dari tiap simpul akan ditentukan dengan perhitungan : cˆ(i ) = f (i ) + gˆ (i ) yang dalam hal ini, cˆ(i ) = cost untuk simpul i f (i ) = cost untuk sampai ke simpul i dalam hal ini merupakan keuntungan dari
simpul akar ke simpul i. gˆ (i ) = cost dari simpul i untuk sampai ke simpul tujuan, dalam hal ini dapat
diperoleh dengan menggunakan rumus : (P/W) max * daya angkut yang tersisa
Universitas Sumatera Utara
8
Pada tahap awal kita akan melakukan perhitungan dengan menggunakan rumus diatas untuk memperoleh batas awal atau akar dari pohon yang juga merupakan simpul pertama. Pada keadaan ini, batas dihitung dengan pemikiran bahwa belum ada satupun barang yang dimasukan kedalam alat pengangkut maka kita dapat memilih 6 sebagai (P/W) terbesar karena belum ada satu barangpun yang dimasukan kedalam alat pengangkut dan kapasitas daya angkutpun masih utuh yaitu seberat 16 kg. cˆ(i ) = f (i ) + gˆ (i )
cˆ(i ) = keuntungan yang diperoleh sampai disimpul awal + (P/W0max*daya angkut yang tersisa =0+6* = 96 Maka kita memperoleh 96 batas awal atau cost dari simpul awal. 1
96 Gambar 2.1 Akar Pohon Problema Knapsack dengan n-4
Selanjutnya kita akan membangkitkan simpul-simpul anak dari akar pohon yaitu dengan membangkitkan simpul 1, simpul 2, simpul 3 dan simpul 4 sebagai gambaran dari 4 pilihan barang yang akan dimasukan pertama kali pada alat pengangkut dengan x1 merupakan keuntungan yang akan diperoleh pada penjualan tiap barang tersebut. Kemudian kita akan menghitung cost dari tiap simpul anak yang hidup dan juga kelayakannya untuk tetap hidup atau harus dibunuh. Dalam hal ini, simpul yang jumlah dari lintasannya tidak bisa lagi dibangkitkan (jika ditambah barang lagi kedalam alat pengangkut maka beratnya akan melebihi daya angkut) akan dibunuh. cˆ(2 ) = 12 + 5 * (16 − 2 ) = 82 cˆ(3) = 15 + 6 * (16 − 5) = 81 cˆ(3) = 50 + 6 * (16 − 10 ) = 86 cˆ(4 ) = 10 + 6 * (16 − 5) = 76
Universitas Sumatera Utara
9
1 x1 = 12 x1 = 15
2 82
x1 = 10
96 x1 = 50
3
4
5
81
86
76
Gambar 2.2 Pohon status problema Knapsack tahap awal
Dari simpul-simpul yang telah dibangkitkan dan dihitung cost nya, maka diperoleh bahwa simpul 4 lah yang memiliki cost tertinggi oleh karena itu maka simpul 4 akan di perluas lagi. Simpul 6 ,7,8 akan dibangkitkan sebagai perluasan dari simpul 4 dengan barang yang mungkin dimasukan kedalam alat pengangkut adalah barang ke 1,2 dan 4. kemudian kita akan mengkitung cost dari simpul 6,7dan 8. cˆ(6 ) = (50 + 12 ) + 3(16 − 10 − 2 ) = 74 cˆ(7 ) = (50 + 15) + 6 * (16 − 10 − 5) = 71 cˆ(8) = (50 + 10 ) + 6 * (16 − 10 − 5) = 66
Setelah melakukan perhitungan, kita dapat melihat bahwa ketiga simpul yaitu simpul 6,7 dan 8 tidak bias lagi diperluas oleh karena itu ketiga simpul ini akan dibunuh dengan menambahkan keterangan huruf B pada bagian bawah simpulnya. Simpul 1 x1 = 12
x1 = 10
96 x1 = 15
x1 = 50
2
3
4
5
80
81
86
76
x 2 = 12
x 2 = 15
7 74 B
71 B
x 2 = 10
8 66 B
Gambar 2.3 Pohon status problema Knapsack tahap kedua
Universitas Sumatera Utara
10
Gambar 2.4 Pohon status problema Knapsack tahap ketiga
Sekarang kita hanya memiliki simpul 2,3 dan 5 sebagai simpul hidup. Diantara simpul-simpul tersebut, simpul 2 lah yang memiliki cost terbesar sehingga selanjutnya akan dilakukan perluasan pada simpul 2 dengan metode yang serupa dan diperoleh simpul 9,10, dan 11 dengan cost 72,74, dan 67. pada simpul 2, dapat dilihat bahwa simpul tersebut tidak dapat lagi diperluas oleh karena itu makan simpul ini akan dibunuh.
Gambar 2.5 Pohon status knapsack problem
Sekarang kita memiliki simpul 3,5,9 dan 11 sebagai simpul hidup dan diantar simpul-simpul tersebut, simpul 3 lah yang memiliki cost terbesar sehingga simpul tersebut akan diperluas dengan metode yang diterapkan pada perluasan simpul-simpul sebelumnya. Perluasan simpul-simpul hidup terus dilakukan sampai tidak ada lagi simpul hidup yang ditemukan dan dapat diperluas atau semua simpul telah dibunuh. Hal ini dilakukan karena pencarian solusi pada permasalahan ini tidak dapat diketahui
Universitas Sumatera Utara
11
kapan kita harus berhenti karena telah sampai kepada solusi tetapi penyelesaian masalah akan dilakukan dengan membandingkan solusi pada tiap daun. Dalam persoalan ini, akan dibandingkan jumlah keuntungan yang diperoleh pada tiap daun dan solusi permasalah merupakan lintasan yang menuju daun yang memiliki keuntungan terbesar. Dari gambar diatas dapat disimpulkan bahwa solusi permasalahan dibentuk oleh lintasan yang menuju simpul 13 dan 7 dimana keduanya merupakan solusi yang serupa yaitu memilih barang 2 dengan berat 5 kg , keuntungan 15 dan barang 3 dengan berat 10 kg, keuntungan 50 sebagai solusi permasalahan dan akan menghasilkan keuntungan yang maksimal pada penjualan yaitu sebesar 65.
2.2 Problema Knapsack dengan Algoritma Greedy
Problema knapsack 0/1 pada bab ini akan dibahas dengan menggunakan strategy greedy. Pendekatan yang digunakan di dalam algoritma greedy adalah membuat pilihan yang “tampaknya” memberikan perolehan terbaik, yaitu dengan membuat pilihan optimum local (local optimum) pada setiap langkah dengan harapan bahwa sisanya mengarah ke solusi optimum global (global optimum) Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah, pada setiap langkah : 1.
Mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa
memperhatikan konsekuensi ke depan (prinsip “take what you can get now!”) 2.
Berharap bahwa dengan memilih optimum lokal pada setiap langkah
akan berakhir dengan optimum global. Dengan algoritma greedy, persoalan knapsack dapat dipecahkan dengan memasukkan objek satu per satu ke dalam knapsack. Sekali objek dimasukkan ke dalam knapsack, objek tersebut tidak bias dikeluarkan lagi. Terdapat beberapa strategy greedy yang heuristik yang dapat digunakan untuk memilih objek yang akan dimasukkan ke dalam knapsack.
Universitas Sumatera Utara
12
2.2.1. Greedy by profit
Pada setiap langkah , knapsack diisi dengan objek yang mempunyai keuntungan terbesar. Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang paling menguntungkan terlebih dahulu. Pertama kali yang dilakukan adalah secara menurun objek – objek berdasarkan profitnya. Kemudian baru diambil satu – persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bias dimasukkan. Algoritmanya yaitu : procedure Giby Profit (var dt3 : arrayData;W : real); Var i,j: integer temp: data cW: real tukar:boolean program UrutkanDataBerdasarkanProfit(dt3) While((cW<W)and(i<=length(dt3))do if(dt3[i].w<=W-cW)then cW←cW+dt3[i].w dt3[i].status←True inc(i)
Berdasarkan algoritma diatas maka dapat dihitung komplesitas waktu asimptotik-nya adalah O(n) Sebagai data pengujian diberikan data-data untuk w (Weight) dan P (Profit) : w1 = 2; w2 = 5; w3 = 10;
p1 = 12 p 1 = 15 p1 = 50
w4 = 5 p1 = 10 Dengan kapasitas knapsack W = 16
Universitas Sumatera Utara
13
Tabel 2.2 Greedy by profit
Properti Pi/wi
Status
I
wi
pi
3
10
50
5
Diambil
2
5
15
3
Diambil
1
6
12
2
Tidak
4
5
10
2
Tidak
2.2.2. Greedy by weight.
Pada setiap langkah, knapsack diisi dengan objek yang mempunyai berat paling ringan. Strategi ini
mencoba
memaksimumkan keuntungan dengan
memasukkan sebanyak mungkin objek ke dalam knapsack. Pertama kali yag dilakukan adalah mengurutkan secara menaik objek-objek berdasarkan weightnya. Kemudian baru diambil satu persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bias dimasukkan. Algoritma greedy by profit sebagai berikut : procedure Giby Weight (var dt3 : arrayData;W : real); Var i,j: integer temp: data cW: real tukar:boolean program UrutkanDataBerdasarkanWeight(dt3) While((cW<W)and(i<=length(dt3))do if(dt3[i].w<=W-cW)then cW←cW+dt3[i].w dt3[i].status←True inc(i)
Berdasarkan algoritma di atas maka dapat dihitung komplesitas waktu asimptotik-nya adalah O(n)
Universitas Sumatera Utara
14
Sebagai data pengujian diberikan data-data untuk w (Weight) dan P (Profit) : w1 = 2;
p1 = 12
w2 = 5; w3 = 10;
p 1 = 15 p1 = 50
w4 = 5 p1 = 10 Dengan kapasitas knapsack W = 16
Tabel 2.3 Greedy by weight
Properti Status
I
wi
pi
pi/wi
2
5
15
3
Diambil
4
5
10
2
Diambil
1
6
12
2
Diambil
3
10
50
5
Tidak
2.2.3. Greedy by density
Pada setiap langkah, knapsack diisi dengan objek yang mempunyai densitas terbesar. Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang mempunyai keuntungan per unit berat terbesar. Pertama kali yang dilakukan adalah mencari nilai profit per unit (density) dari tiap-tiap objek. Kemudian objek-objek tersebut diurutkan berdasarkan densitynya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bisa dimasukkan. Pemilihan objek berdasarkan salah satu dari ketika strategi di atas tidak menjamin akan memberikan solusi optimal. Berbeda dengan strategi brute force yang selalu dapat memberikan hasil yang optimal. Tetapi greedy mengurangi jumlah langkah (kompleksitas) pencarian.
Universitas Sumatera Utara
15
procedure GbyPW (var dt3 : arrayData;W : real); Var i,j: integer temp: data cW: real tukar:boolean program UrutkanDataBerdasarkanWeight(dt3) →//Mengurutkan data berdasarkan while((cW<W)and(i<=length(dt3))do //nilai density yang terbesar if(dt3[i].w<=W-cW)then //ke nilai yang terkecil cW←cW+dt3[i].w dt3[i].status←True inc(i) Berdasarkan algoritma diat maka dapat dihitung komplesitas waktu asimptotik-nya adalah O(n) Sebagai data pengujian diberikan data-data untuk w (Weight) dan P (Profit) : w1 = 2; w2 = 5; w3 = 10;
p1 = 12 p 1 = 15 p1 = 50
w4 = 5 p1 = 10 Dengan kapasitas knapsack W = 16
Tabel 2.4 Greedy by density
Properti Status
I
wi
pi
pi/wi
3
10
50
5
Diambil
2
5
15
3
Diambil
4
5
10
2
Tidak
1
6
12
5
Tidak
Universitas Sumatera Utara
16
Maka, hasil akhirnya kita mendapatkan dta seperti di bawah ini: Tabel 2.5 Greedy by density
Properti objek i
wi
pi
Greedy by
pi/wi profit
weight
Density
1
6
12
2
0
1
0
2
5
15
3
1
1
1
3
10
50
5
1
0
1
4
5
10
2
0
1
0
Total bobot
15
16
15
Total
65
37
65
keuntungan
2.3
Problema Knapsack dengan Exhaustive Search
Exhaustive Search merupakan salah satu strategi dalam Brute Force atau pendekatan secara langsung pada permasalahannya. Langkah-langkah pencarian solusi 0/1 Knapsack secara exhaustive search dirangkum dalam table di bawah ini dengan sebagai data pengujian diberikan data-data untuk w (Weight) dan P (Profit) : w1 = 2; p1 = 12 w2 = 5; p 1 = 15 w3 = 10; p1 = 50 w4 = 5 p1 = 10 Dengan kapasitas knapsack W = 16
Universitas Sumatera Utara
17
Tabel 2.6 Exhaustive search
Himpunan
Total
Total
Bagian
Bobot (w)
Keuntungan (P)
{}
0
0
{1}
6
12
{2}
5
15
{3}
10
50
{4}
5
10
{1, 2}
11
27
{1, 3}
16
62
{1, 4}
11
22
{2, 3}
15
65
{2, 4}
10
25
{3, 4}
15
60
{1, 2, 3}
21
tidak layak
{1, 2, 4}
16
37
{1, 3, 4}
21
tidak layak
{2, 3, 4}
20
tidak layak
{1, 2, 3, 4}
26
tidak layak
Himpunan bagian objek yang memberikan keuntungan maksimum adalah {2, 3} dengan total keuntungan adalah 65. Dari keempat cara diatas didapatkan keuntungan optimum yaitu 65 dengan objek yang diambil no. 2 dan 3. Namun, dilihat dari kecepatan atau banyaknya data yang diproses terlihat greedy lebih efisien terutama greedy profit karena tujuan dari knapsack sendiri mencari keuntungan yang maksimal.
Universitas Sumatera Utara
18
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. Kromosomkromosom 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 kromosomkromosom yang nilai gennya konvergen ke suatu nilai tertentu yang merupakan solusi
Universitas Sumatera Utara
19
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
Constraint
Universitas Sumatera Utara
180
20
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
:10010001110101010100
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.
Universitas Sumatera Utara
21
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.
Universitas Sumatera Utara
22
2.4.3. Flowchart
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
No
Lakukan mutasi
Pengecekkan coinstraint (kapasitas knapsack)
Apakah terdapat > 60% kromosom yang mempunyai nilai fitness maksimum | | Jumlah evolusi lebih besar limit evolusi yang telah ditentukan??
Yes STOP
Gambar 2.6 Flowchart Algoritma Genetika
Universitas Sumatera Utara