PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI APLIKASI MASALAH 0/1 KNAPSACK MENGGUNAKAN ALGORITMA GREEDY Skripsi Diajukan untuk Menempuh Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Oleh : Yohanes Tommy Gratsianto NIM : 065314035
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2013
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI APPLICATION 0/1 KNAPSACK PROBLEM USING GREEDY ALGORITHM Final Project Presented as Partial Fulfillment of the Requirements To Obtain Sarjana Komputer Informatics Engineering Study Program
By : Yohanes Tommy Gratsianto 065314035
INFORMATICS ENGINEERING STUDY PROGRAM FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2013
ii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI SKRIPSI
APLIKASI MASALAH 0/1 KNAPSACK MENGGUNAKAN ALGORITMA GREEDY
Oleh : Yohanes Tommy Gratsianto NIM : 065314035
Telah disetujui oleh : Dosen pembimbing
Alb. Agung Hadhiatma, S.T., M.T.
iii
Tanggal : .... Mei 2013
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI SKRIPSI APLIKASI MASALAH 0/1 KNAPSACK MENGGUNAKAN ALGORITMA GREEDY Dipersiapkan dan ditulis oleh Yohanes Tommy Gratsianto NIM : 065314035 Telah dipertahankan di depan Paniti Penguji Pada Tanggal : 6 Mei 2013 Dan dinyatakan memenuhi syarat Susunan Panitia Penguji : Nama Lengkap Ketua
Tanda Tangan
: Eko Hari Parmadi, S.Si., M.Kom.
……………….
Sekretaris : Drs. J. Eka Priyatma, M.Sc., Ph.D.
……………….
Anggota
……………….
: Alb. Agung Hadhiatma, S.T., M.T.
Yogyakarta, .... Mei 2013 Fakultas Sains dan Teknologi Universitas Sanata Dharma Dekan
Paulina Heruningsih Prima Rosa, S.Si., M.Sc.
iv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSEMBAHAN
Penulis mempersembahkan Tugas Akhir ini kepada : Yesus Kristus Atas segalanya yang telah kau berikan kepada kami.
Bapak Aloysius Hendarto dan Ibu M.M. Sri Utami Terima kasih atas kasih sayang, cinta, pengorbanan, doa dan dukungannya selama ini.
Christophorus Tommy Astanto Aku bangga punya kakak sepertimu.
v
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PERNYATAAN KEASLIAN KARYA Saya menyatakan bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, 16 Mei 2013
Yohanes Tommy Gratsianto
vi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Yohanes Tommy Gratsianto NIM
: 065314035
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul : APLIKASI MASALAH 0/1 KNAPSACK MENGGUNAKAN ALGORITMA GREEDY Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelola dalam bentuk pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberi royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis. Demikian pernyataan ini yang saya buat dengan sebenarnya. Dibuat diYogyakarta Pada tanggal : .... Mei 2013 Yang menyatakan
Yohanes Tommy Gratsianto
vii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTRAK Masalah Knapsack adalah masalah di mana kita dihadapkan dengan persoalan optimasi pemilihan benda untuk dimasukkan ke dalam sebuah wadah yang memiliki keterbatasan ruang dan daya tampung tetapi benda yang akan dimasukkan ke dalam wadah tersebut haruslah tetap dalam keadaan utuh bukan merupakan fraksi dari benda tersebut. Masing-masing benda yang ada memiliki sebuah nilai berupa berat, volume, harga, atau nilai lainnya yang dapat dipakai sebagai penentu dalam proses pemilihannya. Sedangkan wadah memiliki sebuah nilai konstanta yang dimilikinya dan merupakan sebuah pembatas dalam proses pemilihan benda untuk dapat dimasukkan ke dalam wadah tersebut. Penelitian ini bertujuan untuk mengetahui apakah algoritma Greedy dapat menyelesaikan semua permasalahan Knapsack. Hasil pengujian program menunjukkan bahwa algoritma Greedy bisa menyelesaikan permasalahan Knapsack, tetapi tidak selalu menghasilkan solusi yang optimal.
viii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTACT Knapsack problems are problems in which we are faced with the selection of the optimization problem to put objects in a container that has limited space and capacity but objects to be inserted into the container must remain intact is not a fraction of these objects. Each object has a value that is in the form of weight, volume, prices, or other value that can be used as a determinant in the selection process. Meanwhile, the container has a value of its constants and is a barrier in the process of selecting objects to be inserted into the container. This study aims to determine whether the Greedy algorithm can solve all the problems Knapsack. Program testing results show that the Greedy algorithm can solve the problems Knapsack, but does not always produce an optimal solution.
ix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
KATA PENGANTAR Puji syukur saya panjatkan ke hadirat Tuhan Yang Maha Esa karena atas berkat dan rahmatnya sehingga penulis dapat menyelesaikan Skripsi ini. Skripsi ini disusun sebagai salah satu syarat untuk memperoleh gelar sarjana di program studi Teknik Informatika Universitas Sanata Dharma, Yogyakarta. Dalam penulisan Skripsi ini, penulis telah mendapatkan bantuan dari berbagai pihak. Untuk itu penulis dengan segala rendah hati ingin menyampaikan ucapan terimakasih kepada: 1. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc., selaku Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma. 2. Ibu Ridowati Gunawan S.Kom., M.T., selaku Ketua Program Studi Teknik Informatika Univesitas Sanata Dharma. 3. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T., selaku Dosen Pembimbing Akademik Teknik Informatika angkatan 2006 kelas A. 4. Bapak Alb. Agung Hadhiatma, S.T., M.T., selaku Dosen Pembimbing Skripsi yang telah membimbing selama proses pembuatan Skripsi ini. 5. Seluruh
Dosen
Teknik
Informatika
Sanata
Dharma
yang
telah
membimbing penulis selama studi. 6. Seluruh Laboran dan karyawan Fakultas Sains dan Telnologi Universitas Sanata Dharma. 7. Anastasia Galih Sri Darmaningsih yang telah memberi semangat dan dukungan untuk menyelesaikan studi dan skripsi ini.
x
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8. Teman-teman Teknik Informatika Universitas Sanata Dharma angkatan 2006. Terimakasih atas kebersamaanya selama ini. 9. Teman-teman UKF Basketball Fakultas Sains dan Teknologi Universitas Sanata Dharma. Penulis menyadari bahwa dalam penulisan skripsi ini masih banyak kekurangan. Oleh karena itu kritik dan saran yang bersifat membangun akan sangat diharapkan dalam sempurnanya skripsi ini. Akhir kata, penulis berharap semoga penelitian dan tulisan ini dapat bermanfaat bagi pembaca.
Yogyakarta, 16 Mei 2013
Penulis
xi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR ISI HALAMAN JUDUL .................................................................................. i TITLE PAGE .............................................................................................. ii HALAMAN PERSETUJUAN ................................................................... iii HALAMAN PENGESAHAN .................................................................... iv HALAMAN PERSEMBAHAN ................................................................. v HALAMAN KEASLIAN KARYA ............................................................ vi HALAMAN PUBLIKASI KARYA ........................................................... vii ABSTRAK .................................................................................................. viii ABSTACT .................................................................................................. ix KATA PENGANTAR ................................................................................ x DAFTAR ISI .............................................................................................. xii DAFTAR TABEL ...................................................................................... xiv DAFTAR GAMBAR ……………………………………………………. xv BAB I. PENDAHULUAN 1.1 Latar Belakang ……………………………………….............. 1 1.2 Rumusan Masalah ……………………………………............. 2 1.3 Batasan Masalah ………………………………………........… 2 1.4 Tujuan ………………………………………………………… 2 1.5 Metodologi …………………………………………………… 2 1.6 Sistematika Penulisan ………………………………………… 4 BAB II. LANDASAN TEORI 2.1 Pengertian Permasalahan Knapsack ........................................... 5 2.2 Knapsack 0/1 (Integer Knapsack) ............................................... 5 2.3 Algoritma Greedy ....................................................................... 6 2.4 Bubble Sort (Exchange Sort) ...................................................... 8 2.5 Bahasa Pemrograman JAVA ...................................................... 9 BAB III. ANALISA DAN PERANCANGAN SISTEM 3.1 Analisa Sistem ............................................................................ 11 3.2 Kebutuhan Sistem ....................................................................... 11 3.3 Perancangan ................................................................................ 12
xii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.3.1 Perancangan Proses .............................................................12 3.4 Algoritma Program ..................................................................... 13 3.4.1 Algoritma Greedy By Profit ............................................... 14 3.4.2 Flowchart Algoritma Greedy By Profit …………………. 14 3.4.3 Algoritma Greedy By Weight …………………………… 15 3.4.4 Flowchart Algoritma Greedy By Weight ……………….. 16 3.4.5 Algoritma Greedy By Density …………………………... 17 3.4.6 Flowchart Algoritma Greedy By Density ……………….. 17 3.5 Perancangan Interface Program ……………….……………… 18 3.5.1 Form Menu Awal …………………………………….…. 19 3.5.2 Form Menu Utama ………………………………….…… 19 3.5.3 Form Menu Informasi Program ………………….……… 20 BAB IV. IMPLEMENTASI PROGRAM 4.1 Implementasi Program …………………………………….…. 21 4.1.1 Tampilan Menu Awal …………………………………... 21 4.1.2 Tampilan Menu Informasi Program ……………………. 22 4.1.3 Tampilan Menu Utama …………………………………. 23 4.1.4 Tampilan Menu Peringatan ……………………………… 24 BAB V. ANALISA DAN HASIL PENGUJIAN PROGRAM 5.1 Analisa Program ………………………………………………. 26 5.2 Hasil Pengujian Program ……………………………………… 26 BAB VI. KESIMPULAN DAN SARAN 6.1 Kesimpulan …………………………………………………… 31 6.2 Saran ………………………………………………………….. 31 DAFTAR PUSTAKA …………………………………………………….. 32 LAMPIRAN ……………………………………………………………… 33
xiii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR TABEL Table 2.1 Contoh Solusi Menggunakan Algoritma Greedy ……………… 8 Tabel 2.2 Iterasi Pertama Bubble Sort …………………………………… 8 Tabel 2.3 Iterasi Lengkap Bubble Sort …………………………………... 9 Tabel 5.1 Hasil Pengujian Pertama ………………………………………. 27 Tabel 5.2 Hasil Pengujian Kedua ………………………………………… 28 Tabel 5.3 Hasil Pengujian Ketiga ………………………………………… 29 Tabel 5.4 Hasil Pengujian Keempat …………………………………….... 30
xiv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR GAMBAR Gambar 1.1 Diagram Metode Waterfall …………………………………. 3 Gambar 3.1 Diagram Konteks ……………………………………………. 12 Gambar 3.2 Diagram Alur Data Level 1 …………………………………. 12 Gambar 3.3 Diagram Alur Data Level 2 …………………………………. 13 Gambar 3.4 Flowchart Algoritma Greedy By Profit ….………………….. 15 Gambar 3.5 Flowchart Algoritma Greedy By Weight .…………………… 16 Gambar 3.6 Flowchart Algoritma Greedy By Density ….………………... 18 Gambar 3.7 Form Menu Awal …………………….……………………… 19 Gambar 3.8 Form Menu Utama ………………….……………………….. 19 Gambar 3.9 Form Menu Informasi Program ……….…………………….. 20 Gambar 4.1 Tampilan NetBeans 5.5 …………….……………………….. 21 Gambar 4.2 Menu Awal Program ………………………………………... 22 Gambar 4.3 Menu Informasi Program .…………………………………… 23 Gambar 4.4 Menu Utama Program ………………………………………. 24 Gambar 4.5 Menu Peringatan ……………………………………………. 25
xv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
1
BAB I PENDAHULUAN 1.1 Latar Belakang Masalah Knapsack merupakan persoalan yang menarik. Masalah Knapsack merupakan salah satu permasalahan optimisasi yang sering dihadapi. Masalah Knapsack adalah masalah di mana kita dihadapkan dengan persoalan optimasi pemilihan benda untuk dimasukkan ke dalam sebuah wadah yang memiliki keterbatasan ruang dan daya tampung tetapi benda yang akan dimasukkan ke dalam wadah tersebut haruslah tetap dalam keadaan utuh bukan merupakan fraksi dari benda tersebut. Masing-masing benda yang ada memiliki sebuah nilai berupa berat, volume, harga, atau nilai lainnya yang dapat dipakai sebagai penentu dalam proses pemilihannya. Sedangkan wadah memiliki sebuah nilai konstanta yang dimilikinya dan merupakan sebuah pembatas dalam proses pemilihan benda untuk dapat dimasukkan ke dalam wadah tersebut. Dalam dunia nyata, Knapsack sering digunakan terutama pada bidang pengangkutan barang. Dalam usaha tersebut, diinginkan suatu keuntungan yang maksimal untuk mengangkut barang yang ada dengan tidak melebihi batas kapasitas yang ada. Banyak algoritma yang dapat digunakan untuk menyelesaikan masalah Knapsack. Misalnya algoritma Brute Force, Dynamic Programming, Greedy, algoritma Genetika dan masih banyak lagi. Pemilihan algoritma dalam penyelesaian permasalahan Knapsack sangat penting. Penggunaan algoritma yang tepat akan membantu penyelesaian kasus knapsack dengan baik. Sebaliknya, ketidaktepatan memilih salah satu algoritma optimisasi akan menyebabkan terhambatnya proses pengambilan keputusan. Dalam Tugas Akhir ini penulis akan membuat aplikasi untuk menyelesaikan permasalahan Integer Knapsack menggunakan algoritma Greedy.
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
2
1.2 Rumusan Masalah Apakah
algoritma Greedy dapat menyelesaikan semua permasalahan
Integer Knapsack terutama dalam bidang pengiriman barang. 1.3 Batasan Masalah Adapun batasan masalah dari tugas akhir ini adalah : 1. Pembuatan aplikasi yang dirancang menggunakan bahasa pemrograman JAVA. 2. Program yang akan dibuat menggunakan algoritma Greedy untuk menyelesaikan permasalahan Integer Knapsack. 3. Data masukan berupa data integer. 1.4 Tujuan Tujuan dari tugas akhir ini adalah merancang dan mengembangkan aplikasi masalah Integer Knapsack menggunakan algoritma Greedy dalam kasus pengangkutan barang. 1.5 Metodologi 1. Metode Studi Pustaka Metode ini sebagai penunjang dalam proses pengumpulan data dengan mempelajari berbagai macam literatur yang berkaitan dengan pembuatan program ini. 2. Metode Pengembangan Perangkat Lunak dengan paradigma Waterfall
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
3
Gambar 1.1 Diagram metode waterfall
Metode ini digunakan sebagai penunjang dalam proses pembuatan program sesuai dengan kebutuhan pemakai. Didalam metode ini terdapat beberapa tahapan yang akan dilakukan yaitu: 1. Rekayasa Sistem Tahapan ini digunakan untuk mengumpulkan kebutuhan program dengan sedikit melibatkan analisis dan perancangannya. 2. Analisis Tahapan ini digunakan untuk menganalisis tentang prosedur atau fungsi yang akan digunakan dan user interface program. 3. Perancangan Merupakan tahapan yang memusatkan pada karakteristik dari user inteface dan prosedure atau fungsi secara mendetail. 4. Penulisan Program Menterjemahkan hasil rancangan ke dalam program. 5. Pengujian Menguji apakah program sudah sesuai dengan yang diinginkan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
4
1.6 Sistematika Penulisan Tugas akhir ini nantinya akan disusun dengan sistematika penulisan sebagai berikut : BAB I
Pendahuluan Bab ini berisi tentang latar belakang, rumusan masalah, batasan masalah, tujuan, metodilogi dan sistematika penulisan.
BAB II
Landasan Teori Bab ini berisi tentang teori-teori yang dapat digunakan sebagai bahan pendukung dari pembuatan program dan penulisan tugas akhir secara keseluruhan.
BAB III
Analisa dan Perancangan Sistem Bab ini berisi tentang analisa sistem, analisa kebutuhan, rancangan user interface yang akan digunakan dalam pembuatan program.
BAB IV
Implementasi Program Bab ini berisi tentang hasil implementasi program, menjelaskan setiap aplikasi yang ada dalam program.
BAB V
Analisa dan Hasil Pengujian Program Bab ini berisi tentang analisa program serta analisa perbandingan kedua algoritma berdasarkan hasil pengujian program.
BAB VI
Kesimpulan dan Saran Bab
ini
berisi
tentang
kesimpulan
mengimplementasikan program. DAFTAR PUSTAKA LAMPIRAN
dan
saran
setelah
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
5
BAB II LANDASAN TEORI 2.1 Pengertian Permasalahan Knapsack Knapsack adalah tas atau karung yang digunakan untuk memasukkan sesuatu. Tapi tidak semua barang bisa ditampung kedalam karung tersebut. Karung tersebut hanya dapat menyimpan beberapa objek dengan total ukuran lebih kecil atau sama dengan ukuran kapasitas karung. Knapsak adalah permasalahan mengenai optimisasi kombinatorial. Knapsack merupakan suatu permasalahan bagaimana memilih objek dari sekian banyak dan berapa besar objek tersebut akan disimpan sehingga diperoleh suatu penyimpanan yang optimal dengan memperhatikan objek yang terdiri dari n objek (1,2,3,...,n) dimana setiap objek memiliki bobot (w n) dan Nilai profit (pn) dengan memperhatikan juga kapasitas dari media penyimpanan sebesar W dan nilai probabilitas dari setiap objek (X n). Kita diberi suatu set barang dengan masing-masing barang mempunyai nilai dan harga yang berbeda dan kita harus menebak jumlah barang yang harus dimasukkan ke dalam knapsack sehingga total nilainya tidak melebihi batas yang diberikan, tetapi memiliki harga total tertinggi
yang paling
memungkinkan. Permasalahan knapsack memiliki tiga jenis persoalan, yaitu : 1. Knapsack 0/1 ( Integer Knapsack) 2. Knapsack Bounded 3. Knapsack Unbounded 2.2 Knapsack 0/1 ( Integer Knapsack) Dalam persoalan ini, kita diberikan n buah objek yang masing-masing memiliki nilai bobot dan keuntungan. Kita diminta untuk memilih objek-objek yang akan dimasukkan ke dalam knapsack yang memiliki bobot maksimum W sehingga didapat keuntungan yang maksimum. Persoalan ini disebut Integer Knapsack karena tiap objek hanya memiliki dua status yaitu terpilih atau tidak.
5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
6
Permasalahan tersebut dapat dinyatakan dalam bentuk formal sebagai berikut : Diberikan n buah objek dengan bobot masing-masing w1, w2, ..., wn dan keuntungan p1, p2, ..., pn. Lalu terdapat sebuah knapsack dengan bobot maksimum K. Solusi dari persoalan diatas dinyatakan dalam vektor n-tupel : X = {x1, x2, ..., xn} Dimana xi bernilai 1 jika objek ke-i dipilih dan bernilai 0 jika objek ke-i tidak dipilih. Misal X = {1,0,0} merupakan solusi dimana objek yang dipilih ialah objek ke-1, sedangkan objek ke-2 dan ke-3 tidak dipilih. Solusi dihasilkan dengan batasan n
Maksimal F pi xi i 1
Dengan kendala n
w x i 1
i
i
K
2.3 Algoritma Greedy Secara harafiah, greedy berati rakus atau tamak. Algoritma Greedy merupakan algoritma sederhana dan lempang yang paling populer untuk pemecahan persoalan optimasi (maksimum atau minimum). Prinsip greedy adalah “take what you can get now!”, yang digunakan dalam konteks positif. Ada tiga pendekatan dalam menyelesaikan persoalan integer knapsack dengan algoritma Greedy, yaitu: 1. Greedy by profit Pada setiap langkah, knapsack diisi dengan objek yang mempunyai keuntungan terbesar. Strategi ini memcoba memaksimumkan keuntungan dengan memilih objek yang paling menguntungkan terlebih dahulu. Pertama kali yang dilakukan adalah mengurutkan secara menurun objekobjek berdasarkan profit-nya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bisa dimasukkan. 2. Greedy by weight
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
7
Pada setiap langkah, knapsack diisi dengan objek yang mempunyai berat paling ringan. Strategi ini memcoba memaksimumkan keuntungan dengan memasukkan sebanyak mungkin objek ke dalam knapsack. Pertama kali yang dilakukan adalah mengurutkan secara menaik objekobjek berdasarkan weight-nya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau tidak ada objek lagi yang bisa dimasukkan. 3. Greedy by density Pada setiap langkah, knapsack diisi dengan objek yang mempunyai densitas (pi/wi) terbesar. Strategi ini mencoba memaksimumkan 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 secara menurun berdasarkan density-nya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau tidak ada objek lagi yang bisa dimasukkan. Pemilihan objek berdasarkan salah satu dari ketiga strategi di atas tidak menjamin akan memberikan solusi optimal. Bahkan ada kemungkinan ketiga strategi tersebut tidak memberikan solusi optimum. Tinjauan persoalan Integer Knapsack dengan n = 3. Misalkan objek-objek tersebut kita beri nomor 1, 2, 3. Properti setiap objek i dan kapasitas knapsack adalah sebagai berikut: w1 = 3;
p1 = 30
w2 = 2;
p2 = 25
w3 = 5;
p3 = 20
Kapasitas knapsack W = 8 Maka tabel solusi dengan menggunakan algoritma greedy adalah sebagai berikut:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Greedy by
Properti Objek
8
Solusi
i
wi
pi
pi/wi
Weight
Profit
Density
Optimal
1
3
30
10
1
1
1
1
2
2
25
12,5
1
1
1
1
3
5
20
4
0
0
0
0
Total Bobot
5
5
5
5
Total Keuntungan
55
55
55
55
Tabel 2.1 Contoh Solusi menggunakan Algoritma Greedy
Dari tabel diatas, algoritma greedy dengan ketiga strategi yang ada menghasilkan solusi yang optimal yaitu X = {1,1,0}. Artinya objek ke-1 dan ke-2 dimasukkan ke dalam knapsack, sedangkan objek ke-3 tidak dimasukkan. 2.4 Bubble Sort (Exchange Sort) Metode pengurutan ini merupakan metode yang paling umum dikenal dalam dunia pemrograman. Kelebihan metode ini ada pada kemudahan dalam membuat programnya. Walaupun semua metode yang digunakan akhirnya harus mempertimbangkan tingkat efisiensinya. Ide dasar metode bubble sort adalah melewatkan data dalam larik beberapa kali. Setiap melewati larik, dilakukan perbandingan setiap elemen sesudahnya (x[i] dengan x[i+1]) dan dilakukan penukaran antara kedua elemen tersebut bila tidak terurut. Perhatikan contoh berikut : 25
57
48
37
12
92
86
33
Hasil iterasi pembadingan pertama akan menghasilkan : x[0]
dengan
x[1]
(25 dengan 57) Tidak berubah
x[1]
dengan
x[2]
(57 dengan 48) Ditukar
x[2]
dengan
x[3]
(57 dengan 37) Ditukar
x[3]
dengan
x[4]
(57 dengan 12) Ditukar
x[4]
dengan
x[5]
(57 dengan 92) Tidak berubah
x[5]
dengan
x[6]
(92 dengan 86) Ditukar
x[6]
dengan
x[7]
(92 dengan 33) Ditukar
Tabel 2.2 Iterasi Pertama Bubble Sort
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
9
Hasil perbandingan pertama, komponen terbesar (92) sudah pada posisi yang benar. Secara umum, x[n-iterasi] akan ada pada posisi yang benar setelah iterasi ke iterasi. Metode ini disebut bubble sort karena setiap elemen lambat seperti gelembung untuk sampai ke posisi yang benar. Setelah pembandingan kedua, larik yang terbentuk : 25
37
12
48
57
33
86
92
Perhatikan angka 86 menempati posisi kedua tertinggi. Setiap iterasi menempatkan setiap elemen larik ke tempat yang benar. Untuk mengurutkan n elemen larik, iterasi yang dibutuhkan tidak lebih dari n-1 iterasi. Iterasi lengkap untuk pengurutan bubble sort : 25
57
48
37
12
92
86
33
Iterasi 1
25
48
37
12
57
86
22
92
Iterasi 2
25
37
12
48
57
33
86
92
Iterasi 3
25
12
37
48
33
57
86
92
Iterasi 4
12
25
37
33
48
57
86
92
Iterasi 5
12
25
33
37
48
57
86
92
Iterasi 6
12
25
33
37
48
57
86
92
Iterasi 7
12
25
33
37
48
57
86
92
Tabel 2.3 Iterasi Lengkap Bubble Sort
Implementasi algoritma bubble sort dalam suatu method : void BubbleSort(int[] data){ int temp; for(int i=1; i
data[j+1]){ temp=data[j]; data[j]=data[j+1]; data[j+1]=temp; } } } }
2.5 Bahasa Pemrograman JAVA
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 10 Java adalah bahasa pemrograman serbaguna yang dapat digunakan untuk membuat program sebagaimana Anda membuatnya dengan bahasa Pascal atau C++. Java dikembangkan oleh Sun Microsystem pada Agustus 1991, dengan nama semula Oak. Konon Oak adalah pohon semacam jati yang terlihat dari jendela tempat pembuatannya, James Gosling, bekerja. Ada yang mengatakan bahwa Oak adalah singkatan dari “Object Application Kernel”, tetapi ada yang menyatakan hal itu muncul setelah nama Oak diberikan. Pada Januari 1995, karena nama Oak dianggap kurang komersial, maka diganti dengan Java. Java merupakan hasil perpaduan sifat dari sejumlah bahasa pemrograman, yaitu C, C++, Object-C, SmallTalk, dan Common LISP. Selain itu Java juga dilengkapi dengan unsur keamanan. Yang tak kalah penting adalah bahwa Java menambahkan paradigma pemrograman yang sederhana. Java memiliki beberapa keunggulan, diantaranya (Hermawan, 2004) : 1. Java berorientasi pada objek Dalam memecahkan masalah, Java membagi program menjadi objekobjek, kemudian memodelkan sifat dan tingkah laku masing-masing. Selanjutnya, Java menentukan dan mengatur interaksi antara objek yang satu dengan yang lain. 2. Java bersifat terdistribusi Pada dekade awal perkembangan PC (Personal Computer), komputer hanya bersifat sebagai workstation tunggal, tidak terhubung satu sama lain. Saat ini, sistem komputerisasi cenderung terdistribusi, mulai dari workstation client, e-mail server, database server, web server,
proxy
server, dan sebagainya. 3. Java bersifat multiplatform Java dapat diterjemahkan oleh Java Interpreter pada berbagai sistem operasi. Ketidaktergantungan terhadap platform sering dinyatakan dengan istilah portabilitas. Tingkat portabilitas Java tidak hanya sebatas pada program sumber (source code), melainkan juga pada tingkat kode biner yang disebut bytecode yang bisa dijalankan pada berbagai sistem operasi karena kode ini berbeda dengan kode mesin.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11 BAB III ANALISA DAN PERANCANGAN SISTEM 3.1 Analisa Sistem Masalah Integer Knapsack adalah masalah di mana kita dihadapkan dengan persoalan optimasi pemilihan benda untuk dimasukkan ke dalam sebuah wadah yang memiliki keterbatasan ruang dan daya tampung tetapi benda yang akan dimasukkan ke dalam wadah tersebut haruslah tetap dalam keadaan utuh bukan merupakan fraksi dari benda tersebut. Masing-masing benda yang ada memiliki sebuah nilai berupa berat, volume, harga, atau nilai lainnya yang dapat dipakai sebagai penentu dalam proses pemilihannya. Sedangkan wadah memiliki sebuah nilai konstanta yang dimilikinya dan merupakan sebuah pembatas dalam proses pemilihan benda untuk dapat dimasukkan ke dalam wadah tersebut. Maka penulis akan mengembangkan suatu program yang dapat digunakan untuk menyelesaikan permasalahan Integer Knapsack dalam kasus pengiriman barang. Adapun program yang akan dibuat untuk mennyelesaikan permasalahan Integer Knapsack menggunakan algoritma Greedy. Perangkat lunak yang digunakan dalam pembuatan program ini yaitu NetBeans versi 5.5. 3.2 Kebutuhan Sistem Dalam pembuatan Tugas Akhir ini penulis menggunakan perangkat lunak NetBeans versi 5.5. Selain itu penulis juga menggunakan perangkat keras yang terdiri dari :
Processor
: Intel Celeron M
Memory
: 1790 Mb
VGA
: 256 Mb
Media Penyimpanan : Hard disk
Media Masukan
: Keyboard
System Operasi
: Windows XP
11
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 12 3.3 Perancangan Pada tahap ini, akan dilakukan proses perancangan terhadap program yang akan dibangun. Proses perancangan ini akan dibagi dalam dua bagian yaitu : perancangan proses dan perancangan interface program. 3.3.1 Perancangan Proses Proses yang terjadi dalam sistem, akan dijelaskan dalam diagram konteks dan diagram arus data (DAD). Diagram konteks dan DAD untuk proses-proses yang terjadi dalam sistem adalah sebagai berikut :
Gambar 3.1 Diagram Konteks
Pada gambar 3.1 terdapat proses pengolahan data menggunakan algoritma Greedy dimana dalam proses tersebut mempunyai masukan berupa data berat, keuntungan, kapasitas knapsack dan menghasilkan keluaran berupa data yang sudah diolah dengan algoritma Greedy.
Gambar 3.2 Diagram Alur Data Level 1
Pada gambar 3.2 terdapat 2 proses yaitu proses pencarian solusi dan proses menampilkan hasil. Dalam proses pencarian solusi data masukan berupa data berat, keuntungan dan kapasistas knapsack. Sedangkan data
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13 keluaran berupa data jumlah berat dan jumlah keuntungan hasil dari proses pencarian solusi. Untuk proses menampilkan hasil masukkannya berasal dari proses pencarian solusi yaitu data jumlah berat dan jumlah keuntungan. Sedangkan data keluarannya yaitu data jumlah berat dan keuntungan.
Gambar 3.3 Diagram Alur Data Level 2
Pada gambar 3.3 menjelaskan bahwa pada proses pencarian solusi (Proses 1 dalam DAD Level 1) dipecah menjadi 3 proses yaitu proses pencarian solusi menggunakan Greedy by profit, proses pencarian solusi meng-gunakan
Greedy by weight, dan proses pencarian solusi
menggunakan Greedy by density. 3.4 Algoritma Program Algoritma pemgrograman sangat penting untuk dibuat karena akan mempermudah dalam proses coding, karena dengan menggunakan algoritma kita dapat mengetahui jalannya proses yang akan kita buat. Untuk algoritma program dalam tugas akhir ini menggunakan algoritma Greedy yang mempunyai tiga pendekatan, yaitu :
Greedy by profit
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 14
Greedy by weight
Greedy by density
3.4.1 Algoritma Greedy By Profit Untuk algoritma Greedy by profit langkah-langkahnya adalah : 1. Masukkan data yang akan diolah. 2. Proses pengolahan data.
Proses pengurutan data dimana data diurutkan berdasarkan p secara descending.
Proses membandingkan w+knapsack dengan W. o Jika w+knapsack <= W, maka w akan dimasukkan ke dalam knapsack. o Jika w+knapsack > W, maka w tidak akan dimasukkan ke dalam knapsack.
Menampilkan hasil.
Selesai
3.4.2 Flowchart Algoritma Greedy By Profit
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15
Gambar 3.4 Flowchart Algoritma Greedy By Profit
3.4.3 Algoritma Greedy By Weight Untuk algoritma Greedy by weight langkah-langkahnya adalah : 1. Masukkan data yang akan diolah. 2. Proses pengolahan data.
Proses pengurutan data dimana data diurutkan berdasarkan w secara ascending.
Proses membandingkan w+knapsack dengan W.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 16 o Jika w+knapsack <= W, maka w akan dimasukkan ke dalam knapsack. o Jika w+knapsack > W, maka w tidak akan dimasukkan ke dalam knapsack.
Menampilkan hasil.
Selesai
3.4.4 Flowchart Algoritma Greedy By Weight
Gambar 3.5 Flowchart Algoritma Greedy By Weight
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 17 3.4.5 Algoritma Greedy By Density Untuk algoritma Greedy by density langkah-langkahnya adalah : 1. Masukkan data yang akan diolah 2. Menghitung nilai density = p/w. 3. Proses pengolahan data.
Proses pengurutan data dimana data diurutkan berdasarkan density secara descending.
Proses membandingkan w+knapsack dengan W. o Jika w+knapsack <= W, maka w akan dimasukkan ke dalam knapsack. o Jika w+knapsack > W, maka w tidak akan dimasukkan ke dalam knapsack.
Menampilkan hasil.
Selesai
3.4.6 Flowchart Algoritma Greedy By Density
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 18
Gambar 3.6 Flowchart Algoritma Greedy By Density
3.5 Perancangan Interface Program Software yang digunakan dalam pembuatan program tugas akhir ini adalah NetBeans 5.5. Adapun rancangan untuk Form-Form dalam program tugas akhir ini sebagai berikut :
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 19 3.5.1 Form Menu Awal
Gambar 3.7 Form Menu Awal
Pada form ini terdapat 3 tombol, yaitu :
Tombol Masuk
: Untuk memanggil Form Utama.
Tombol Keluar
: Untuk keluar dari program.
Tombol Informasi : Untuk memanggil Form Informasi Program
3.5.2 Form Menu Utama
Gambar 3.8 Form Menu Utama
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 20 Pada form ini terdapat 2 tombol, yaitu :
Tombol Kembali : Untuk kembali ke Form Awal
Tombol Proses
: Untuk melakukan proses optimisasi menggunakan Algoritma Greedy.
Pada
form
ini,
disebelah
kiri
terdapat
kolom-kolom
untuk
memasukkan data yang akan diproses dan yang di sebelah kanan untuk menampilkan hasil dari optimalisasi. 3.5.3 Form Menu Informasi Program
Gambar 3.9 Form Menu Informasi Program
Pada Form ini terdapat 2 tombol, yaitu :
Tombol Kembali : Untuk kembali ke form Menu Awal.
Tombol Keluar
: Untuk keluar dari program.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 21 BAB IV IMPLEMENTASI PROGRAM 4.1 Implementasi Program Dalam pembuatan program ini menggunakan bahasa pemrograman JAVA dan menggunakan perangkat lunak NetBeans 5.5. NetBeans ini digunakan untuk membuat project program yang dibuat dan digunakan juga untuk menjalankan program yang telah dibuat.
Gambar 4.1 Tampilan IDE NetBeans 5.5. 4.1.1 Tampilan Menu Awal
21
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 22
Gambar 4.2 Menu Awal Program
Pada menu awal ini terdapat tiga tombol yaitu tombol Info Program, Masuk, dan Keluar. Untuk tombol Info program akan memanggil layer informasi tentang aplikasi masalah knapsack menggunakan algoritma greedy ini. Untuk tombol Masuk akan memanggil tampilan menu utama. Sedangkan untuk tombol Keluar digunakan untuk keluar dari program ini. 4.1.2 Tampilan Menu Informasi Program
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 23
Gambar 4.3 Menu Informasi Program
Pada menu ini berisi informasi aplikasi masalah knapsack menggunakan algoritma greedy. Pada menu ini juga terdapat dua tombol yaitu tombol Keluar dan tombol Kembali. Tombol keluar digunakan untuk keluar dari program. Sedangkan tombol Kembali digunakan untuk kembali ke menu awal. 4.1.3 Tampilan Menu Utama
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 24
Gambar 4.4 Menu Utama
Pada menu utama ini terdapat tiga tombol yaitu tombol Keluar, Kembali dan Proses. Tombol keluar digunakan untuk keluar dari program. Tombol Kembali digunakan untuk kembali ke menu awal. Sedangkan tombol Proses digunakan untuk memproses data dan mencari solusi optimal. Didalam menu utama juga terdapat beberapa kolom untuk memasukkan data yang akan diproses. Untuk memasukkan data harus mencentang checkbox terlebih dahulu supaya kolom menjadi enable dan bisa mengisi kolom tersebut. 4.1.4 Tampilan Menu Peringatan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 25
Gambar 4.5 Menu Peringatan
Menu peringatan ini akan muncul jika kapasitas Knapsack belum diisi. Untuk keluar dari menu ini cukup klik tombol OK.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 26 BAB V ANALISA DAN HASIL PENGUJIAN PROGRAM 5.1 Analisa Program Berdasarkan hasil uji coba, program ini secara keseluruhan dapat bekerja dengan baik dan dapat membantu proses pemilihan barang untuk menghasilkan keuntungan maksimal. Adapun kelebihan dan kekurangan dari program ini antara lain sebagai berikut : 5.1.1 Kelebihan
Program ini dapat digunakan untuk mencari solusi optimal.
Algoritma Greedy dapat digunakan untuk menyelesaikan masalah 0/1 Knapsack.
Program ini sangat sederhana sehingga dapat dengan mudah digunakan.
5.1.2 Kekurangan
Untuk memasukkan datanya masih secara manual jadi bisa saja terjadi kesalahan saan memasukkan data.
Untuk beberapa percobaan solusi yang dihasilkan tidak selalu optimal.
Keluaran yang dihasilkan masih berdasarkan pada strategi yang ada pada algoritma Greedy, sehingga pemakai masih harus menyeleksi mana dari ketiga keluaran itu yang menghasilkan solusi optimal.
5.2 Hasil Pengujian Program Pada tahap uji coba program digunakan beberapa masukan data yang akan di proses. Berikut ini akan ditampilkan hasil dari proses pencarian solusi optimal menggunakan algoritma Greedy.
Pengujian pertama : Jumlah data = 10 Kapasitas knapsack = 139
26
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 27 Properti objek
Greedy by
Solusi
i
w
p
p/w
Profit
Wieght
Density
Optimal
1
4
5
1,25
0
1
1
0
2
7
10
1,43
0
1
1
1
3
6
8
1,34
1
1
1
1
4
21
19
0,90
0
1
0
1
5
17
20
1,18
1
1
1
1
6
35
40
1,14
1
1
1
1
7
42
41
0,98
1
0
0
1
8
11
13
1,18
0
1
1
1
9
39
40
1,02
1
0
1
0
10
28
25
0,89
0
1
0
0
Total bobot
139
129
119
139
Total keuntungan
149
140
136
151
Tabel 5.1 Hasil Pengujian Pertama
Dilihat dari table diatas, pada pengujian pertama dengan strategi by profit total bobot yang dapat ditampung adalah 139 dengan keuntungan 149. Dengan strategi by weight total bobot yang dapat ditampung adalah 129 dengan keuntungan 140 dan dengan strategi by density total bobot yang dapat ditampung adalah 119 dengan keuntungan 136. Sedangkan solusi optimal untuk pengujian pertama ini adalah X={0,1,1,1,1,1,1,1,0,0} dengan total bobot 139 dan total keuntungan 151. Jadi ketiga strategi dari algoritma Greedy ini tidak menghasilkan solusi optimal.
Pengujian kedua Jumlah data = 5 Kapasitas knapsack = 37
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 28 Properti objek
Greedy by
Solusi
i
w
p
p/w
Profit
Wieght
Density
Optimal
1
7
21
3
1
1
1
1
2
13
20
1,54
1
0
1
1
3
11
15
1,36
1
1
1
1
4
9
5
0,56
0
1
0
0
5
5
5
1
1
1
1
1
Total bobot
36
32
36
36
Total keuntungan
61
46
61
61
Tabel 5.2 Hasil Percobaan Kedua
Dilihat dari table diatas, pada pengujian kedua dengan strategi by profit total bobot yang dapat ditampung adalah 36 dengan keuntungan 61. Dengan strategi by weight total bobot yang dapat ditampung adalah 32 dengan keuntungan 46 dan dengan strategi by density total bobot yang dapat ditampung adalah 36 dengan keuntungan 61. Sedangkan solusi optimal untuk percobaan kedua ini adalah X={1,1,1,0,1} dengan total bobot 36 dan total keuntungan 61. Jadi strategi dari algoritma greedi yang menghasilkan solusi optimal adalah Greedy by profit dan by density. Sedangkan Greedy by weight tidak menghasilkan solusi optimal.
Pengujian ketiga Jumlah data = 6 Kapasitas knapsack = 180
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 29 Properti objek
Greedy by
Solusi
i
w
p
p/w
Profit
Wieght
Density
Optimal
1
50
70
1,4
1
1
1
1
2
45
45
1
0
1
1
0
3
60
50
0,83
1
0
0
1
4
70
75
1,07
1
0
1
1
5
30
31
1,03
0
1
0
0
6
95
50
0,56
0
0
0
0
Total bobot
180
125
165
180
Total keuntungan
195
146
190
195
Tabel 5.3 Hasil Percobaan Ketiga
Dilihat dari table diatas, pada pengujian ketiga dengan strategi by profit total bobot yang dapat ditampung adalah 180 dengan keuntungan 195. Dengan strategi by weight total bobot yang dapat ditampung adalah 125 dengan keuntungan 146 dan dengan strategi by density total bobot yang dapat ditampung adalah 165 dengan keuntungan 190. Sedangkan solusi optimal untuk permasalahan diatas adalah X={1,0,1,1,0,0} dengan total bobot 180 dan total keuntungan 195. Jadi strategi yang menghasilkan solusi optimal adalah strategi by profit, sedangkan strategi by weight dan by density tidak menghasilkan solusi optimal.
Pengujian keempat Jumlah data = 7 Kapasitas knapsack = 55
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 30 Properti objek
Greedy by
Solusi
i
w
p
p/w
Profit
Wieght
Density
Optimal
1
9
10
1,11
0
1
1
0
2
15
14
0,93
1
0
0
1
3
5
10
2
1
1
1
1
4
20
12
0,6
0
0
0
0
5
12
30
2,5
1
1
1
1
6
13
13
1
1
1
1
1
7
10
15
1,5
1
1
1
1
Total bobot
55
49
49
55
Total keuntungan
82
78
78
82
Tabel 5.4 Hasil Percobaan Keempat
Dilihat dari table diatas, pada pengujian keempat dengan strategi by profit total bobot yang dapat ditampung adalah 55 dengan keuntungan 82. Dengan strategi by weight total bobot yang dapat ditampung adalah 49 dengan keuntungan 78 dan dengan strategi by density total bobot yang dapat ditampung adalah 49 dengan keuntungan 78. Sedangkan solusi optimal untuk permasalahan diatas adalah X={0,1,1,0,1,1,1} dengan total bobot 55 dan total keuntungan 82. Jadi strategi yang menghasilkan solusi optimal adalah strategi by profit, sedangkan strategi by weight dan by density tidak menghasilkan solusi optimal
.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 31 BAB VI KESIMPULAN DAN SARAN 6.1 Kesimpulan Berdasarkan dari hasil uji coba program yang telah dilakukan, dapat disimpulkan bahwa : 1. Algoritma Greedy dapat diimplementasikan untuk menyelesaikan masalah Integer Knapsack. 2. Algoritma Greedy tidak selalu menghasilkan solusi optimal karena pada setiap langkahnya algoritma Greedy hanya memilih berdasarkan keuntungan terbesar atau berat paling ringan atau density paling besar terlebih dulu yang akan dimasukkan kedalam wadah. 6.2 Saran Adapun saran yang penulis sampaikan setelah pembuatan aplikasi ini adalah : 1. Menambahkan fasilitas ”save” sehingga pengguna dapat menyimpan data masukan dan hasil proses optimalisasi yang telah dilakukan.
31
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 32 DAFTAR PUSTAKA Kadir, Abdul., 2004, Dasar Pemrograman JAVA 2 – Ed. II, Yogyakarta, Andi Offset. Hartati, Sri, G., Suharto, Herry, B., Wijono, Soesilo, M., 2007, Pemrograman GUI Swing Java Dengan NetBeans 5, Yogyakarta, Andi Offset. Hartati, Sri, G., Suharto, Herry, B., Wijono, Soesilo, M., 2005, Java 2 SE dengan JBuilder, Yogyakarta, Andi Offset. Prodi Teknik Informatika, 2007, Modul Praktikum Algoritma dan Struktur Data 1, Yogyakarta. Hermawan, Benny, 2004, Menguasai Java 2 dan Object Oriented Programming, Yogyakarta, Andi Offset. Paryati, 2009, Optimasi Strategi Algoritma Greedy Untuk Menyelesaikan Permasalahan Knapsack 0-1. Andy Wicaksono, Prasetyo, 2007, Eksplorasi Algoritma Brute Force, Greedy dan Pemrograman Dinamis pada Penyelesaian Masalah 0/1 Knapsack. Pramana Baharsyah, Muhamad., Unggul Wicaksono, Sulistyo., Pamuji, Teguh., Munir, Rinaldi., Eksplorasi Algoritma Brute Force, Greedy, dan Dynamic Programming untuk Persoalan Integer Knapsack, Bandung. Munir, Rinaldi, 2004, Diktat Kuliah IF2251 : Strategi Algoritmik.
32
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 33 LAMPIRAN LISTING PROGRAM Menu Awal /* * MenuAwal.java * * Created on March 11, 2013, 1:00 PM */ package design; /** * * @author Tommy */ public class MenuAwal extends javax.swing.JFrame { /** Creates new form MenuAwal */ public MenuAwal() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); InfoProgram = new javax.swing.JButton(); Masuk = new javax.swing.JButton(); Keluar = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Menu Awal"); setResizable(false); jPanel1.setBackground(new java.awt.Color(255, 85, 85)); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel1.setText("APLIKASI MASALAH KNAPSACK"); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel2.setText("MENGGUNAKAN ALGORITMA GREEDY"); InfoProgram.setText("Info Program"); InfoProgram.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { InfoProgramActionPerformed(evt); } });
33
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 34
Masuk.setText("Masuk"); Masuk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { MasukActionPerformed(evt); } }); Keluar.setText("Keluar"); Keluar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { KeluarActionPerformed(evt); } }); jLabel3.setIcon(new javax.swing.ImageIcon("D:\\tom's dokumen\\Knapsack\\src\\untitled.JPG")); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(70, 70, 70) .addComponent(jLabel1)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(46, 46, 46) .addComponent(jLabel2)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(85, 85, 85) .addComponent(jLabel3)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(21, 21, 21) .addComponent(InfoProgram) .addGap(41, 41, 41) .addComponent(Masuk) .addGap(41, 41, 41) .addComponent(Keluar))) .addContainerGap(37, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel3) .addGap(17, 17, 17)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 35
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(InfoProgram) .addComponent(Masuk) .addComponent(Keluar)) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); java.awt.Dimension dialogSize = getSize(); setLocation((screenSize.width-dialogSize.width)/2,(screenSize.heightdialogSize.height)/2); }// private void MasukActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: MenuUtama mu = new MenuUtama(); mu.setVisible(true); this.dispose(); } private void KeluarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: System.exit(0); } private void InfoProgramActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: InfoProgram ip = new InfoProgram(); ip.setVisible(true); this.dispose(); }
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 36
/** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MenuAwal().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton InfoProgram; private javax.swing.JButton Keluar; private javax.swing.JButton Masuk; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; // End of variables declaration }
Info Program
/* * InfoProgram.java * * Created on April 23, 2013, 1:03 PM */ package design; /** * * @author Tommy */ public class InfoProgram extends javax.swing.JFrame { /** Creates new form InfoProgram */ public InfoProgram() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { jLabel1 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel();
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 37 jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); Kembali = new javax.swing.JButton(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Informasi Program"); setResizable(false); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel1.setText("INFORMASI PROGRAM"); jTextArea1.setBackground(new java.awt.Color(255, 85, 85)); jTextArea1.setColumns(20); jTextArea1.setEditable(false); jTextArea1.setRows(5); jTextArea1.setText("* Aplikasi ini digunakan untuk mencari solusi optimal menggunakan algoritma\nGreedy.\n\n* User harus memasukkan data berupa berat dan keuntungan yang akan\ndicari solusi optimalnya.\n\n* Aplikasi pencarian solusi optimal ini mempunyai 3 keluaran berdasarkan\nstrategi dari algoritma Greedy yang masing-masing keluaran itu berisi :\n > Data Total Bobot\n > Data Total Keuntungan\n > Data Barang yang diambil (ditampilkan nomer data)"); jScrollPane1.setViewportView(jTextArea1); jPanel1.setBackground(new java.awt.Color(255, 85, 85)); jLabel2.setText("Dibuat oleh :"); jLabel3.setText("Yohanes Tommy Gratsianto"); jLabel4.setText("065314035"); jLabel5.setText("TI - FST - USD"); jLabel6.setText("@2013"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING) .addComponent(jLabel2) .addComponent(jLabel3) .addComponent(jLabel4) .addComponent(jLabel5) .addComponent(jLabel6)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 38 .addContainerGap() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel6) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); Kembali.setText("Kembali"); Kembali.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { KembaliActionPerformed(evt); } }); jButton1.setText("Keluar"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 452, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 199, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(Kembali, javax.swing.GroupLayout.DEFAULT_SIZE, 102, Short.MAX_VALUE)))
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 39 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addGap(126, 126, 126) .addComponent(jLabel1))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 283, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addGap(28, 28, 28) .addComponent(jButton1) .addGap(28, 28, 28) .addComponent(Kembali))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); pack(); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); java.awt.Dimension dialogSize = getSize(); setLocation((screenSize.width-dialogSize.width)/2,(screenSize.heightdialogSize.height)/2); }// private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: System.exit(0); } private void KembaliActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: MenuAwal ma = new MenuAwal(); ma.setVisible(true); this.dispose(); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 40
}
});
}
new InfoProgram().setVisible(true);
// Variables declaration - do not modify private javax.swing.JButton Kembali; private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; // End of variables declaration }
Menu Utama
/* * Test.java * * Created on April 19, 2013, 10:25 PM */ package design; import design.*; import javax.swing.JOptionPane; /** * * @author Tommy */ public class MenuUtama extends javax.swing.JFrame { /** Creates new form Test */ public MenuUtama() { initComponents(); } public static double d1 = 0; public static double d2 = 0; public static double d3 = 0; public static double d4 = 0; public static double d5 = 0; public static double d6 = 0; public static double d7 = 0; public static double d8 = 0; public static double d9 = 0; public static double d10 = 0; public static double d11 = 0; public static double d12 = 0; public static double d13 = 0;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 41 public static double d14 = 0; public static double d15 = 0; /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); Data1 = new javax.swing.JCheckBox(); Data2 = new javax.swing.JCheckBox(); Data3 = new javax.swing.JCheckBox(); Data4 = new javax.swing.JCheckBox(); Data5 = new javax.swing.JCheckBox(); Data6 = new javax.swing.JCheckBox(); Data7 = new javax.swing.JCheckBox(); Data8 = new javax.swing.JCheckBox(); Data9 = new javax.swing.JCheckBox(); Data10 = new javax.swing.JCheckBox(); Data11 = new javax.swing.JCheckBox(); Data12 = new javax.swing.JCheckBox(); Data13 = new javax.swing.JCheckBox(); Data14 = new javax.swing.JCheckBox(); Data15 = new javax.swing.JCheckBox(); jLabel2 = new javax.swing.JLabel(); Berat1 = new javax.swing.JTextField(); Berat2 = new javax.swing.JTextField(); Berat3 = new javax.swing.JTextField(); Berat4 = new javax.swing.JTextField(); Berat5 = new javax.swing.JTextField(); Berat6 = new javax.swing.JTextField(); Berat7 = new javax.swing.JTextField(); Berat8 = new javax.swing.JTextField(); Berat9 = new javax.swing.JTextField(); Berat10 = new javax.swing.JTextField(); Berat11 = new javax.swing.JTextField(); Berat12 = new javax.swing.JTextField(); Berat13 = new javax.swing.JTextField(); Berat14 = new javax.swing.JTextField(); Berat15 = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); Keuntungan1 = new javax.swing.JTextField(); Keuntungan2 = new javax.swing.JTextField(); Keuntungan3 = new javax.swing.JTextField(); Keuntungan4 = new javax.swing.JTextField(); Keuntungan5 = new javax.swing.JTextField(); Keuntungan6 = new javax.swing.JTextField(); Keuntungan7 = new javax.swing.JTextField(); Keuntungan8 = new javax.swing.JTextField(); Keuntungan9 = new javax.swing.JTextField(); Keuntungan10 = new javax.swing.JTextField(); Keuntungan11 = new javax.swing.JTextField(); Keuntungan12 = new javax.swing.JTextField(); Keuntungan13 = new javax.swing.JTextField(); Keuntungan14 = new javax.swing.JTextField();
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 42 Keuntungan15 = new javax.swing.JTextField(); jPanel2 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); Kapasitas = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); TotBeratProfit = new javax.swing.JLabel(); TotKeuntunganProfit = new javax.swing.JLabel(); NoBarangProfit = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jPanel4 = new javax.swing.JPanel(); TotBeratWeight = new javax.swing.JLabel(); TotKeuntunganWeight = new javax.swing.JLabel(); NoBarangWeight = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); jPanel5 = new javax.swing.JPanel(); TotBeratDensity = new javax.swing.JLabel(); TotKeuntunganDensity = new javax.swing.JLabel(); NoBarangDensity = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); Keluar = new javax.swing.JButton(); jLabel18 = new javax.swing.JLabel(); jLabel19 = new javax.swing.JLabel(); Kembali = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setResizable(false); jPanel1.setBackground(new java.awt.Color(255, 85, 85)); jLabel1.setText("Data"); Data1.setText("1"); Data1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data1.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data1ActionPerformed(evt); } }); Data2.setText("2"); Data2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data2.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data2ActionPerformed(evt); } }); Data3.setText("3"); Data3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data3.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data3.addActionListener(new java.awt.event.ActionListener() {
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 43
});
public void actionPerformed(java.awt.event.ActionEvent evt) { Data3ActionPerformed(evt); }
Data4.setText("4"); Data4.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data4.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data4ActionPerformed(evt); } }); Data5.setText("5"); Data5.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data5.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data5ActionPerformed(evt); } }); Data6.setText("6"); Data6.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data6.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data6ActionPerformed(evt); } }); Data7.setText("7"); Data7.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data7.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data7ActionPerformed(evt); } }); Data8.setText("8"); Data8.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data8.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data8ActionPerformed(evt); } }); Data9.setText("9"); Data9.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data9.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data9ActionPerformed(evt); } });
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 44
Data10.setText("10"); Data10.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data10.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data10ActionPerformed(evt); } }); Data11.setText("11"); Data11.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data11.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data11ActionPerformed(evt); } }); Data12.setText("12"); Data12.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data12.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data12.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data12ActionPerformed(evt); } }); Data13.setText("13"); Data13.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data13.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data13.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data13ActionPerformed(evt); } }); Data14.setText("14"); Data14.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data14.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data14.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data14ActionPerformed(evt); } }); Data15.setText("15"); Data15.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); Data15.setMargin(new java.awt.Insets(0, 0, 0, 0)); Data15.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { Data15ActionPerformed(evt); } }); jLabel2.setText("Berat (Kg)"); Berat1.setText("0");
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 45 Berat1.setEnabled(false); Berat2.setText("0"); Berat2.setEnabled(false); Berat3.setText("0"); Berat3.setEnabled(false); Berat4.setText("0"); Berat4.setEnabled(false); Berat5.setText("0"); Berat5.setEnabled(false); Berat6.setText("0"); Berat6.setEnabled(false); Berat7.setText("0"); Berat7.setEnabled(false); Berat8.setText("0"); Berat8.setEnabled(false); Berat9.setText("0"); Berat9.setEnabled(false); Berat10.setText("0"); Berat10.setEnabled(false); Berat11.setText("0"); Berat11.setEnabled(false); Berat12.setText("0"); Berat12.setEnabled(false); Berat13.setText("0"); Berat13.setEnabled(false); Berat14.setText("0"); Berat14.setEnabled(false); Berat15.setText("0"); Berat15.setEnabled(false); jLabel3.setText("Keuntungan"); Keuntungan1.setText("0"); Keuntungan1.setEnabled(false); Keuntungan2.setText("0"); Keuntungan2.setEnabled(false); Keuntungan3.setText("0"); Keuntungan3.setEnabled(false); Keuntungan4.setText("0"); Keuntungan4.setEnabled(false);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 46 Keuntungan5.setText("0"); Keuntungan5.setEnabled(false); Keuntungan6.setText("0"); Keuntungan6.setEnabled(false); Keuntungan7.setText("0"); Keuntungan7.setEnabled(false); Keuntungan8.setText("0"); Keuntungan8.setEnabled(false); Keuntungan9.setText("0"); Keuntungan9.setEnabled(false); Keuntungan10.setText("0"); Keuntungan10.setEnabled(false); Keuntungan11.setText("0"); Keuntungan11.setEnabled(false); Keuntungan12.setText("0"); Keuntungan12.setEnabled(false); Keuntungan13.setText("0"); Keuntungan13.setEnabled(false); Keuntungan14.setText("0"); Keuntungan14.setEnabled(false); Keuntungan15.setText("0"); Keuntungan15.setEnabled(false); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING) .addComponent(jLabel1) .addComponent(Data15) .addComponent(Data14) .addComponent(Data13) .addComponent(Data12) .addComponent(Data11) .addComponent(Data10) .addComponent(Data9) .addComponent(Data8) .addComponent(Data7) .addComponent(Data6) .addComponent(Data5) .addComponent(Data4) .addComponent(Data3) .addComponent(Data2)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 47 .addComponent(Data1)) .addGap(20, 20, 20) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING) .addComponent(Berat15, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat1, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(jLabel2) .addComponent(Berat2, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat3, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat4, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat5, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat6, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat7, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat8, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat9, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat10, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat11, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat12, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat13, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE) .addComponent(Berat14, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE)) .addGap(24, 24, 24) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING) .addComponent(jLabel3) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAI LING, false) .addComponent(Keuntungan15, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan14, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan13, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan12, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan11, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan10, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan9, javax.swing.GroupLayout.Alignment.LEADING)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 48 .addComponent(Keuntungan8, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan7, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan6, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan5, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan4, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan3, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan2, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(Keuntungan1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 50, Short.MAX_VALUE))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel1) .addComponent(jLabel2) .addComponent(jLabel3)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data1) .addComponent(Berat1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data2) .addComponent(Berat2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 49 .addComponent(Data3) .addComponent(Berat3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data4) .addComponent(Berat4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data5) .addComponent(Berat5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data6) .addComponent(Berat6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data7) .addComponent(Berat7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 50
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data8) .addComponent(Berat8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data9) .addComponent(Berat9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data10) .addComponent(Berat10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data11) .addComponent(Berat11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data12) .addComponent(Berat12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan12, javax.swing.GroupLayout.PREFERRED_SIZE,
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 51 javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(9, 9, 9) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data13) .addComponent(Berat13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data14) .addComponent(Berat14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(Data15) .addComponent(Berat15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Keuntungan15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel2.setBackground(new java.awt.Color(255, 85, 85)); jButton1.setText("Proses"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jLabel4.setText("Jumlah Bobot Maksimum :"); TotBeratProfit.setText("0"); TotKeuntunganProfit.setText("0"); jLabel5.setText("Total Berat :");
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 52 jLabel6.setText("Total Keuntungan :"); jLabel7.setText("No Barang :"); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(TotKeuntunganProfit)) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(TotBeratProfit)) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(NoBarangProfit))) .addContainerGap(88, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel5) .addComponent(TotBeratProfit)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel6) .addComponent(TotKeuntunganProfit)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel7) .addComponent(NoBarangProfit)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); TotBeratWeight.setText("0");
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 53
TotKeuntunganWeight.setText("0"); jLabel8.setText("Total Berat :"); jLabel9.setText("Total Keuntungan :"); jLabel10.setText("No Barang :"); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(jLabel10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(NoBarangWeight)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(jLabel8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(TotBeratWeight)) .addGroup(jPanel4Layout.createSequentialGroup() .addComponent(jLabel9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(TotKeuntunganWeight))) .addContainerGap(88, Short.MAX_VALUE)) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel8) .addComponent(TotBeratWeight)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel9) .addComponent(TotKeuntunganWeight)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel10) .addComponent(NoBarangWeight))
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 54 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); TotBeratDensity.setText("0"); TotKeuntunganDensity.setText("0"); jLabel11.setText("Total Berat :"); jLabel12.setText("Total Keuntungan :"); jLabel13.setText("No Barang :"); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jLabel11) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(TotBeratDensity)) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jLabel13) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(NoBarangDensity)) .addGroup(jPanel5Layout.createSequentialGroup() .addComponent(jLabel12) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(TotKeuntunganDensity))) .addContainerGap(88, Short.MAX_VALUE)) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel11) .addComponent(TotBeratDensity)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel12) .addComponent(TotKeuntunganDensity)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 55
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel13) .addComponent(NoBarangDensity)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA DING, false) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(Kapasitas, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jButton1) .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS ELINE) .addComponent(jLabel4) .addComponent(Kapasitas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 56 .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(123, Short.MAX_VALUE)) ); Keluar.setText("Keluar"); Keluar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { KeluarActionPerformed(evt); } }); jLabel18.setFont(new java.awt.Font("Tahoma", 1, 18)); jLabel18.setText("Pencarian Solusi Optimal"); jLabel19.setFont(new java.awt.Font("Tahoma", 1, 18)); jLabel19.setText("Menggunakan Algoritma Greedy"); Kembali.setText("Kembali"); Kembali.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { KembaliActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addComponent(Keluar) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 298, Short.MAX_VALUE)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 57 .addComponent(Kembali)))) .addGroup(layout.createSequentialGroup() .addGap(105, 105, 105) .addComponent(jLabel18)) .addGroup(layout.createSequentialGroup() .addGap(70, 70, 70) .addComponent(jLabel19))) .addContainerGap())
); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel18) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel19) .addGap(6, 6, 6) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(Keluar) .addComponent(Kembali)) .addContainerGap()) ); pack(); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); java.awt.Dimension dialogSize = getSize(); setLocation((screenSize.width-dialogSize.width)/2,(screenSize.heightdialogSize.height)/2); }// private void KembaliActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: MenuAwal ma = new MenuAwal(); ma.setVisible(true); this.dispose(); } private void KeluarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: System.exit(0); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if (Kapasitas.getText().isEmpty()){ JOptionPane.showMessageDialog(null,"Anda belum memasukkan kapasistas Knapsack"); } else { GreedyByProfit();
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 58
}
}
GreedyByWeight(); GreedyByDensity();
private void Data15ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data15.isSelected()==true){ Berat15.setEnabled(true); Berat15.setText(""); Keuntungan15.setEnabled(true); Keuntungan15.setText(""); } else{ Berat15.setEnabled(false); Berat15.setText("0"); Keuntungan15.setEnabled(false); Keuntungan15.setText("0"); } } private void Data14ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data14.isSelected()==true){ Berat14.setEnabled(true); Berat14.setText(""); Keuntungan14.setEnabled(true); Keuntungan14.setText(""); } else{ Berat14.setEnabled(false); Berat14.setText("0"); Keuntungan14.setEnabled(false); Keuntungan14.setText("0"); } } private void Data13ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data13.isSelected()==true){ Berat13.setEnabled(true); Berat13.setText(""); Keuntungan13.setEnabled(true); Keuntungan13.setText(""); } else{ Berat13.setEnabled(false); Berat13.setText("0"); Keuntungan13.setEnabled(false); Keuntungan13.setText("0"); } } private void Data12ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data12.isSelected()==true){ Berat12.setEnabled(true); Berat12.setText(""); Keuntungan12.setEnabled(true); Keuntungan12.setText(""); } else{
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 59
}
}
Berat12.setEnabled(false); Berat12.setText("0"); Keuntungan12.setEnabled(false); Keuntungan12.setText("0");
private void Data11ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data11.isSelected()==true){ Berat11.setEnabled(true); Berat11.setText(""); Keuntungan11.setEnabled(true); Keuntungan11.setText(""); } else{ Berat11.setEnabled(false); Berat11.setText("0"); Keuntungan11.setEnabled(false); Keuntungan11.setText("0"); } } private void Data10ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data10.isSelected()==true){ Berat10.setEnabled(true); Berat10.setText(""); Keuntungan10.setEnabled(true); Keuntungan10.setText(""); } else{ Berat10.setEnabled(false); Berat10.setText("0"); Keuntungan10.setEnabled(false); Keuntungan10.setText("0"); } } private void Data9ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data9.isSelected()==true){ Berat9.setEnabled(true); Berat9.setText(""); Keuntungan9.setEnabled(true); Keuntungan9.setText(""); } else{ Berat9.setEnabled(false); Berat9.setText("0"); Keuntungan9.setEnabled(false); Keuntungan9.setText("0"); } } private void Data8ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data8.isSelected()==true){ Berat8.setEnabled(true); Berat8.setText(""); Keuntungan8.setEnabled(true);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 60
}
Keuntungan8.setText(""); } else{ Berat8.setEnabled(false); Berat8.setText("0"); Keuntungan8.setEnabled(false); Keuntungan8.setText("0"); }
private void Data7ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data7.isSelected()==true){ Berat7.setEnabled(true); Berat7.setText(""); Keuntungan7.setEnabled(true); Keuntungan7.setText(""); } else{ Berat7.setEnabled(false); Berat7.setText("0"); Keuntungan7.setEnabled(false); Keuntungan7.setText("0"); } } private void Data6ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data6.isSelected()==true){ Berat6.setEnabled(true); Berat6.setText(""); Keuntungan6.setEnabled(true); Keuntungan6.setText(""); } else{ Berat6.setEnabled(false); Berat6.setText("0"); Keuntungan6.setEnabled(false); Keuntungan6.setText("0"); } } private void Data5ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data5.isSelected()==true){ Berat5.setEnabled(true); Berat5.setText(""); Keuntungan5.setEnabled(true); Keuntungan5.setText(""); } else{ Berat5.setEnabled(false); Berat5.setText("0"); Keuntungan5.setEnabled(false); Keuntungan5.setText("0"); } } private void Data4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data4.isSelected()==true){ Berat4.setEnabled(true);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 61
}
Keuntungan4.setEnabled(true); Berat4.setText(""); Keuntungan4.setText(""); } else{ Berat4.setEnabled(false); Berat4.setText("0"); Keuntungan4.setEnabled(false); Keuntungan4.setText("0"); }
private void Data3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data3.isSelected()==true){ Berat3.setEnabled(true); Keuntungan3.setEnabled(true); Berat3.setText(""); Keuntungan3.setText(""); } else{ Berat3.setEnabled(false); Berat3.setText("0"); Keuntungan3.setEnabled(false); Keuntungan3.setText("0"); } } private void Data2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data2.isSelected()==true && Data1.isSelected()==true){ Berat2.setEnabled(true); Keuntungan2.setEnabled(true); Berat2.setText(""); Keuntungan2.setText(""); } else{ Berat2.setEnabled(false); Berat2.setText("0"); Keuntungan2.setEnabled(false); Keuntungan2.setText("0"); } } private void Data1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(Data1.isSelected()==true){ Berat1.setEnabled(true); Keuntungan1.setEnabled(true); Berat1.setText(""); Keuntungan1.setText(""); } else{ Berat1.setEnabled(false); Berat1.setText("0"); Keuntungan1.setEnabled(false); Keuntungan1.setText("0"); } } public void GreedyByProfit(){ int b1 = Integer.parseInt(Berat1.getText());
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 62 int b2 = Integer.parseInt(Berat2.getText()); int b3 = Integer.parseInt(Berat3.getText()); int b4 = Integer.parseInt(Berat4.getText()); int b5 = Integer.parseInt(Berat5.getText()); int b6 = Integer.parseInt(Berat6.getText()); int b7 = Integer.parseInt(Berat7.getText()); int b8 = Integer.parseInt(Berat8.getText()); int b9 = Integer.parseInt(Berat9.getText()); int b10 = Integer.parseInt(Berat10.getText()); int b11 = Integer.parseInt(Berat11.getText()); int b12 = Integer.parseInt(Berat12.getText()); int b13 = Integer.parseInt(Berat13.getText()); int b14 = Integer.parseInt(Berat14.getText()); int b15 = Integer.parseInt(Berat15.getText()); int k1 = Integer.parseInt(Keuntungan1.getText()); int k2 = Integer.parseInt(Keuntungan2.getText()); int k3 = Integer.parseInt(Keuntungan3.getText()); int k4 = Integer.parseInt(Keuntungan4.getText()); int k5 = Integer.parseInt(Keuntungan5.getText()); int k6 = Integer.parseInt(Keuntungan6.getText()); int k7 = Integer.parseInt(Keuntungan7.getText()); int k8 = Integer.parseInt(Keuntungan8.getText()); int k9 = Integer.parseInt(Keuntungan9.getText()); int k10 = Integer.parseInt(Keuntungan10.getText()); int k11 = Integer.parseInt(Keuntungan11.getText()); int k12 = Integer.parseInt(Keuntungan12.getText()); int k13 = Integer.parseInt(Keuntungan13.getText()); int k14 = Integer.parseInt(Keuntungan14.getText()); int k15 = Integer.parseInt(Keuntungan15.getText()); int W = Integer.parseInt(Kapasitas.getText()); String dataN[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"}; int dataB[] ={b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15}; int dataK[] ={k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15}; BubbleSort.BubbleSortProfit(dataN, dataB, dataK); int knapsack = 0; int temp = 0; int temp1 = 0; int profit = 0; String nomerBarang = ""; for (int i = 0; i < dataB.length; i++) { if (knapsack+dataB[i] <= W) { temp = dataB[i]; temp1 = dataK[i]; knapsack=knapsack+temp; profit = profit+temp1; if(dataB[i] != 0){ nomerBarang = nomerBarang+" "+dataN[i]+",";} } else{ temp = 0; temp1 = 0; } } if ( knapsack == 0){ }else{ TotBeratProfit.setText(""+knapsack); TotKeuntunganProfit.setText(""+profit);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 63
}
}
NoBarangProfit.setText(nomerBarang);
private void GreedyByWeight(){ int b1 = Integer.parseInt(Berat1.getText()); int b2 = Integer.parseInt(Berat2.getText()); int b3 = Integer.parseInt(Berat3.getText()); int b4 = Integer.parseInt(Berat4.getText()); int b5 = Integer.parseInt(Berat5.getText()); int b6 = Integer.parseInt(Berat6.getText()); int b7 = Integer.parseInt(Berat7.getText()); int b8 = Integer.parseInt(Berat8.getText()); int b9 = Integer.parseInt(Berat9.getText()); int b10 = Integer.parseInt(Berat10.getText()); int b11 = Integer.parseInt(Berat11.getText()); int b12 = Integer.parseInt(Berat12.getText()); int b13 = Integer.parseInt(Berat13.getText()); int b14 = Integer.parseInt(Berat14.getText()); int b15 = Integer.parseInt(Berat15.getText()); int k1 = Integer.parseInt(Keuntungan1.getText()); int k2 = Integer.parseInt(Keuntungan2.getText()); int k3 = Integer.parseInt(Keuntungan3.getText()); int k4 = Integer.parseInt(Keuntungan4.getText()); int k5 = Integer.parseInt(Keuntungan5.getText()); int k6 = Integer.parseInt(Keuntungan6.getText()); int k7 = Integer.parseInt(Keuntungan7.getText()); int k8 = Integer.parseInt(Keuntungan8.getText()); int k9 = Integer.parseInt(Keuntungan9.getText()); int k10 = Integer.parseInt(Keuntungan10.getText()); int k11 = Integer.parseInt(Keuntungan11.getText()); int k12 = Integer.parseInt(Keuntungan12.getText()); int k13 = Integer.parseInt(Keuntungan13.getText()); int k14 = Integer.parseInt(Keuntungan14.getText()); int k15 = Integer.parseInt(Keuntungan15.getText()); int W = Integer.parseInt(Kapasitas.getText()); String dataN[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"}; int dataB[] ={b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15}; int dataK[] ={k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15}; BubbleSort.BubbleSortWeight(dataN, dataB, dataK); int knapsack=0; int temp = 0; int temp1 = 0; int profit = 0; String nomerBarang = ""; for (int i = 0; i < dataB.length; i++) { if (knapsack+dataB[i] <= W) { temp = dataB[i]; temp1 = dataK[i]; knapsack=knapsack+temp; profit = profit+temp1; if(dataB[i] != 0){ nomerBarang = nomerBarang+" "+dataN[i]+",";} } else{ temp = 0; temp1 = 0;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 64
}
} } TotBeratWeight.setText(""+knapsack); TotKeuntunganWeight.setText(""+profit); NoBarangWeight.setText(nomerBarang);
private void GreedyByDensity(){ int b1 = Integer.parseInt(Berat1.getText()); int b2 = Integer.parseInt(Berat2.getText()); int b3 = Integer.parseInt(Berat3.getText()); int b4 = Integer.parseInt(Berat4.getText()); int b5 = Integer.parseInt(Berat5.getText()); int b6 = Integer.parseInt(Berat6.getText()); int b7 = Integer.parseInt(Berat7.getText()); int b8 = Integer.parseInt(Berat8.getText()); int b9 = Integer.parseInt(Berat9.getText()); int b10 = Integer.parseInt(Berat10.getText()); int b11 = Integer.parseInt(Berat11.getText()); int b12 = Integer.parseInt(Berat12.getText()); int b13 = Integer.parseInt(Berat13.getText()); int b14 = Integer.parseInt(Berat14.getText()); int b15 = Integer.parseInt(Berat15.getText()); int k1 = Integer.parseInt(Keuntungan1.getText()); int k2 = Integer.parseInt(Keuntungan2.getText()); int k3 = Integer.parseInt(Keuntungan3.getText()); int k4 = Integer.parseInt(Keuntungan4.getText()); int k5 = Integer.parseInt(Keuntungan5.getText()); int k6 = Integer.parseInt(Keuntungan6.getText()); int k7 = Integer.parseInt(Keuntungan7.getText()); int k8 = Integer.parseInt(Keuntungan8.getText()); int k9 = Integer.parseInt(Keuntungan9.getText()); int k10 = Integer.parseInt(Keuntungan10.getText()); int k11 = Integer.parseInt(Keuntungan11.getText()); int k12 = Integer.parseInt(Keuntungan12.getText()); int k13 = Integer.parseInt(Keuntungan13.getText()); int k14 = Integer.parseInt(Keuntungan14.getText()); int k15 = Integer.parseInt(Keuntungan15.getText()); if (b1 != 0){ d1 = k1/b1; }else { d1=0;} if (b2 != 0){ d2 = k2/b2; }else { d2=0;} if (b3 != 0){ d3 = k3/b3; }else { d3=0;} if (b4 != 0){ d4 = k4/b4; }else { d4=0;} if (b5 != 0){ d5 = k5/b5; }else { d5=0;}
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 65 if (b6 != 0){ d6 = k6/b6; }else { d6=0;} if (b7 != 0){ d7 = k7/b7; }else { d7=0;} if (b8 != 0){ d8 = k8/b8; }else { d8=0;} if (b9 != 0){ d9 = k9/b9; }else { d9=0;} if (b10 != 0){ d10 = k10/b10; }else { d10=0;} if (b11 != 0){ d11 = k11/b11; }else { d11=0;} if (b12 != 0){ d12 = k12/b12; }else { d12=0;} if (b13 != 0){ d13 = k13/b13; }else { d13=0;} if (b14 != 0){ d14 = k14/b14; }else { d14=0;} if (b15 != 0){ d15 = k15/b15; }else { d15=0;} int W = Integer.parseInt(Kapasitas.getText()); String dataN[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"}; int dataB[] ={b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15}; int dataK[] ={k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15}; double dataD[] = {d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15}; BubbleSort.BubbleSortDensity(dataN, dataB, dataK, dataD); int knapsack=0; int temp = 0; int temp1 = 0; double temp2 = 0; int profit = 0; double density = 0; String nomerBarang = ""; for (int i = 0; i < dataB.length; i++) { if (knapsack+dataB[i] <= W) { temp = dataB[i];
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 66 temp1 = dataK[i]; temp2 = dataD[i]; knapsack=knapsack+temp; profit = profit+temp1; density = density+temp2; if(dataB[i] != 0){ nomerBarang = nomerBarang+" "+dataN[i]+",";} } else{ temp = 0; temp1 = 0; temp2 = 0; }
}
} TotBeratDensity.setText(""+knapsack); TotKeuntunganDensity.setText(""+profit); NoBarangDensity.setText(nomerBarang);
/** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MenuUtama().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JTextField Berat1; private javax.swing.JTextField Berat10; private javax.swing.JTextField Berat11; private javax.swing.JTextField Berat12; private javax.swing.JTextField Berat13; private javax.swing.JTextField Berat14; private javax.swing.JTextField Berat15; private javax.swing.JTextField Berat2; private javax.swing.JTextField Berat3; private javax.swing.JTextField Berat4; private javax.swing.JTextField Berat5; private javax.swing.JTextField Berat6; private javax.swing.JTextField Berat7; private javax.swing.JTextField Berat8; private javax.swing.JTextField Berat9; private javax.swing.JCheckBox Data1; private javax.swing.JCheckBox Data10; private javax.swing.JCheckBox Data11; private javax.swing.JCheckBox Data12; private javax.swing.JCheckBox Data13; private javax.swing.JCheckBox Data14; private javax.swing.JCheckBox Data15; private javax.swing.JCheckBox Data2; private javax.swing.JCheckBox Data3; private javax.swing.JCheckBox Data4; private javax.swing.JCheckBox Data5; private javax.swing.JCheckBox Data6; private javax.swing.JCheckBox Data7;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 67 private javax.swing.JCheckBox Data8; private javax.swing.JCheckBox Data9; private javax.swing.JTextField Kapasitas; private javax.swing.JButton Keluar; private javax.swing.JButton Kembali; private javax.swing.JTextField Keuntungan1; private javax.swing.JTextField Keuntungan10; private javax.swing.JTextField Keuntungan11; private javax.swing.JTextField Keuntungan12; private javax.swing.JTextField Keuntungan13; private javax.swing.JTextField Keuntungan14; private javax.swing.JTextField Keuntungan15; private javax.swing.JTextField Keuntungan2; private javax.swing.JTextField Keuntungan3; private javax.swing.JTextField Keuntungan4; private javax.swing.JTextField Keuntungan5; private javax.swing.JTextField Keuntungan6; private javax.swing.JTextField Keuntungan7; private javax.swing.JTextField Keuntungan8; private javax.swing.JTextField Keuntungan9; private javax.swing.JLabel NoBarangDensity; private javax.swing.JLabel NoBarangProfit; private javax.swing.JLabel NoBarangWeight; private javax.swing.JLabel TotBeratDensity; private javax.swing.JLabel TotBeratProfit; private javax.swing.JLabel TotBeratWeight; private javax.swing.JLabel TotKeuntunganDensity; private javax.swing.JLabel TotKeuntunganProfit; private javax.swing.JLabel TotKeuntunganWeight; private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; // End of variables declaration }
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 68 Bubble Sort
/* * BubbleSort.java * * Created on April 20, 2013, 11:58 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package design; /** * * @author Tommy */ public class BubbleSort { public static void BubbleSortWeight(String dataNo[], int dataWeight[], int dataProfit[]){ String temp; int temp1; int temp2; for(int i=0; idataWeight[j+1]){ temp=dataNo[j]; dataNo[j]=dataNo[j+1]; dataNo[j+1]=temp; temp1=dataWeight[j]; dataWeight[j]=dataWeight[j+1]; dataWeight[j+1]=temp1; temp2=dataProfit[j]; dataProfit[j]=dataProfit[j+1]; dataProfit[j+1]=temp2; } } } } public static void BubbleSortProfit(String dataNo[], int dataWeight[], int dataProfit[]){ String temp; int temp1; int temp2; for(int i=0; i
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 69 public static void BubbleSortDensity(String dataNo[], int dataWeight[], int dataProfit[], double dataDensity[]){ String temp; int temp1; int temp2; double temp3; for(int i=0; i