Sandy Kosasi - Mulawarman Vol8 No2 2013 2

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/322165659

Penyelesaian Bounded Knapsack Problem Menggunakan Dynamic


Programming

Article · July 2013

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.

The user has requested enhancement of the downloaded file.


Jurnal Informatika Mulawarman Vol. 8 No. 2 Edisi Juli 2013 35

PENYELESAIAN BOUNDED KNAPSACK PROBLEM


MENGGUNAKAN DYNAMIC PROGRAMMING
(Studi Kasus: CV. Mulia Abadi)
Sandi Kosasi
Program Studi Teknik Informatika
Sekolah Tinggi Manajemen Informatika dan Komputer Pontianak
Jln. Merdeka No. 372 Pontianak, Kalimantan Barat
Email: [email protected]

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

PENDAHULUAN sekumpulan langkah (step) atau tahapan (stage)


CV. Mulia Abadi merupakan sebuah sedemikian sehingga solusi dari persoalan dapat
perusahaan yang menjual berbagai macam makanan dipandang dari serangkaian keputusan yang saling
dan barang kelontong untuk kawasan masyarakat di berkaitan [6]. Dynamic programming akan bekerja
kota Pontianak dan sekitarnya. Dari setiap kali dengan memecahkan suatu masalah menjadi
transaksi jual beli, kecenderungan yang terjadi beberapa tahapan atau sub masalah dan
adalah para pembeli mengalami kesulitan menyelesaikannya satu persatu, mulai dari yang
menentukan kombinasi yang optimal mengenai paling sederhana dan menggunakan jawaban dari
banyaknya barang yang akan dibeli namun dengan tahapan tersebut untuk menyelesaikan tahapan
anggaran belanja yang terbatas. Selama ini proses berikutnya yang lebih rumit. Jenis dari knapsack
penentuan kombinasi optimal tersebut dilakukan problem yang digunakan adalah Bounded Knapsack
tanpa menggunakan komputasi dan dengan Problem.
terbatasnya waktu dan tenaga sehingga hanya Bounded knapsack problem ini
menghasilkan keputusan yang mendekati nilai merupakan pengembangan dari 0-1 knapsack
optimal. Kenyataan ini jelas dapat merugikan kedua problem, dimana jumlah barang untuk tiap jenis
belah pihak, dari sisi pembeli dan penjual. item barang yang akan dipilih terbatas jumlahnya,
Persoalan dalam menentukan kombinasi barang bukan merupakan bilangan negatif, dan tiap barang
yang akan dipilih yang dapat memberikan hasil yang akan dipilih haruslah tetap dalam keadaan
yang maksimal dengan tidak melebihi anggaran utuh, bukan merupakan fraksi atau sebagian dari
belanja adalah merupakan inti dari knapsack kesatuan barang tersebut [6]. Aplikasi ini dapat
problem. Dimana tiap barang memiliki nilai harga, membantu pembeli, dimana mereka dapat lebih
nilai prioritas, dan jumlah satuan untuk tiap barang mudah dan efektif dalam menemukan solusi untuk
yang tersedia. menentukan setiap jenis dan item barang yang
Penyelesaian knapsack problem dapat dibeli. Melalui kombinasi yang optimal dari
menggunakan dynamic programming dimana setiap jenis dan item barang dengan jumlah
memiliki tahapan keputusan yang saling satuannya yang memiliki jumlah nilai prioritas
berhubungan untuk mencari solusi dengan tertinggi, dan dengan jumlah harga barang tidak
kombinasi yang optimal [4]. Dynamic melewati jumlah anggaran belanja yang tersedia.
programming merupakan metode pemecahan Semakin besar data yang digunakan, maka waktu
masalah dengan cara menguraikan solusi menjadi yang dibutuhkan algoritma untuk menyelesaikan
Jurnal Informatika Mulawarman Vol. 8 No. 2 Edisi Juli 2013 36

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

