Anda di halaman 1dari 6

Perbandingan Algoritma Exhaustive Search dan Algoritma Genetika untuk memecahkan Knapsack Problem

Ari Agustina1, Hanifa Vidya Rizanti2, Arianty Anggraini3, Winda Ayu Irianto4
Program Studi Teknik Informatika, Fakultas Teknik, Universitas Brawijaya, Malang, 65145, Indonesia
2

kytty.rindra@yahoo.com hanifavidyarizanti@gmail.com 3 lovely_days22@yahoo.co.id 4 ayrie33@ymail.com

Abstract Keterbatasan wadah yang digunakan saat memilih barang yang akan dibawa merupakan perhatian utama pada kasus distribusi dari sekian banyak barang yang harus di distribusikan, yang masing-masing memiliki berat dan harga. Permasalahan ini dinamakan Knapsack Problem. Untuk menyelesaikan masalah ini, banyak algoritma yang dapat digunakan. Salah satunya yakni Algoritma Genetika. Algoritma ini bekerja dengan sebuah populasi yang terdiri dari individuindividu, yang masing-masing individu merepesentasikan sebuah solusi yang mungkin bagi persoalan yang ada untuk selanjutnya mengalami proses seleksi, pindah silang dan mutasi sehingga didapatkan populasi baru yang memberikan solusi yang mendekati solusi optimal. Selain algoritma genetika, knapsack problem akan diselesaikan dengan algoritma Brute Force. Algoritma Brute Force adalah algoritma yang mempunyai tingkatan terendah dalam pencarian solusi terhadap sebuah permasalahan karena kesederhanaannya. Sifat sifat algoritma Brute Force yang seperti itu memberikan beberapa kelebihan maupun kekurangan. Contoh kelebihan yang dimilikinya adalah kehandalannya dalam menemukan solusi dari sebuah permasalahan , akan tetapi kelemahannya yaitu algoritma ini tidak mangkus / efisien , mempunyai kompleksitas yang terbesar dalam pemecahan suatu permasalahan dan tidak efisien untuk jumlah kemungkinan solusi yang banyak . Walaupun begitu , algoritma ini handal dalam artian algoritma ini dapat dipakai untuk menyelesaikan hampir seluruh permasalahan yang ada . Adapun dalam tulisan ini akan dianalisa tentang pemakaian algoritma Brute Force pada kasus Knapsack Problem. Dalam kaitannya dengan permasalahan Knapsack, pemakaian brute force sering disebut dengan exhaustive search. Dari dua algoritma diatas akan dibandingkan untuk mengetahui penyelesaian knapsack problem secara optimal. Dari dua algoritma diatas akan dibandingkan efisiensi waktu dan profit barang yang akan diangkut. Aplikasi ini dibangun dengan menggunakan bahasa C#. Keywords algoritma genetik, mutasi, rekombinasi, brute force, exhaustive search, knapsack problem.

I. PENDAHULUAN

Knapsack problem merupakan masalah di mana orang dihadapkan pada persoalan optimasi pada pemilihan benda yang dapat dimasukkan ke dalam sebuah wadah yang memiliki keterbatasan ruang atau daya tampung. Dengan adanya optimasi dalam pemilihan benda yang akan dimasukkan ke dalam wadah tersebut diharapkan dapat menghasilkan keuntungan yang maksimum. Benda-benda yang akan dimasukkan ini masing-masing memiliki berat dan sebuah nilai yang digunakan untuk menentukan prioritasnya dalam pemilihan tersebut. Nilainya dapat berupa tingkat kepentingan, harga barang, nilai sejarah, atau yang lainnya. Wadah yang dimaksud di sini juga memiliki nilai konstanta yang merupakan nilai pembatas untuk benda-benda yang akan dimasukkan ke dalam wadah tersebut sehingga harus diambil sebuah cara memasukkan benda-benda tersebut ke dalam wadah sehingga menghasilkan hasil optimum tetapi tidak melebihi kemampuan wadah untuk menampungnya. Sedangkan pada tulisan ini akan dibandingkan antara metode exhaustive search dan algoritma genetika. Algoritma genetik itu sendiri adalah algoritma pencarian yang berdasarkan pada mekanisme sistem natoural yakni genetik dan seleksi alam. Algoritma genetik menggunakan istilah gen dalam menyimpan informasi. Gen merupakan struktour paling sederhana pada algoritma genetik. Pada algoritma ini, solusi optimal direpresentasikan sebagai untaian gen. Berbeda dengan teknik pencarian konvensional, algoritma genetik berangkat dari himpunan solusi yang dihasilkan secara acak. Himpunan ini disebut populasi. Sedangkan setiap individu dalam populasi disebut kromosom yang merupakan representasi dari solusi. Kromosom-kromosom berevolusi dalam suatu proses iterasi yang berkelanjutan yang disebut generasi. Pada setiap generasi, kromosom dievaluasi berdasarkan suatu fungsi evaluasi (Gen dan Cheng,1997). Setelah beberapa generasi maka algoritma genetik akan

