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