Rancangan Analisa Algoritma 0/1 Knapsack Problem Dengan Metode Program Dinamis ↦ JAVA NETBEANS IDE 7.3

in #programming8 years ago

Halo sahabat Steemian's... Dalam postingan kali ini aku ingin membahas tentang suatu project dalam sebuah pemrograman. Pemrograman yang tak lepas dari dunia Teknik Infromatika telah melahirkan penemuan-penemuan terbaru yang kini mampu merajai teknologi diseluruh dunia. Contoh kecilnya saja seperti GPS TRACKER yang dapat menjadi sebuah pelacak yang dipasang pada mobil ataupun sepeda motor sebagai alat pelacak kendaraan jika terjadi kehilangan dikarenakan pencurian. Ada juga GPS NAVIGASI yang berfungsi sebagai penunjuk jalan untuk menentukan arah. Nah itu dia contoh kecil dari penemuan di dunia Teknik Informatika yang tak lepas dari teknologi masa kini. Sekarang kita dapat membandingkan antara kecanggihan Teknologi masa dulu dengan masa kini yang sangat-sangat jauh berbeda. Bukan tak mungkin teknologi masa kini dapat menciptakan suatu penemuan terbesar yang mampu memberikan dampak positif bagi seluruh umat manusia yang ada di bumi ini. Namun semua itu tak lepas dari yang namanya Kuasa Tuhan, karena tanpaNya kita ini bukanlah apa-apa. Perumpamaan kita ini hanya sebagai robot yang dimainkan oleh penciptaNya. Semua telah diatur serta pikiran dan ilmu yang kita dapatkan semua itu hanya dari Tuhan yang memberi kita kehidupan dengan berbagai pengetahuan. Maka dari itu disini aku ingin menuangkan beberapa penemuan kecilku yang baru saja selesai aku kerjakan. Untuk itu mari langsung saja pada pokok pembahasan.

Penemuan ini merupakan hasil dari suatu pemrograman Java untuk mencari hasil dari permasalahan "0/1 Knapsacak Problem". Dalam menentukan sebuah permasalahan Knapsack yang merupakan pembahasan tentang pemaksimalan isi Knapsack dengan problem dan kapasitasnya yang secara teoritis adalah struktur sederhana yang menerapkan masalah optimalisasi kombinatorial. Knapsack ini bisa dikategorikan sebagai suatu permasalahan tentang memilih objek dari sekian banyak dan seberapa besar objek tersebut akan disimpan secara optimal dengan memperhatikan objek n objek 1,2,3,...,n dimana setiap objek memiliki bobot (wi) dan (pi) sebagai nilai profit dengan kapasitas penyimpanan sebesar W dan nilai probabilitas dari setiap objek (xi).

Dalam project ini aku menggunakan algoritma Program Dinamis dengan metode 0/1 Fractional Knapsack yang bekerja sebagai pemecah masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (Step) atau tahapan (Stage). Lalu aku menggunakan aplikasi pemrograman Java Netbeans IDE 7.3 untuk menulis coding agar dapat terciptanya sebuah program "Dinamic 0/1 Knapsack". Namun didalam program ini aku menambahkan GUI (Graphical User Interfaces) sebagai fungsi untuk menambahkan menu grafis agar mempermudah pengguna berinteraksi dengan komputer ataupun sistem operasi.

Perangkat Lunak yang digunakan :

  • Sistem Operasi Windows 8.1 64-bit (Bisa juga Windows lainnya yang mencukupi dengan spesifikasinya)
  • Java JDK 1.8
  • Compiler NetBeans IDE 7.3

Steps Percobaan :

  1. Buka Java Netbeans, kemudian pilih File>New Project, lalu akan muncul seperti pada gambar 1.
  2. Gambar 1. Kotak dialog Choose Project
  3. Kemudian klik Next lalu akan muncul dialog seperti gambar 2. Isikan Project Name dengan nama project yang ingin di buat dan hilangkan tanda ceklist (√) pada Create Main Class kemudian klik Finish.
  4. Gambar 2. Kotak dialog Name and Location Project
  5. Kemudian buat Package baru dengan cara klik kanan pada Source Packages>New>Java Package dan akan muncul dialog kemudian isikan nama package-nya pada Package Name lalu klik Finish.
  6. Setelah itu buat java class dengan cara klik kanan pada package yang telah di buat kemudian pilih New>Java Class dan akan muncul dialog dan kemudian isikan nama class-nya pada Class Name lalu klik Finish.
  7. Dan setelah itu lanjut pada proses penulisan listing program. Program telah saya cantumkan pada subbab dibawah ini.