Penyelesaian masalah dalam dynamic Prinsip optimalitas akan diterapkan


prorgramming dilakukan secara rekursif yang dalam memakai jumlah harga barang yang tersisa,
berarti setiap kali mengambil keputusan harus dengan mengacu pada nilai optimum prioritas dari
memperhatikan keadaan yang dihasilkan oleh tahap sebelumnya. Jika dengan memasukkan
keputusan optimal dari tahap sebelumnya dan barang tersebut, jumlah nilai prioritas lebih besar
merupakan landasan bagi keputusan optimal pada daripada jumlah nilai prioritas tanpa memasukkan
tahap berikutnya [2]. Prosedur mencari nilai dari barang k, maka keputusan optimalnya adalah
penyelesaian optimal dalam bentuk penyelesaian memasukkan barang tersebut ke dalam solusi daftar
optimal dari submasalah secara rekursif. Pada beli. Jika yang terjadi adalah kebalikannya, maka
rekursif akan dilakukan pemanggilan prosedur atau barang k tidak akan dimasukkan ke dalam solusi
fungsi yang sama. Dalam tiap rekursif, sebuah daftar beli. Dari beberapa kemungkinan solusi yang
barang akan dimasukkan atau dikeluarkan dari ada, hanya akan dipilih solusi yang memiliki
daftar barang yang akan dibeli. Bounded knapsack prioritas yang lebih tinggi. Jika jumlah nilai
problem akan diubah ke bentuk 0-1 knapsack prioritas pada suatu tahap sama dengan jumlah nilai
problem yang setara berdasarkan nilai batas atas prioritas tahap sebelumnya, maka akan
untuk setiap barang i. Rumus rekursif untuk 0-1 diprioritaskan untuk menggunakan keputusan
knapsack problem [5]: optimal pada tahap sebelumnya. Algoritma
Dynamic programming yang dibangun
menggunakan solusi rekursif berikut [6]:

Keterangan : def A(w, v, i,j):


z = nilai optimal dari fungsi tujuan if i == 0 or j == 0: return 0
h = jumlah harga barang maksimal yang
if w[i-1] > j: return A(w, v,
diperbolehkan
k = barang ke-k i-1, j)
hk = harga barang k
if w[i-1] <= j: return
pk = nilai prioritas barang k
max(A(w,v, i-1, j), v[i-1] +
Rumus 2.5 dapat dijelaskan sebagai
A(w,v, i-1, j - w[i-1]))
berikut, z(k,h) menunjukan nilai prioritas tertinggi
yang didapatkan jika anggaran yang tersedia adalah
U dan terdapat sejumlah barang dari 1,...., n. Tujuan
dari perhitungan tersebut ialah menemukan sebuah
bagian dari n barang yang memiliki jumlah prioritas METODE PENELITIAN
maksimal atau tertinggi tanpa melebihi nilai U. Penelitian ini berbentuk studi kasus
Pada tiap tahap (misal: k) akan dilakukan proses dengan metode quasi eksperimental. Metode
memasukkan barang ke dalam solusi daftar beli pengumpulan data menggunakan wawancara dan
yang disesuaikan dengan status (misal: h) jumlah observasi. Wawancara dengan sejumlah responden
harga barang yang diperbolehkan atau tersisa terpilih dengan menggunakan teknik purposive
setelah memasukkan barang pada tahap sampling [3]. Respondenya berasal dari pimpinan,
sebelumnya, sampai batas anggaran uang manajemen dan staf/karyawan. Metode analisis dan
maksimumnya. Aturan pertama k = 0, maka hasil perancangan menggunakan metode OOAD (Object-
perhitungan akan menghasilkan nilai 0, karena Oriented Analysis and Design). Untuk tahap
berarti tidak ada barang yang dapat dimasukkan ke analisis, metode ini memeriksa requirement yang
dalam solusi daftar beli. Pada h = 0, hasil harus dipenuhi sebuah sistem dari sudut pandang
perhitungan juga akan menghasilkan nilai 0, karena kelas-kelas dan objek-objek yang ditemui dalam
berarti jumlah harga barang yang diperbolehkan ruang lingkup perusahaan. Sementara tahap desain,
adalah 0. Pada aturan kedua, Jika harga barang k metode ini untuk mengarahkan arsitektur software
melebihi jumlah harga barang yang diperbolehkan, yang didasarkan pada manipulasi objek-objek
maka barang k tidak akan dimasukkan ke dalam sistem atau subsistem [1]. Menggunakan pengujian
solusi daftar beli. Sedangkan pada aturan ketiga jika model V dalam menjelaskan hubungan antara setiap
harga barang k kurang dari atau sama dengan langkah dengan tingkat pemenuhan kebutuhan [7].
jumlah harga barang yang diperbolehkan, maka Semakin menuju ke akhir proses, kebutuhan
barang k memiliki dua kemungkinan, dimasukkan semakin dipenuhi. Kebutuhan diwakili dengan
atau tidak dimasukkan ke dalam solusi daftar beli. proses pengujian yang dilakukan setelah
Ketika memasukkan suatu barang pada tahap k, pengkodean dilakukan.
maka jumlah harga barang yang dapat dibeli
sekarang adalah h-hk [5].
Jurnal Informatika Mulawarman Vol. 8 No. 2 Edisi Juli 2013 38

