Anda di halaman 1dari 84

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. Tanggal : .... Mei 2013

iii
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 Tanda Tangan

Ketua : 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 dan saran setelah
mengimplementasikan program.
DAFTAR PUSTAKA
LAMPIRAN
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 objek-
objek 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 objek-
objek 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 ke-
untungan 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 8

Properti Objek Greedy by 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.length; i++){
for(int j=0; j<data.length-1; j++){
if(data[j]>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 objek-
objek, 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.height-
dialogSize.height)/2);
}// </editor-fold>

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.height-
dialogSize.height)/2);
}// </editor-fold>

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.height-
dialogSize.height)/2);
}// </editor-fold>

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; i<dataWeight.length-1; i++){
for(int j=0; j<dataWeight.length-1; j++){
if(dataWeight[j]>dataWeight[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<dataProfit.length-1; i++){
for(int j=0; j<dataProfit.length-1; j++){
if(dataProfit[j]<dataProfit[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;
}
}
}
}
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<dataWeight.length-1; i++){
for(int j=0; j<dataWeight.length-1; j++){
if(dataDensity[j]<dataDensity[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;
temp3 = dataDensity[j];
dataDensity[j] = dataDensity[j+1];
dataDensity[j+1] = temp3;
}
}
}
}
}

Anda mungkin juga menyukai