Percobaan Java NetBeans

Input Program :

  • Berikut ini adalah keseluruhan listing program 0/1 Knapsack Problem menggunakan algoritma perogram dinamis.

Output Program :

  • Setelah di jalankan akan terlihat solusi optimalnya yaitu seperti yang di tunjukkan pada gambar 3.
  • Gambar 3. Hasil output solusi optimal Knapsack

Output pada program tersebut telah keluar dan menghasilkan solusi optimal yang diinginkan. Lalu disini aku tak hanya ingin sekedar menghasilkan sebuah program biasa jika tanpa di analisa terlebih dahulu. Karena menganalisa suatu program bertujuan agar kita dapat mengetahui titik kesalahan yang terjadi pada sebuah program tersebut. Maka dari itu pentingnya melakukan sebuah analisa program sebelum program tersebut diuji. Untuk itu aku telah melakukan analisa berbentuk Flowchart untuk menentukan fungsi Knapsack.

Analisa Flowchart Fungsi Knapsack

Perhitungan Manual Knapsack

Masuk pada bagian perhitungan manual Knapsack. Rangkuman dari hasil perhitungan manual 0/1 Knapsack program dinamis dapat di lihat pada tabel 1. Jika diketahui :

Tabel 1.Perhitungan permasalahan 0/1 Knapsack

Dari tabel perhitungan tersebut dapat di lihat solusi 0/1 Knapsack dengan kapasitas K = 6 dapat mendapatkan total profit 13, yaitu dengan mengambil item ke-2 dan ke-4. Pada item ke-2 memiliki bobot = 2 dan profit = 5, sedangkan item ke-4 memiliki bobot = 4 dan profit = 8, maka ketika di jumlahkan bobotnya yaitu mencapai kapasitas maksimum K dengan total profit 13.

Berikut ini adalah perhitungan manual dari K[1,1] sampai K[1,6] :

Kesimpulan Program

Setelah menyelesaikan project tersebut, dapat aku simpulkan bahwa permasalahan Knapsack merupakan suatu masalah bagaimana cara menentukan pemilihan barang dari sekumpulan barang di mana setiap barang tersebut mempunyai berat dan profit masing-masing, sehingga dari pemilihan barang tersebut didapatkan profit yang maksimum. Lalu untuk menyelesaikan algoritma 0/1 Knapsack dengan metode program dinamis akan dibentuk sebuah matriks dan nilai matriks diisi sesuai alur program. Sedangkan solusi optimum algoritma 0/1 Knapsack dengan metode program dinamis dapat dilihat pada nilai terakhir yaitu nilai terbawah disisi kanan matriks, nilai tersebut merupakan jumlah profit keuntungan maksimum yang didapatkan. Dan yang terakhir kompleksitas dari algoritma 0/1 Knapsack menggunakan metode program dinamis adalah O(n2).

SEKIAN DAN TERIMA KASIH 😊


Salam Komunitas Steemit Indonesia


Sort:  

Artikel bagus untuk seorang programmer seperti anda, saya salut kepada anda @alfarisi tulisan anda sangat bagus menurut saya. Cara anda menjelaskannya membuat pembaca lebih paham, khususnya untuk seorang teknik informatika seperti anda, berbeda dengan saya yang tidak memahami dengan jelas masalah programmer itu seperti apa.

Seperti yang anda katakan memasang GPS pada kendaraan untuk menjaga atau bisa melacak dengan mudah kendaraan yang hilang, saya pikir itu sangat berguna untuk masyarakat semuanya. 😊

Terima kasih telah berbagi informasi tentang programmer ini, salam KOMUNITAS STEEMIT INDONESIA 🇮🇩🇮🇩🇮🇩

Terima kasih banyak telah membaca postingan saya :) saya berharap ini semua dapat bermanfaat untuk untuk semua masyarakat Indonesia tentunya. Saya juga senang jika postingan ini dapat memberikan dampak positif dikalangan masyarakat Indonesia. Salam Komunitas Steemit Indonesia @barvon

Postingan yang sangat bagus @alfarisi

Terima kasih banyak bang @foarsyad

good job ahli IT
you can

Thank you brother :) @makhzar

Terima kasih banyak om @aidilmubarak

Coin Marketplace

STEEM 0.14
TRX 0.35
JST 0.035
BTC 116054.77
ETH 4724.59
SBD 0.86