konvergen pada kromosom terbaik, yang diharapkan merupakan solusi optimal (Goldberg,1989). Proses pencarian solusi dilakukan dengan cara melakukan operasi terhadap kromosom. Operasi yang dilakukan berupa rekombinasi kromosom. Operasi rekombinasi dapat dilakukan dengan dua cara. Cara pertama ialah persilangan. Lalu, cara kedua ialah mutasi. Cara persilangan dilakukan dengan cara menyilangkan sebagian gen orang tua pada kromosom anak II. TINJAUAN PUSTAKA A. Knapsack Problem 2.1.1 Pengertian Knapsack problem Knapsack problem atau rucksack problem adalah masalah optimasi kombinatorial. Namanya berasal dari masalah maksimasi untuk pilihan paling tepat dari barang-barang yang akan dibawa dalam sebuah tas pada sebuah perjalanan. Sejumlah barang yang tersedia ini, masing-masing memiliki berat dan nilai, yang menentukan jumlah barang yang dapat dibawa sehingga total berat tidak melebihi kapasitas tas dan dengan total nilai yang sebesar mungkin. 2.1.2 Jenis-Jenis Knapsack Problem Terdapat beberapa variasi Knapsack problem: 0/1 Knapsack problem Setiap barang hanya tersedia 1 unit, take it or leave it. Fractional Knapsack problem Barang boleh dibawa sebagian saja (unit dalam pecahan). Versi problem ini menjadi masuk akal apabila barang yang tersedia dapat dibagi-bagi misalnya gula, tepung, dan sebagainya. Bounded Knapsack problem Setiap barang tersedia sebanyak N unit (jumlahnya terbatas). Unbounded Knapsack problem Setiap barang tersedia lebih dari 1 unit, jumlahnya tidak terbatas. B. Algoritma Genetika Pada algoritma ini, teknik pencarian dilakukan sekaligus atas sejumlah solusi yang mungkin dikenal dengan istilah populasi. Individu yang terdapat dalam satu populasi disebut dengan istilah kromosom. Kromosom ini merupakan suatu solusi yang masih berbentuk simbol. Populasi awal dibangun secara acak, sedangkan populasi berikutnya merupakan hasil evolusi kromosom-kromosom melalui iterasi yang disebut dengan istilah generasi. Pada setiap generasi, kromosom akan melalui proses evaluasi dengan menggunakan alat ukur yang disebut dengan fungsi fitness. Selanjutnya konstruksi dasar dari Algoritma Genetika adalah sebagai berikut : Pendefinisian Kromosom Pendefinisian Fungsi Fitness Membangkitkan Sebuah Populasi Awal Reproduksi Crossover Mutasi Pelestarian A. Exhaustive search

Exhaustive search adalah teknik pencarian solusi secara solusi brute force untuk masalah yang melibatkan pencarian elemen dengan sifat khusus, biasanya di antara objek-objek kombinatorik seperti permutasi, kombinasi, atau himpunan bagian dari sebuah himpunan. III. PEMBAHASAN A. Algoritma Genetika 3.1.1 Kromosom Dalam kasus knapsack problem, gen direpresentasikan dalam bentuk string bit. Caranya yaitu dengan memilih barang secara manual pada Tabel 3.1, di mana barang yang terpilih diberi tanda dan tanda x untuk barang yang tidak dipilih. Kedua tanda tersebut bisa dikodekan sebagai 1 untuk tanda dan 0 untuk tanda x. Dengan demikian representasi kromosom untuk masalah di atas adalah pengkodean biner dengan panjang 4 bit (sejumlah barang yang ada) [8]. Tabel 3.1 Daftar barang yang dapat diangkut Nama Berat Nilai Pilihan Kode Pilihan I Barang (kg) (kg) II b1 A 3 6 x b2 B 2 5 b3 C 5 9 x x b4 D 4 8 Sehingga didapatkan kromosom seperti pada gambar berikut ini. K1 0 1 0 1 b1 b2 b3 b4 1 1 0 1 b1 b2 b3 b4 Gambar 3.1 Representasi kromosom Inisialisasi terhadap secara kromosom dilakukan secara acak (random). 3.1.2 Fungsi fitness Untuk membangun fungsi fitness dalam kasus knapsack problem, bisa dimulai dengan tujuan yang ingin dicapai, yakni menemukan sejumlah barang yang total nilainya paling besar (maksimasi) dan total beratnya kurang atau sama dengan total berat yang diijinkan sehingga bisa ditulis fungsi fitness-nya adalah K2