HASIL DAN PEMBAHASAN belanja yang tersedia dan daftar belanja


Hasil penelitian ini memperlihatkan sementara yang ingin dibeli oleh pembeli.
sebuah aplikasi yang dibangun dengan menerapkan Data daftar belanja sementara yang telah
dynamic programming untuk menyelesaikan dimasukkan akan ditampilkan oleh tabel data
knapsack problem pada CV. Mulia Abadi. Model temp. Setelah proses input data temp selesai,
penyelesaian terdiri dari tiga frame yaitu: pengguna dapat mencari solusi penyelesaian
a. Frame utama merupakan form yang pertama masalah. Karena jenis masalah knapsack
kali dimunculkan saat menjalankan problem problem pada adalah bounded knapsack
solving ini. Pada form utama berisi pilihan problem, maka data temp tersebut harus
menu untuk membuka form barang dan form diubah terlebih dahulu menjadi 0-1 knapsack
knapsack problem. problem oleh Bounded Knapsack kemudian
b. Frame barang merupakan form dimana diselesaikan menggunakan dynamic
pengguna dapat menambahkan data barang programming pada ZeroOneKnapsack dengan
baru, mengubah dan menghapus data barang menggunakan dynamic programming.
yang telah ada. Penyelesaian dynamic programming ini akan
c. Frame Knapsack Problem merupakan form ditampilkan pada daftar barang yang
dimana pengguna dapat memasukkan data disarankan (Gambar 1).
untuk masalah knapsack baru. Data masukan
yang diperlukan adalah jumlah anggaran

Gambar 1. Arsitektur Penyelesaian Knapsack Problem

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).

Tabel 1. Pengingat Dynamic Programming Sebelum Pencarian Solusi

b. Menentukan persamaan rekursif solusi optimal dari tahap-tahap sebelumnya


Persamaan rekursif yang digunakan adalah yang lebih kecil untuk mendapatkan solusi-
persamaan rekursif 2.5 untuk 0/1 knapsack solusi optimal untuk tahap-tahap berikutnya.
problem. Jika solusi optimal untuk suatu tahap telah
c. Menghitung nilai dari solusi optimal ditemukan maka dilakukan perhitungan untuk
Pada setiap tahap akan dilakukan perhitungan tahap berikutnya. Hal ini akan terus dilakukan
sesuai fungsi rekursif untuk mencari solusi hingga ditemukan solusi optimal secara
optimal yang memiliki nilai prioritas tertinggi keseluruhan untuk masalah sebenarnya. Jika
dari satu atau lebih kemungkinan solusi yang tidak ada barang apapun yang dimasukkan ke
ada. Pencarian solusi optimal tersebut dalam daftar solusi atau k = 0, maka nilai
dilakukan dengan memperhatikan keadaan optimal pada tahap z(0,h) = 0 (tabel 2).
pada tiap tahap dan menggabungkan solusi-

