Sandy Kosasi - Mulawarman Vol8 No2 2013 2
Sandy Kosasi - Mulawarman Vol8 No2 2013 2
Sandy Kosasi - Mulawarman Vol8 No2 2013 2
net/publication/322165659
CITATIONS READS
0 78
1 author:
Sandy Kosasi
Sekolah tinggi Manajemen Informatika dan Komputer
118 PUBLICATIONS 23 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
Increasing Online Business Marketing to Expand Market Share Through IT Governance View project
Improving Organizational Agility of MSME through Digital Marketing Strategy View project
All content following this page was uploaded by Sandy Kosasi on 01 January 2018.
ABSTRACT
Knapsack problem merupakan masalah optimasi kombinasi dengan tujuan memaksimalkan total nilai
dari barang-barang yang dimasukkan ke dalam knapsack atau suatu wadah tanpa melewati kapasitasnya.
Penelitian menekankan kepada bounded knapsack problem yang merupakan pengembangan dari 0-1 knapsack
problem menggunakan algoritma dynamic programming. Penelitian berbentuk studi kasus dengan metode quasi
eksperimental. Pengumpulan data menggunakan wawancara dan observasi. Untuk analisis dan perancangannya
menggunakan metode OOAD (Object-Oriented Analysis and Design) dan pengujiannya menggunakan model V.
Aplikasi ini dikembangkan dengan bahasa pemrograman Java dengan kemampuan menentukan nilai prioritas
tertinggi berdasarkan daftar barang dan harga yang optimal sesuai dengan anggaran belanja. Aplikasi ini mudah
digunakan oleh pembeli, mulai dari memasukan kombinasi dari sejumlah daftar barang belanjaan yang
dibutuhkan dengan batasan dari jumlah anggaran yang tersedia.
Kata Kunci: knapsack problem, 0-1 knapsack probelm, dynamic programming, object-oriented analysis
and design, V Model
juga semakin lama. Pengujiannya menggunakan sehingga jika ingin memasukkan barang tersebut,
cek solusi knapsack problem, lama waktu proses, maka satu kesatuan barang harus masuk ke dalam
analisis kompleksitas ruang dan waktu dan analisis wadah. Dalam masalah ini, anggaran belanja yang
efisiensi dengan algoritma rekursif. dibawa oleh sang pembeli sejumlah U, dimana
terdapat n buah barang i berbeda yang dapat dibeli
TINJAUAN PUSTAKA dengan anggaran tersebut. Barang i memiliki harga
Knapsack Problem hi dan nilai prioritas pi. Jika xi adalah jumlah
Knapsack problem merupakan masalah barang i yang akan dibeli dengan anggaran yang
optimasi kombinasi dengan tujuan untuk tersedia. Tiap i memiliki batas atas bi dan batas
memaksimalkan total nilai dari barang-barang yang bawah 0 (nol). Barang i dapat berulang kali
dimasukkan ke dalam knapsack atau suatu wadah dimasukkan dalam daftar beli hanya jika kedua
tanpa melewati kapasitas wadah tersebut. Knapsack kondisi berikut dipenuhi, yaitu: Jumlah barang
problem atau rucksack problem adalah masalah tersebut tidak melebihi jumlah barang yang tersedia
optimasi kombinatorial. Namanya berasal dari dan Barang yang dimasukkan dalam daftar beli
masalah maksimasi untuk pilihan paling tepat dari tidak melanggar batasan kapasitas. Secara formal,
barang-barang yang akan dibawa dalam sebuah tas bounded knapsack problem terdiri dari sekelompok
pada sebuah perjalanan [4]. Sejumlah barang yang barang {1,...,i} dengan jumlah harga barang yang
tersedia ini, masing-masing memiliki berat dan tidak boleh melebihi jumlah uang U, dapat
nilai, yang menentukan jumlah barang yang dapat dirumuskan menjadi berikut [4]:
dibawa sehingga total berat tidak melebihi kapasitas
tas dan dengan total nilai yang sebesar mungkin. Maksimalkan
Knapsack problem dapat didefinisikan sebagai
sebagai sebuah perumpamaan dari knapsack (2.3)
problem dengan set item N, terdiri dari n item j
dengan keuntungan pj dan berat wj, dan nilai Batasan
kapasitas c. Kemudian tujuannya adalah untuk
memilih sebuah bagian dari N dimana total (2.4)
keuntungan dari item yang dipilih dimaksimalkan dengan
dan total berat tidak melebihi c. Selanjutnya 0-1 i = 1, . . . , n
knapsack problem adalah masalah dalam memilih pi, hi, bi, U, dan adalah bilangan bulat
sebuah bagian dari n buah barang i yang memiliki positif
jumlah keuntungan maksimal dengan jumlah berat Keterangan :
barang tidak melebihi kapasitas c. Permasalahan ini U = jumlah uang
dapat dirumuskan sebagai berikut [4]: i = nama barang
n = jumlah barang
Maksimalkan hi = harga barang i
pi = nilai prioritas barang i
(2.1) xi = jumlah barang i yang akan dibeli
bi = nilai batas atas barang i
Batasan
(2.2) Dynamic Programming
xj ∈ {0,1} j = 1, . . . , n Dynamic programming ialah suatu
pj, wj, xj, dan c merupakan bilangan bulat metode membuat tahapan keputusan yang saling
positif berhubungan untuk mencari solusi dengan
kombinasi yang optimal [2]. Kata programming
Keterangan : pada istilah dynamic programming tidak memiliki
n = jumlah barang hubungan dengan menulis kode apa pun atau
j = nama barang program komputer, melainkan sebuah sinonim
pj = profit atau keuntungan barang j untuk optimasi dan memiliki arti sebagai
xj = jumlah barang j yang dimasukkan ke dalam perencanaan atau sebuah metode tabulasi. Dynamic
knapsack programming adalah strategi untuk membangun
wj = berat barang j masalah optimasi bertingkat, yaitu masalah yang
c = kapasitas maksimal knapsack dapat digambarkan dalam bentuk serangkaian
tahapan (stage) yang saling mempengaruhi [6].
Penggunaan bounded knapsack problem Dynamic programming merupakan metode untuk
dimana jumlah barang untuk tiap barang yang menyelesaikan secara efisien masalah pencarian
tersedia terbatas jumlahnya. Barang-barang yang dalam jangkauan luas dan optimasi yang memiliki
dimasukkan adalah barang yang berbentuk satuan karakteristik overlapping subproblem dan optimal
dan tidak bisa dipecah menjadi beberapa bagian substructure [2].
Jurnal Informatika Mulawarman Vol. 8 No. 2 Edisi Juli 2013 37
Fungsi utama dari problem solving ini dimana batas atas (bi) atau jumlah untuk tiap
adalah sebagai alat untuk menyelesaikan knapsack jenis barang adalah 1. Tiap barang memiliki
problem. Problem solving ini dirancang agar nilai prioritas (pi) 2,1,2,3,6 dan harga (hi)
pengguna dapat lebih mudah memasukkan barang- 3,2,1,2,8 (dalam ratusan). Inti knapsack
barang yang diinginkan pembeli karena data barang problem tersebut ialah menentukan optimasi
yang dapat dibeli telah dimasukkan ke dalam basis kombinasi barang dan jumlah satuannya yang
data yang terhubung ke problem solving dan memiliki jumlah nilai prioritas tertinggi untuk
tersedia fungsi untuk mengubah maupun dibeli dengan jumlah harga barang tidak
menghapus barang dari daftar barang. Problem melewati jumlah uang yang dimiliki pembeli.
solving ini juga menggunakan dynamic Total prioritas optimal (z) akan dicari
programming untuk membantu menyelesaikan menggunakan dynamic programming.
masalah bounded knapsack. Metode dynamic Banyaknya tahap pencarian berdasarkan
programming yang digunakan memiliki beberapa jumlah harga maksimal dan jumlah satuan
tahap, antara lain: barang. Jumlah harga maksimal (h) pada
a. Menentukan struktur dari masalah knapsack problem adalah jumlah uang
Suatu masalah akan dibagi menjadi beberapa maksimal dibagi 100, karena satuan harga
tahap (stage). Tiap tahap terdiri dari sejumlah terkecil barang dalam ratusan. Jumlah satuan
status (state) yang berhubungan dengan tahap barang (k) adalah jumlah dari barang (i) dikali
tersebut. Secara umum, status merupakan batas atas barang (bi). Jadi, nilai h adalah 8
bermacam kemungkinan solusi pada tahap dan jumlah satuan barang (k) adalah 5.
tersebut. Misalnya terdapat suatu knapsack Perhitungan dimulai dengan mencari nilai
problem dimana jumlah uang maksimal (U) prioritas satuan barang ke-1 lalu dilanjutkan
adalah 800 dan terdapat 5 jenis barang (n), mencari nilai prioritas satuan barang ke-2 dan
Jurnal Informatika Mulawarman Vol. 8 No. 2 Edisi Juli 2013 39
seterusnya sampai satuan barang ke-k. Hasil akan dimasukkan ke tabel pengingat dengan
perhitungan total prioritas pada tiap tahap ukuran (k,h) (tabel1).
Jika jumlah harga barang maksimal atau h = 0, Contohnya pada tahap z (1,0) dapat dilihat
maka nilai optimal pada tahap z (k,0) = 0. pada gambar berikut (tabel 3).
Jika harga barang melebihi jumlah harga tahap z (1,1), dimana harga barang ke-1
maksimal, maka barang tersebut tidak dapat adalah 3 dan jumlah harga maksimal adalah 1.
dibeli dan nilai optimal pada tahap tersebut Nilai optimal pada tahap z (1, 1) adalah nilai
bernilai z (k-1,h) yang berarti mengambil nilai optimal dari tahap sebelumnya yaitu nilai
optimal dari tahap sebelumnya yang tidak optimal tahap z (0,1) (tabel 4).
memasukkan barang tersebut. Contohnya pada
Jika jumlah harga barang maksimal lebih dari z (k,h) = max {z (k-1, h), z (k-1, h – hk)
atau sama dengan harga barang k, maka akan + pk}
dilakukan perhitungan untuk mencari solusi z (1,3) = max { z (0, 3), z (0, 3-3 ) + 2}
optimal = max { z(0, 3), z (0, 0) + 2}
z (k,h) = max {z (k-1, h), z (k-1, h – hk) + = max {0, 0 + 2}
pk}. Contohnya pada tahap z (1,3), = max {0, 2}
perhitungannya sebagai berikut (tabel 5): =2
Contoh lainnya pada tahap z(3,4), dynamic Perhitungannya sebagai berikut (tabel 6):
programming akan membandingkan nilai z (3,4) = max {z (k-1, h), z (k-1, h – hk)
optimal antara tidak memasukkan barang + pk}
tersebut (nilai optimal pada tahap z(2,4)) = max {z (3-1, 4), z (3-1, 4-1) +
dengan memasukkan barang tersebut (nilai 2}
optimal pada tahap z(2,3) + 2) dan mengambil = max {z (2, 4), z (2, 3) + 2}
keputusan berdasarkan nilai optimal tertinggi. = max {2, 4}
Jadi, keputusan terbaik pada tahap z(3,4) =4
adalah memasukkan barang tersebut.
Pencarian nilai solusi optimal akan terus ilustrasi tabel pengingat dynamic
dilakukan hingga tahap z(5,8). Berikut programming tahap z(5,8).
nilai prioritas optimal barang ke-4 sebesar 8 pada langkah perhitungan tersebut diperoleh daftar
z(4,8) dibandingkan dengan nilai 5 pada z(3,8). barang solusi yang terdiri dari 1 barang ke-4, 1
Karena nilainya berbeda, maka barang ke-4 barang ke-3, 1 barang ke-2 dan 1 barang ke-1.
dimasukkan ke daftar barang solusi. Setelah itu Aplikasi ini dikembangkan dengan bahasa
jumlah harga maksimal 8 dikurangkan dengan Java dan memiliki kemampuan dalam menentukan
harga barang ke-4. Untuk perhitungan barang ke-3 nilai prioritas tertinggi berdasarkan daftar barang
bandingkan nilai 5 pada z(3,6) dengan nilai yang dan harga yang optimal sesuai dengan anggaran
berada pada sebaris diatasnya yaitu 3 pada z(2,6). belanja. Aplikasi ini memiliki sejumlah form
Karena nilainya berbeda, maka barang ke-3 antarmuka yang mudah untuk dapat digunakan oleh
dimasukkan ke daftar barang solusi. Setelah itu pembeli, mulai dari memasukan kombinasi dari
jumlah harga maksimal 6 dikurangkan dengan sejumlah daftar barang belanjaan yang dibutuhkan
harga barang ke-3. Untuk perhitungan barang ke-2 dengan batasan dari jumlah anggaran yang tersedia.
bandingkan nilai 3 pada z(2,5) dengan nilai 2 pada Aplikasi ini dibangun dengan 2 form utama yaitu
z(1,5). Karena nilainya berbeda, maka barang ke-2 form barang dan form knapsack problem CV. Mulia
dimasukkan dan jumlah harga maksimal 5 Abadi (gambar 2). Sebagian dari proses aplikasi
dikurangkan dengan harga barang ke-2. Selanjutnya bounded knapsack problem ini akan ditampilkan
bandingkan nilai 2 pada z(1,3) dengan nilai 0 pada dalam beberapa gambar berikut ini (gambar 3-13).
z(0,3). Karena nilainya berbeda, maka barang ke –1
dimasukkan ke daftar barang solusi. Dari langkah-
Gambar 6. Form Edit Atribut Barang Gambar 10. Penambahan Data Barang
KESIMPULAN
Hasil penelitian memperlihatkan bahwa
penerapan dynamic programming untuk
menyelesaikan masalah knapsack problem
khususnya jenis bounded knapsack problem dapat
memberikan nilai yang positif. Melalui dynamic
programming, aplikasi yang dihasilkan dapat
memberikan nilai optimasi dari daftar barang yang
dapat dibeli dengan ketersediaan anggaran belanja
yang ada. Aplikasi ini menyediakan fasilitas untuk
menyimpan data barang dan data daftar belanja
sementara dari pembeli. Pengguna dapat
memasukkan knapsack problem baru dan mengecek
keputusan optimal berupa daftar barang yang
disarankan sesuai solusi kombinasi barang yang
memiliki jumlah nilai prioritas tertinggi dengan
sejumlah batasan dari barang yang dijual.
.
DAFTAR PUSTAKA
[1] Bennett, McRobb, dan Farmer. Object
Oriented System Analysis And Design
Using UML, Edisi Kedua, McGraw Hill,
Berkshire, 2006.
[2] Bhowmik, Biswajit. Dynamic Programming –
Its Principles, Applications, Strengths, and
Limitations, International Journal of
Engineering Science and Technology,
Volume 2 (9), 4822-4826, India, 2010.