Batasan total beratnya adalah

di mana bi bernilai 1 atau 0 yang menyatakan barang ke-i diambil atau tidak diambil, vi menyatakan nilai barang ke-i dan wi menyatakan berat barang ke-i. 3.1.3 Seleksi Untuk menyelesaikan masalah knapsack problem, digunakan metode seleksi induk yaitu seleksi berdasarkan roulette wheel. Langkah-langkah penyeleksiannya: 1. Hitung fungsi fitness untuk masing-masing kromosom eval(vi), i = 1, 2, ..., pop_size (ukuran populasi)

2. Hitung total fitness dari populasi tersebut:

START

3. Hitung probabilitas dari seleksi pi untuk masing-masing kromosom vi, i = 1, 2, ..., pop_size 4. Hitung komulatif p qi untuk masing-masing kromosom vi, i = 1, 2, ..., pop_size

bobotMaX volumeMax jumlahbarang Individu Fittest[3] generatePopulasi

Deklarasi variabel

Proses seleksi berdasarkan atas pemutaran roulette wheel sebanyak pop_size kali; setiap kali dipilih kromosom tunggal sebagai populasi baru, dengan cara: Bangkitkan bilangan acak r Bila r < q1 maka pilih kromosom pertama (v1); bila tidak pilih kromosom ke-i vi (2 i pop_size) sedemikian rupa sehingga qi-1 < r qi 3.1.4 Operator logika Metode crossover yang digunakan pada kromosom berbentuk string biner ini adalah crossover satu titik (onepoint crossover). Adapun mutasi yang digunakan pada knapsack problem ini adalah mutasi yang bernilai biner. Berikut flowchart program algoritma genetika:

(fittest[0]!=fittest[1] && fittest[1]!=fittest[2]) || Fittest[0]==0

TIDAK

YA jumlahIndividuBaru individuBaru individuBaru[0] = getIndividuTerbaik(individu); Deklarasi variabel

jumlahIndividuBaru++

jumlahIndividuBaru < jumlahPopulasi YA seleksi crossover mutasi

TIDAK

j=0; j<jumlahIndividuBaru; j++ YA individuBaru[j].fitness = getFitness(individuBaru[j]);

TIDAK

Evaluasi fitness ke dalam fittest

individu=individuBaru

STOP

B. Exhaustive Search Langkah-langkah metode exhaustive search: 1. Enumerasi (list) setiap solusi yang mungkin dengan cara yang sistematis. 2. Evaluasi setiap kemungkinan solusi satu per satu, mungkin saja beberapa kemungkinan solusi yang tidak layak dikeluarkan, dan simpan solusi terbaik yang ditemukan sampai sejauh ini (the best solusi found so far). 3. Bila pencarian berakhir, umumkan solusi terbaik (the winner). Algoritma exhaustive secara teoritis menghasilkan solusi, namun waktu atau sumberdaya yang dibutuhkan dalam pencarian solusinya sangat besar. Langkah-langkah pencarian solusi 0/1 Knapsack secara exhaustive search dirangkum dalam tabel di bawah ini: Tabel 3.2 langkah-langkah pencarian solusi Himpunan Bagian Total Bobot Total keuntungan {} 0 0 {1} 2 20 {2} 5 30 {3} 10 50 {4} 5 10 {1, 2} 7 50 {1, 3} 12 70 {1, 4} 7 30 {2, 3} 15 80 {2, 4} 10 40 {3, 4} 15 60 {1, 2, 3} 17 tidak layak {1, 2, 4} 12 60 {1, 3, 4} 17 tidak layak {2, 3, 4} 20 tidak layak {1, 2, 3, 4} 22 tidak layak Himpunan bagian objek yang memberikan keuntungan maksimum adalah {2, 3} dengan total keuntungan adalah 80. Solusi persoalan 0/1 Knapsack di atas adalah X = {0, 1, 1, 0}. Waktu untuk menghitung total bobot objek yang dipilih = O(n). Sehingga, Kompleksitas algoritma exhaustive search untuk persoalan 0/1 Knapsack adalah T(n) = O(n. 2n) 0/1 Knapsack adalah contoh persoalan yang mempunyai kompleksitas algoritma eksponensial. 0/1 Knapsack digolongkan sebagai persoalan NP (Non-deterministic Polynomial), karena tidak mungkin dapat ditemukan algoritma polinomial untuk memecahkannya. Berikut flowchart program algoritma exhaustive search:

START

jumlahSolusi = 2 ^ jumlahBarang

buat solusi sebanyak jumlahSolusi generate kombinasi tiap solusi

TIDAK

i=0; i<jumlahBarang;i++ YA nilai=1 j=0; j<jumlahSolusi;j++ YA pembagi = 2^(i+1) TIDAK

j modulus (jumlahSolusi/ pembagi)=0 && j!=0 YA

TIDAK

nilai==0

TIDAK

YA nilai=1 nilai=0

Set solusi ke[i] kombinasi ke [j] = nilai

TIDAK i=0; i<jumlahSolusi;i++ YA TIDAK Solusi ke[i] layak? YA Hitung kelayakan solusi ke[i]

Kelayakan terbaik < kelayakan solusi ke[i]

TIDAK

YA Terbaik = solusi ke[i]

STOP

C. Implementasi dan Hasil Pengujian Untuk implementasi sistem, digunakan bahasa pemrograman Visual Studio C#. Sistem ini dikembangkan sehingga pengguna dapat melakukan penentuan barang dan berat sesuai dengan yang dikehendaki. Adapun hasil interface sistem dapat dilihat pada gambar di bawah ini. Terdiri dari 3 bagian. Bagian kiri terdiri dari form untuk mnginputkan barang dan menentukan bobot max dan volume max. Form bagian tengah berisi list barang yang akan di angkut. Sedangkan bagian kanan adalah form tampilan pengangkutan barang menggunakan algoritma genetika dan exhaustive search dengan total waktu pengangkutan masing- masing algoritma.

box7-1 bobot: 38 volume: 41 box7-2 bobot: 38 volume: 41 box7-3 bobot: 38 volume: 41 box7-4 bobot: 38 volume: 41 box7-5 bobot: 38 volume: 41 box7-6 bobot: 38 volume: 41 box7-7 bobot: 38 volume: 41 box8-1 bobot: 33 volume: 15 box8-2 bobot: 33 volume: 15 box8-3 bobot: 33 volume: 15 box8-4 bobot: 33 volume: 15 box8-5 bobot: 33 volume: 15 box8-6 bobot: 33 volume: 15 box8-7 bobot: 33 volume: 15 box8-8 bobot: 33 volume: 15 box8-9 bobot: 33 volume: 15 box8-10 bobot: 33 volume: 15 box8-11 bobot: 33 volume: 15 box8-12 bobot: 33 volume: 15 box8-13 bobot: 33 volume: 15 box8-14 bobot: 33 volume: 15 box8-15 bobot: 33 volume: 15 box8-16 bobot: 33 volume: 15 box8-17 bobot: 33 volume: 15 box8-18 bobot: 33 volume: 15 box8-19 bobot: 33 volume: 15 box8-20 bobot: 33 volume: 15 *) bobot max : 40, volume max: 50

Gambar 3.2 Interface aplikasi Untuk pengujian, dilakukan perbandingan jarak yang dihasilkan serta waktu yang dibutuhkan oleh sistem untuk menjalankan algoritma tersebut. Tabel 3.3 Perbandingan waktu pengakutan barang dengan algoritma genetika dan exhaustive search Algoritma Exhaustive Barang Genetika Search box1 bobot: 10 volume: 30 box2 bobot: 5 volume: 20 452,4008 ms 15,6 ms box3 bobot: 20 volume: 10 box4 bobot: 10 volume: 5 box5 bobot: 20 volume: 30 box1 bobot: 10 volume: 30 box2 bobot: 5 volume: 20 box3 bobot: 20 volume: 10 box4 bobot: 10 volume: 5 1107,6019 box5 bobot: 20 volume: 30 15,6 ms ms box6-1 bobot: 35 volume: 30 box7-1 bobot: 38 volume: 41 box8-1 bobot: 33 volume: 15 box8-2 bobot: 33 volume: 15 box1 bobot: 10 volume: 30 box2 bobot: 5 volume: 20 box3 bobot: 20 volume: 10 12812.189 22549.680 box4 bobot: 10 volume: 5 3 ms 7 ms box5 bobot: 20 volume: 30 box6-1 bobot: 35 volume: 30

