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
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
KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Sebagai mahasiswa Universitas Kristen Maranatha Bandung, saya yang bertanda tangan dibawah ini :
Nama : Ricky Susanto NRP : 0572048
Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas Kristen Maranatha 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
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 Universitas Kristen Maranatha 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.
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
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.
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.
2.2.2.2 Urutan Stimulus ... 8
2.2.2.1 Tujuan ... 8
Input Knapsack ... 8
2.2.2 Fitur 2 Input Barang ... 7
2.2.1 Fitur 1 2.2 Fitur Produk Perangkat Lunak ... 7
2.1.4 Antarmuka Komunikasi ... 6
2.1.3 Antarmuka Perangkat Lunak ... 6
2.1.2 Antarmuka Perangkat Keras... 6
2.1.1 Antarmuka dengan Pengguna ... 6
2.1 Persyaratan Antarmuka Eksternal ... 6
BAB 2 SPESIFIKASI PRODUK ... 6
1.2.5 Asumsi dan Ketergantungan... 5
1.2.4 Batasan - Batasan ... 4
1.2.3 Karakteristik Pengguna... 4
1.2.2 Fungsi Produk ... 4
1.2.1 Perspektif Produk... 4
1.2 Gambaran Keseluruhan... 4
1.1.4 Overview Laporan ... 2
1.1.3 Definisi, Akronim, dan Singkatan ... 2
1.1.2 Ruang Lingkup Proyek... 2
1.1.1 Tujuan ... 1
1.1 Pendahuluan ... 1
BAB 1 PERSYARATAN PRODUK ... 1
DAFTAR PROGRAM ... xv
DAFTAR TABEL ... xii
DAFTAR GAMBAR ... xi
DAFTAR ISI ... viii
ABSTRACT ... vii
ABSTRAKSI ... vi
KATA PENGANTAR ... iv
KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS... iii
SURAT PERNYATAAN ORISINALITAS KARYA ... ii
LEMBAR PENGESAHAN ... i
DAFTAR ISI
4.2 Perjalanan Tahap Implementasi ... 52
Class... 42
4.1.2 Keterkaitan antar Class ... 42
4.1.1 Pembagian 4.1 Perencanaan Tahap Implementasi ... 42
BAB 4 PENGEMBANGAN SISTEM ... 42
Class Diagram... 33
3.2.3 Activity Diagram ... 27
3.2.2 Use Case Diagram... 24
3.2.1 3.2 Desain Perangkat Lunak Secara Keseluruhan... 24
3.1.5 Penerapan Algoritma Genetika dalam Knapsack Problem ... 22
Shared Object ... 21
3.1.4.3 3.1.4.2 Crossover... 20
Roulette Wheel... 19
3.1.4.1 Metode Seleksi 3.1.4 Algoritma Genetik ... 18
knapsack dengan Greedy... 14
3.1.3.1 Pemecahan Knapsack Problem ... 14
3.1.3 3.1.2 Overview Sistem ... 13
3.1.1 Identifikasi ... 13
3.1 Pendahuluan ... 13
BAB 3 DESAIN PERANGKAT LUNAK ... 13
2.2.7.3 Persyaratan Fungsional yang berhubungan... 12
2.2.7.2 Urutan Stimulus ... 11
2.2.7.1 Tujuan ... 11
Setting Parameter Algoritma Genetik ... 11
2.2.7 Fitur 7 2.2.6.3 Persyaratan Fungsional yang berhubungan... 11
2.2.6.2 Urutan Stimulus... 11
2.2.6.1Tujuan ... 10
2.2.6 Fitur 6 Grafik Solusi... 10
2.2.5.3 Persyaratan Fungsional yang berhubungan... 10
2.2.5.2 Urutan Stimulus ... 10
2.2.5.1 Tujuan ... 10
Load ... 10
2.2.5 Fitur 5 2.2.4.3 Persyaratan Fungsional yang berhubungan... 10
2.2.4.2 Urutan Stimulus ... 9
2.2.4.1 Tujuan ... 9
Save... 9
2.2.4 Fitur 4 2.2.3.3 Persyaratan Fungsional yang berhubungan... 9
2.2.3.2 Urutan Stimulus ... 8
2.2.3.1 Tujuan ... 8
2.2.3 Fitur 3 Pencarian Solusi... 8
2.2.2.3 Persyaratan Fungsional yang berhubungan... 8
LAMPIRAN DATA PENULIS ...IX DAFTAR PUSTAKA...VIII
6.3 Rencana Perbaikan / Implementasi terhadap Saran yang Diberikan... 94
6.2 Keterkaitan antara Saran dengan Hasil Evaluasi ... 93
6.1 Keterkaitan antara Kesimpulan dengan Hasil Evaluasi... 93
BAB 6 KESIMPULAN DAN SARAN... 93
5.3 Ulasan Hasil Evaluasi ... 91
Real... 89
5.2.3 Uji Kasus 5.2.2 Uji Algoritma Genetik ... 69
5.2.1 Black Box ... 65
5.2 Perjalanan Metodologi Pengujian ... 65
5.1.2 Uji Fungsionalitas Modul/Class... 64
5.1.1 Test Case... 62
5.1 Rencana Pengujian Sistem Terimplementasi... 62
BAB 5 TESTING DAN EVALUASI SISTEM ... 62
Gambar 4.10 Setting Parameter... 60
Gambar 4.9 Grafik ... 60
Gambar 4.8 Save Project... 59
Gambar 4.7 Project ... 58
Gambar 4.6 Load Project... 58
Gambar 4.5 Input Knapsack... 57
Gambar 4.4 Input Barang ... 56
Gambar 4.3 Menu Utama ... 55
Gambar 4.2 Top Down Implementasi ... 52
Class... 42
Gambar 4.1 Relasi Antar Gambar 3.11 Class Diagram ... 34
Setting Parameter ... 33
Gambar 3.10 Activity Diagram Gambar 3.9 Activity Diagram Grafik Solusi... 32
Gambar 3.8 Activity Diagram Save... 31
Gambar 3.7 Activity Diagram Load ... 30
Gambar 3.6 Activity Diagram Pencarian Solusi... 29
Gambar 3.5 Activity Diagram Memasukan Knapsack ... 28
Gambar 3.4 Activity Diagram Memasukan Barang... 28
Gambar 3.3 Use Case Diagram... 24
Crossover... 20
Gambar 3.2 Varian Gambar 3.1 Metode Roulette Wheel... 19
DAFTAR GAMBAR
view grafik ... 64
Tabel 5.6 Test Case Save ... 64
Tabel 5.5 Test Case Load ... 63
Tabel 5.4 Test Case Tabel 5.3 Test Case Pencarian Solusi ... 63
Tabel 5.2 Test Case Menginput knapsack... 62
Tabel 5.1 Test Case Menginput Barang ... 62
Tabel 4.1 Realisasi Fungsionalitas... 54
Class BukaSO ... 39
Tabel 3.15 Class SaveSO ... 38
Tabel 3.15 Class Seleksi... 38
Tabel 3.14 Class Crossover ... 37
Tabel 3.13 Class Mutasi... 37
Tabel 3.12 Class AG... 36
Tabel 3.11 Class Main... 34
Tabel 3.10 Tabel 3.9 Notasi Use Case View ... 27
Tabel 3.8 Notasi Use Case Save ... 26
Tabel 3.7 Notasi Use Case Edit Data... 26
Tabel 3.6 Notasi Use Case Pencarian Solusi ... 26
Tabel 3.5 Notasi Use Case Menginput Knapsack ... 25
Tabel 3.4 Notasi Use Case Menginput Barang... 25
Tabel 3.3 Notasi Use Case Load... 25
Kromosom... 22
Tabel 3.2 Greedy ... 17
Tabel 3.1 Tabel 1.1 Definisi Akronim dan Singkatan ... 2
DAFTAR TABEL
Tabel 5.29 Hasil Uji Kasus 4... 82
Knapsack Kasus 4... 82
Tabel 5.28 Tabel 5.27 Barang Kasus 4 ... 82
Tabel 5.26 Solusi Kasus 3 ... 78
Tabel 5.25 Hasil Uji Kasus 3... 77
Knapsack Kasus 3... 77
Tabel 5.24 Tabel 5.23 Barang Kasus 3 ... 76
Tabel 5.22 Solusi Kasus 2 ... 74
Tabel 5.21 Hasil Uji Kasus 2... 73
Knapsack Kasus 2... 73
Tabel 5.20 Tabel 5.19 Barang Kasus 2 ... 72
Tabel 5.18 Solusi Kasus 1 ... 70
Tabel 5.17 Hasil Uji Kasus 1... 69
Knapsack Kasus 1... 69
Tabel 5.16 Tabel 5.15 Barang Kasus 1 ... 69
Edit data ... 68
Tabel 5.14 Black Box Test view grafik ... 68
Tabel 5.13 Black Box Test Save ... 67
Tabel 5.12 Black Box Test Load ... 67
Tabel 5.11 Black Box Test Tabel 5.10 Black Box Test Pencarian Solusi... 66
Tabel 5.9 Black Box Test Menginput knapsack ... 66
Tabel 5.8 Black Box Test Menginput Barang ... 65
Edit data ... 64 Tabel 5.7 Test Case
Tabel 5.39 Hasil Evaluasi ... 91 Real ... 90 Tabel 5.38 Solusi Kasus
Real ... 89 Tabel 5.37 Hasil Uji Kasus
Knapsack Kasus Real ... 89 Tabel 5.36
Real... 89 Tabel 5.35 Barang Kasus
Tabel 5.34 Solusi Kasus 5 ... 87 Tabel 5.33 Hasil Uji Kasus 5... 86
program 4.13 Fungsi SaveFN ... 52
program 4.13 Fungsi Saveso ... 51
program 4.12 Fungsi NamaFile... 50
program 4.12 Fungsi Bukaso... 49
program 4.11 Fungsi Sl ... 49
program 4.10 Fungsi MT ... 48
program 4.9 Fungsi CR ... 47
program 4.8 Fungsi startPerhitungan... 47
program 4.7 Fungsi Parameter ... 46
program 4.6 Fungsi Terbaik... 46
program 4.5 Fungsi Fitness ... 45
program 4.4 Fungsi Filter... 45
program 4.3 Fungsi BuatKromosom ... 44
program 4.2 Fungsi Buattabel ... 44
Datagrid ... 43
program 4.1 Fungsi program 3.3 Greedy by Density... 17
program 3.2 Greedy by Weight... 16
program 3.1 Greedy by Profit ... 16