Tabel 2. Pengingat Dynamic Programming Pencarian Solusi pada Baris Pertama

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).

Tabel 3. Pengingat Dynamic Programming Tahap z(1,0)

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

Tabel 4. Pengingat Dynamic Programming Tahap z(1,1)


Jurnal Informatika Mulawarman Vol. 8 No. 2 Edisi Juli 2013 40

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

Tabel 5. Pengingat Dynamic Programming Tahap z(1,3)

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.

Tabel 6. Pengingat Dynamic Programming Tahap z(3,4)

Pencarian nilai solusi optimal akan terus ilustrasi tabel pengingat dynamic
dilakukan hingga tahap z(5,8). Berikut programming tahap z(5,8).

Tabel 7. Pengingat Dynamic Programming Tahap z(5,8)

yang masuk solusi optimal. Untuk barang ke-k


d. Menentukan keputusan optimal hingga k = 0, jika z(k,h) tidak sama dengan
Ilustrasi tabel pengingat berisi kemungkinan-
kemungkinan yang diperoleh untuk tiap z(k-1,h) maka masukkan barang ke dftBrg(k)
jumlah harga maksimal. Pada ilustrasi tabel 7 = 1.
tersebut, total prioritas optimal yang didapat Menggunakan tabel 7, penentuan barang-
adalah z(5,8) = 8. Nilai prioritas tertinggi barang yang masuk solusi dimulai dari barang
tersebut diambil dari nilai prioritas pada tahap satuan terakhir yaitu barang ke-5 dengan jumlah
terakhir. Penentuan tahap terakhir berdasarkan harga maksimal 8. Nilai prioritas optimal sebesar 8
pada barang satuan terakhir dengan jumlah pada z(5,8) dibandingkan dengan nilai 8 pada
harga maksimal. Selanjutnya dilakukan z(4,8). Karena nilainya sama, maka barang ke-5
perhitungan untuk menentukan barang-barang tidak dimasukkan ke daftar barang solusi dan
jumlah harga maksimal tidak berubah. Kemudian
Jurnal Informatika Mulawarman Vol. 8 No. 2 Edisi Juli 2013 41

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 2. Form Utama

Gambar 3. Form Barang


Gambar 4. Form Masalah Baru
Gambar 8. Form Pilih Satuan Barang

Gambar 5. Form Input Barang


Gambar 9. Form Nilai Prioritas Barang

Gambar 6. Form Edit Atribut Barang Gambar 10. Penambahan Data Barang

Gambar 11. Update Data Barang


Gambar 7. Form Kuantitas Barang
Jurnal Informatika Mulawarman Vol. 8 No. 2 Edisi Juli 2013 43

[3] Hasibuan, Zainal A. Metodologi Penelitian Pada


Bidang Ilmu Komputer Dan Teknologi
Informasi, Konsep: Metode Teknik dan
Aplikasi, Depok, 2007.
[4] Kellerer, Hans, Ulrich Pferschy, dan David
Pisinger. Knapsack Problems. Springer,
Verlag Berlin Heidelberg New York,
2004.
[5] Richard Bellman, “ Dynamic Programming “,
Princeton University Press.
[6] Rush D Robinett III, “ Applied Dynamic
Programming for Optimization of
Dynamical Systems “, Siam
Gambar 12. Update pesanan Barang [7] Sommerville, Ian. Software Engineering - Ninth
Edition, Pearson Education Inc.,
Massachusetts., 2011.
.

Gambar 13. Hasil Cek Solusi

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.

View publication stats

You might also like