IV. KESIMPULAN Algoritma genetik mengandalkan konkurensi yang dimilikinya. Hal tersebut disebabkan konkurensi dapat menghemat waktu pengerjaan jika proses komputasi dilakukan oleh lebih dari satu buah mesin komputasi (prosesor multicore). Dalam mencari solusi, algoritma genetik mengembangkan prinsip greedy. Prinsip greedy digunakan pada saat pengambilan individu-individu yang memiliki nilai kelayakan yang baik untuk kemudian dilakukan reproduksi dari individu-individu tersebut. Knapsack problem adalah masalah optimasi kombinatorial. Namanya berasal dari masalah maksimasi untuk pilihan paling tepat dari barang-barang yang akan dibawa dalam sebuah tas pada sebuah perjalanan. Sejumlah barang yang tersedia ini, masing-masing memiliki berat dan nilai, yang menentukan jumlah barang yang dapat dibawa sehingga total berat tidak melebihi kapasitas tas dan dengan total nilai yang sebesar mungkin. Dapat kita simpulkan bahwa Algoritma genetika cukup baik digunakan pada knapsack problem selain itu peningkatan jumlah populasi akan memberikan nilai fitness yang semakin tinggi, yang berarti bahwa solusi optimal yang ditemukan semakin baik. Karena dengan peningkatan jumlah populasi akan memberikan ruang solusi yang semakin banyak. Karena Aplikasi ini akan menghasilkan optimasi kombinatorial yang mendekati solusi optimalnya. Hasil dari program bergantung kepada penentuan parameter dan data yang diinputkan.

kelemahan dari GA adalah belum tentu ditemukannya solusi yang optimal. sedangkan dengan menggunakan brute force pasti ditemukannya solusi karena brute force melakukan pengecekan terhadap semua solusi yang dimungkinkan. selain itu , apabila jumlah data sedikit , algoritma brute force dapat menemukan solusi lebih cepat daripada GA. sedangkan apabila sebaliknya ,jumlah datanya banyak menggunakan GA lebih cepat daripada brute force. V. KONTRIBUSI Perbandingan algoritma exhaustive search dan algoritma genetika untuk mencari solusi dari knapsack problem kami wujudkan dalam bentuk program berbahasa visual C#. Dari program ini, dapat diketahui bahwa untuk jumlah barang yang sedikit, exhaustive search memiliki waktu pencarian solusi yang lebih cepat daripada algoritma genetika. Tetapi untuk barang dalam jumlah banyak, algoritma genetika menemukan solusi lebih cepat daripada algoritma exhaustive search. Dalam hal efektivitas solusi, algoritma exhaustive search akan selalu menemukan solusi yang terbaik karena semua solusi yang mungkin akan diperhitungkan dan dibandingkan. Tidak ada satupun solusi yang terlewatkan. Sedangkan algoritma genetika tidak selalu menemukan solusi terbaik karena proses seleksi, crossover dan mutasi yang bersifat random. Meski begitu, tidak jarang algoritma genetika menemukan solusi terbaik untuk knapsack problem. Dari hasil perbandingan algoritma yang diperoleh ini, kita akan mengerti kapan kita harus menyelesaikan masalah optimasi pengangkutan barang dengan menggunakan algoritma exhaustive search maupun algoritma genetika. REFERENCES
[1] [2] [3] [4] Kusumadewi, Sri. 2003. Artificial Intelligence (Teknik dan Aplikasinya). Yogyakarta: Graha Ilmu. Kuswadi, Son. 2007. Kendali Cerdas, Teori dan Aplikasi Praktisnya. Yogyakarta: Andi Offset. Setiadi, Robert. 2008. Algoritma itu Mudah. Jakarta: Prima Infosarana Media. Shrestha, Dipti dan Maya Hristakeva. Solving the 0-1 Knapsack problem with Genetic Algorithms. USA: Computer Science Department, Simpson College. Suyanto. 2008. Evolutionary Computation: Komputasi Berbasis Evolusi dan Genetika. Bandung: Informatika. Wibowo, Agus Urip Ari , Juni Nurma Sari dan Kori Cahyono. 2003. Bahasa Pemrograman I. Rumbai: Politeknik Caltex Riau. Wicaksono, Prasetyo Andy. 2007. Makalah IF2251 Strategi Algoritmik: Eksplorasi Algoritma Brute Force, Greedy dan Pemrograman Dinamis pada Penyelesaian Masalah 0/1 Knapsack. Bandung: STEI, Institut Teknologi Bandung.

[5] [6] [7]

Anda mungkin juga menyukai