LEMBAR PENGESAHAN PENERAPAN ALGORITMA GENETIK UNTUK MASALAH KNAPSACK 0/1 dengan ini, saya menyatakan bahwa isi CD-Rom Laporan Penelitian sama dengan hasil Revisi Akhir Bandung, DESEMBER 2009 Ricky Susanto NRP: 0572048 Menyetujui,Pembimbing Pembimbing I Pembimbing II Dr.Ir Mewati Ayub, MT Peter Hyong Jik Kim, BFA NIK: 720140 NIK: 710005 Mengetahui Ketua Jurusan S1 Teknik Informatika Dr.Ir Mewati Ayub, MT NIK: 720140 i
SURAT PERNYATAAN ORISINALITAS KARYA Saya yang bertanda tangan di bawah ini: Nama : Ricky Susanto NRP : 0572048 Fakultas / Jurusan : Teknologi Informasi / S1 Teknik Informatika menyatakan bahwa tugas akhir ini merupakan hasil karya saya sendiri dan bukan duplikasi dari orang lain. Apabila di kemudian hari diketahui bahwa pernyataan ini tidak benar adanya maka saya bersedia menerima seluruh sanksi yang diberikan. Demikian pernyataan ini saya buat. BANDUNG, DESEMBER 2009 Ricky Susanto ii
KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS Sebagai mahasiswa Bandung, saya yang bertanda tangan dibawah ini : Nama : Ricky Susanto NRP : 0572048 Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada hak bebas royalti Non Eksklusif atas karya ilmiah saya yang berjudul PENERAPAN ALGORITMA GENETIK UNTUK MASALAH KNAPSACK 0/1. Dengan hak bebas royalti ini Universitas Maranatha berhak menyimpan, mengalih formatkan, mendistribusikannya, dan mempublikasikan di berbagai media untuk kepentingan akademis tanpa perlu meminta izin dari saya selama tetap mencantumkan nama saya sebagai penulis/pencipta. Demikian pernyataan ini saya buat dengan sebenar benarnya. BANDUNG, DESEMBER 2009 Ricky Susanto iii
KATA PENGANTAR Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus yang telah memberikann bimbingan dan karunia Nya selama pengerjaan tugas akhir, hingga penulis dapat menyelesaikan pelaksanaan tugas akhir dengan judul. PENERAPAN ALGORITMA GENETIK UNTUK MASALAH KNAPSACK 0/1 Tugas akhir merupakan salah satu mata kuliah wajib di jurusan Teknik Informatika Fakultas Teknologi Informasi. Selesainya laporan tugas akhir ini tidak terlepas dari bimbingan dan dukungan dari banyak pihak. Dukungan ini secara langsung maupun tidak langsung membantu penulis dalam penyelesaian laporan tugas akhir ini. Pada kesempatan ini, penulis secara khusus ingin menyampaikan rasa terima kasih yang sedalam-dalamnya serta penghargaan yang setinggi tingginya kepada: 1. Bapak Radiant Victor Imbar, S.Kom, MT, MCP, OCP selaku Dekan Fakultas Teknologi Informasi. 2. Ibu Dr. Ir. Mewati Ayub, MT. selaku dosen pembimbing dan Ketua Jurusan S1 Teknik Informatika yang selalu membantu penulis dalam pengerjaan tugas akhir ini. 3. Bapak Peter Hyong Jik Kim, BFA. selaku dosen pembimbing lapangan yang telah memberikan masukan-masukan bagi penulis. 4. Papah dan Mamah, yang selalu memberi doa dan dukungan baik secara moril maupun masukan masukan yang membangun bagi penulis. 5. Kalina, BA. yang selalu mendukung dan memberi dorongan dalam pengerjaan karya tulis ini. 6. Siany Limandinata, Fenny, Marvin Gunardi, Evlin Marcelin, Andre selaku teman-teman yang selalu mendukung dan memberi dorongan dalam pengerjaan karya tulis ini. 7. Segenap teman-teman penulis dari jurusan S1 Teknologi Informatika angkatan 2005 yang memberi saran-saran yang berharga bagi penulis. iv
8. Serta berbagai pihak yang telah banyak membantu yang tidak dapat penulis sebutkan satu. Penulis telah mengerjakan tugas akhir ini dengan seoptimal mungkin, namun setiap orang pasti tidak terlepas dari kesalahan. Penulis meminta maaf atas segala kekurangan dan kesalahan yang dibuat dari laporan ini. Penulis juga mengharapkan saran yang membangun sehingga bisa menambah pengetahuan dan pengalaman penulis. Besar harapan penulis agar laporan tugas akhir ini dapat memberikan manfaat dan pengetahuan bagi semua pihak. Terima kasih Bandung, DESEMBER 2009 Ricky Susanto v
ABSTRAKSI Masalah knapsack 0/1 adalah masalah pengemasan barang dengan batasan-batasan tertentu. Masalah pengemasan barang pada umumnya dibatasi oleh kapasitas yang disebut knapsack. Banyak cara untuk menyelesaikan masalah ini salah satunya dengan menggunakan algoritma genetik. Aplikasi ini dibangun untuk membuat simulasi yang menghasilkan solusi untuk mempermudah user dalam melakukan pengemasan barang. Aplikasi ini mengimplementasikan teknik-tenik yang terdapat pada algoritma genetik dalam menghasilkan solusi untuk masalah knapsack 0/1. Data barang yang di-input oleh user direpresentasikan di dalam array sehingga dapat dengan mudah diolah dengan teknik-teknik algoritma genetik. Pengujian terhadap aplikasi simulasi membatasi perhitungan hanya pada dimensi volume dan berat. Hasil pengujian ditujukan untuk mencari solusi dengan profit tertinggi dengan kombinasi parameter algoritma genetik yang optimal. Uji kasus juga dilakukan pada kasus nyata dan diharapkan memberikan solusi yang dapat dipakai pada dunia nyata. Kata Kunci : knapsack 0/1, algoritma genetik, parameter algoritma genetik, array. vi
ABSTRACT The problem of knapsack 0/1 is the way of packing of things with some limitations. The common problem of packing is usually limited by the capacity called knapsack. There are a lot of ways to solve the problem, one of them by using the algorithm genetic This application is made to create a simulation and solution of packing that eases the user. This application implements the algorithm techniques in order to create a solution for the knapsack problem. The input from the user, is represented in an array so it can be easily accessed and processed using the algorithm genetic. The application testing is used to limit the calculation that only depends on the volume and the weight dimension. The test results are used to create a solution that combines the highest profit with the optimum algorithm genetic parameter. The real testing is also used for the real case and is expected to give a best solution that can be used in the real world. Key Word : knapsack 0/1, genetic algorithm, algorithm genetic parameter. vii
DAFTAR ISI LEMBAR PENGESAHAN... i SURAT PERNYATAAN ORISINALITAS KARYA... ii KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS... iii KATA PENGANTAR... iv ABSTRAKSI... vi ABSTRACT... vii DAFTAR ISI... viii DAFTAR GAMBAR... xi DAFTAR TABEL... xii DAFTAR PROGRAM... xv BAB 1 PERSYARATAN PRODUK... 1 1.1 Pendahuluan... 1 1.1.1 Tujuan... 1 1.1.2 Ruang Lingkup Proyek... 2 1.1.3 Definisi, Akronim, dan Singkatan... 2 1.1.4 Overview Laporan... 2 1.2 Gambaran Keseluruhan... 4 1.2.1 Perspektif Produk... 4 1.2.2 Fungsi Produk... 4 1.2.3 Karakteristik Pengguna... 4 1.2.4 Batasan - Batasan... 4 1.2.5 Asumsi dan Ketergantungan... 5 BAB 2 SPESIFIKASI PRODUK... 6 2.1 Persyaratan Antarmuka Eksternal... 6 2.1.1 Antarmuka dengan Pengguna... 6 2.1.2 Antarmuka Perangkat Keras... 6 2.1.3 Antarmuka Perangkat Lunak... 6 2.1.4 Antarmuka Komunikasi... 6 2.2 Fitur Produk Perangkat Lunak... 7 2.2.1 Fitur 1 Input Barang... 7 2.2.2 Fitur 2 Input Knapsack... 8 2.2.2.1 Tujuan... 8 2.2.2.2 Urutan Stimulus... 8 viii
2.2.2.3 Persyaratan Fungsional yang berhubungan... 8 2.2.3 Fitur 3 Pencarian Solusi... 8 2.2.3.1 Tujuan... 8 2.2.3.2 Urutan Stimulus... 8 2.2.3.3 Persyaratan Fungsional yang berhubungan... 9 2.2.4 Fitur 4 Save... 9 2.2.4.1 Tujuan... 9 2.2.4.2 Urutan Stimulus... 9 2.2.4.3 Persyaratan Fungsional yang berhubungan... 10 2.2.5 Fitur 5 Load... 10 2.2.5.1 Tujuan... 10 2.2.5.2 Urutan Stimulus... 10 2.2.5.3 Persyaratan Fungsional yang berhubungan... 10 2.2.6 Fitur 6 Grafik Solusi... 10 2.2.6.1Tujuan... 10 2.2.6.2 Urutan Stimulus... 11 2.2.6.3 Persyaratan Fungsional yang berhubungan... 11 2.2.7 Fitur 7 Setting Parameter Algoritma Genetik... 11 2.2.7.1 Tujuan... 11 2.2.7.2 Urutan Stimulus... 11 2.2.7.3 Persyaratan Fungsional yang berhubungan... 12 BAB 3 DESAIN PERANGKAT LUNAK... 13 3.1 Pendahuluan... 13 3.1.1 Identifikasi... 13 3.1.2 Overview Sistem... 13 3.1.3 Knapsack Problem... 14 3.1.3.1 Pemecahan knapsack dengan Greedy... 14 3.1.4 Algoritma Genetik... 18 3.1.4.1 Metode Seleksi Roulette Wheel... 19 3.1.4.2 Crossover... 20 3.1.4.3 Shared Object... 21 3.1.5 Penerapan Algoritma Genetika dalam Knapsack Problem... 22 3.2 Desain Perangkat Lunak Secara Keseluruhan... 24 3.2.1 Use Case Diagram... 24 3.2.2 Activity Diagram... 27 3.2.3 Class Diagram... 33 BAB 4 PENGEMBANGAN SISTEM... 42 4.1 Perencanaan Tahap Implementasi... 42 4.1.1 Pembagian Class... 42 4.1.2 Keterkaitan antar Class... 42 4.2 Perjalanan Tahap Implementasi... 52 4.2.1 Top Down Implementasi... 52 4.2.2 Error handling... 53 4.2.3 Ulasan Realisasi Fungsionalitas... 54 4.2.4 Ulasan Realisasi User Interface Design... 55 ix ix
BAB 5 TESTING DAN EVALUASI SISTEM... 62 5.1 Rencana Pengujian Sistem Terimplementasi... 62 5.1.1 Test Case... 62 5.1.2 Uji Fungsionalitas Modul/Class... 64 5.2 Perjalanan Metodologi Pengujian... 65 5.2.1 Black Box... 65 5.2.2 Uji Algoritma Genetik... 69 5.2.3 Uji Kasus Real... 89 5.3 Ulasan Hasil Evaluasi... 91 BAB 6 KESIMPULAN DAN SARAN... 93 6.1 Keterkaitan antara Kesimpulan dengan Hasil Evaluasi... 93 6.2 Keterkaitan antara Saran dengan Hasil Evaluasi... 93 6.3 Rencana Perbaikan / Implementasi terhadap Saran yang Diberikan... 94 DAFTAR PUSTAKA...VIII LAMPIRAN DATA PENULIS...IX x
DAFTAR GAMBAR Gambar 3.1 Metode Roulette Wheel... 19 Gambar 3.2 Varian Crossover... 20 Gambar 3.3 Use Case Diagram... 24 Gambar 3.4 Activity Diagram Memasukan Barang... 28 Gambar 3.5 Activity Diagram Memasukan Knapsack... 28 Gambar 3.6 Activity Diagram Pencarian Solusi... 29 Gambar 3.7 Activity Diagram Load... 30 Gambar 3.8 Activity Diagram Save... 31 Gambar 3.9 Activity Diagram Grafik Solusi... 32 Gambar 3.10 Activity Diagram Setting Parameter... 33 Gambar 3.11 Class Diagram... 34 Gambar 4.1 Relasi Antar Class... 42 Gambar 4.2 Top Down Implementasi... 52 Gambar 4.3 Menu Utama... 55 Gambar 4.4 Input Barang... 56 Gambar 4.5 Input Knapsack... 57 Gambar 4.6 Load Project... 58 Gambar 4.7 Project... 58 Gambar 4.8 Save Project... 59 Gambar 4.9 Grafik... 60 Gambar 4.10 Setting Parameter... 60 xi
DAFTAR TABEL Tabel 1.1 Definisi Akronim dan Singkatan... 2 Tabel 3.1 Greedy... 17 Tabel 3.2 Kromosom... 22 Tabel 3.3 Notasi Use Case Load... 25 Tabel 3.4 Notasi Use Case Menginput Barang... 25 Tabel 3.5 Notasi Use Case Menginput Knapsack... 25 Tabel 3.6 Notasi Use Case Pencarian Solusi... 26 Tabel 3.7 Notasi Use Case Edit Data... 26 Tabel 3.8 Notasi Use Case Save... 26 Tabel 3.9 Notasi Use Case View... 27 Tabel 3.10 Class Main... 34 Tabel 3.11 Class AG... 36 Tabel 3.12 Class Mutasi... 37 Tabel 3.13 Class Crossover... 37 Tabel 3.14 Class Seleksi... 38 Tabel 3.15 Class SaveSO... 38 Tabel 3.15 Class BukaSO... 39 Tabel 4.1 Realisasi Fungsionalitas... 54 Tabel 5.1 Test Case Menginput Barang... 62 Tabel 5.2 Test Case Menginput knapsack... 62 Tabel 5.3 Test Case Pencarian Solusi... 63 Tabel 5.4 Test Case Load... 63 Tabel 5.5 Test Case Save... 64 Tabel 5.6 Test Case view grafik... 64 xii
Tabel 5.7 Test Case Edit data... 64 Tabel 5.8 Black Box Test Menginput Barang... 65 Tabel 5.9 Black Box Test Menginput knapsack... 66 Tabel 5.10 Black Box Test Pencarian Solusi... 66 Tabel 5.11 Black Box Test Load... 67 Tabel 5.12 Black Box Test Save... 67 Tabel 5.13 Black Box Test view grafik... 68 Tabel 5.14 Black Box Test Edit data... 68 Tabel 5.15 Barang Kasus 1... 69 Tabel 5.16 Knapsack Kasus 1... 69 Tabel 5.17 Hasil Uji Kasus 1... 69 Tabel 5.18 Solusi Kasus 1... 70 Tabel 5.19 Barang Kasus 2... 72 Tabel 5.20 Knapsack Kasus 2... 73 Tabel 5.21 Hasil Uji Kasus 2... 73 Tabel 5.22 Solusi Kasus 2... 74 Tabel 5.23 Barang Kasus 3... 76 Tabel 5.24 Knapsack Kasus 3... 77 Tabel 5.25 Hasil Uji Kasus 3... 77 Tabel 5.26 Solusi Kasus 3... 78 Tabel 5.27 Barang Kasus 4... 82 Tabel 5.28 Knapsack Kasus 4... 82 Tabel 5.29 Hasil Uji Kasus 4... 82 Tabel 5.30 Solusi Kasus 4... 83 Tabel 5.31 Barang Kasus 5... 86 Tabel 5.32 Knapsack Kasus 5... 86 xiii
Tabel 5.33 Hasil Uji Kasus 5... 86 Tabel 5.34 Solusi Kasus 5... 87 Tabel 5.35 Barang Kasus Real... 89 Tabel 5.36 Knapsack Kasus Real... 89 Tabel 5.37 Hasil Uji Kasus Real... 89 Tabel 5.38 Solusi Kasus Real... 90 Tabel 5.39 Hasil Evaluasi... 91 xiv
DAFTAR PROGRAM program 3.1 Greedy by Profit... 16 program 3.2 Greedy by Weight... 16 program 3.3 Greedy by Density... 17 program 4.1 Fungsi Datagrid... 43 program 4.2 Fungsi Buattabel... 44 program 4.3 Fungsi BuatKromosom... 44 program 4.4 Fungsi Filter... 45 program 4.5 Fungsi Fitness... 45 program 4.6 Fungsi Terbaik... 46 program 4.7 Fungsi Parameter... 46 program 4.8 Fungsi startperhitungan... 47 program 4.9 Fungsi CR... 47 program 4.10 Fungsi MT... 48 program 4.11 Fungsi Sl... 49 program 4.12 Fungsi Bukaso... 49 program 4.12 Fungsi NamaFile... 50 program 4.13 Fungsi Saveso... 51 program 4.13 Fungsi SaveFN... 52 xv