PENERAPAN ALGORITMA GREEDY PADA PERMASALAHAN KNAPSACK UNTUK OPTIMASI PENGANGKUTAN PETI KEMAS

dokumen-dokumen yang mirip
PENERAPAN METODE GREEDY KNAPSACK DALAM MENENTUKAN KOMPOSISI BUAH PADA MASALAH KERANJANG. Abstract

Eksplorasi Algoritma Brute Force, Greedy, dan Dynamic Programming untuk Persoalan Integer Knapsack

PERBANDINGAN PENYELESAIAN KNAPSACK PROBLEM SECARA MATEMATIKA, KRITERIA GREEDY DAN ALGORITMA GREEDY

PERBANDINGAN PENYELESAIAN KNAPSACK PROBLEM SECARA MATEMATIKA, KRITERIA GREEDY DAN ALGORITMAGREEDY

Aplikasi Algoritma Greedy pada Pemilihan Jenis Olahraga Ringan

PENYELESAIAN KNAPSACK PROBLEM MENGGUNAKAN ALGORITMA GENETIKA

EKSPLORASI ALGORITMA BRUTE FORCE, GREEDY DAN PEMROGRAMAN DINAMIS PADA PENYELESAIAN MASALAH 0/1 KNAPSACK

Pendahuluan. Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

BAB II LANDASAN TEORI

IMPLEMENTASI ALGORITMA GREEDY UNTUK MENYELESAIKAN MASALAH KNAPSACK PROBLEM

PERMASALAHAN OPTIMASI 0-1 KNAPSACK DAN PERBANDINGAN BEBERAPA ALGORITMA PEMECAHANNYA

DAFTAR SINGKATAN. : Bahan Bakar Minyak : Programmable Logic Controller :Tarif Dasar Listrik :Kilo Watt Hour

METODE GREEDY. Secara matematis, masalah knapsack tersebut dapat ditulis sebagai berikut :

BAB I PENDAHULUAN. Knapsack adalah suatu permasalahan dalam menentukan pemilihan objek

Penerapan Algoritma Greedy dalam Algoritma Penjadwalan Prosesor Tunggal Shortest Job First

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

Penerapan Algoritma Greedy dalam Optimasi Keuntungan Perusahaan Pengiriman Barang

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Implementasi Algoritma Greedy pada Permainan Ludo

Design and Analysis Algorithm

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

BAB III ANALISIS ALGORITMA

Penerapan Algoritma Greedy dalam Penyetokan Barang

Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

OPTIMASI STRATEGI ALGORITMA GREEDY UNTUK MENYELESAIKAN PERMASALAHAN KNAPSACK 0-1

PENERAPAN ALGORITMA GREEDY DALAM PENGISIAN RENCANA STUDI SEMESTER DI ITB SEBAGAI PERSOALAN BINARY KNAPSACK

Penerapan Algoritma Greedy dalam Algoritma Disk Scheduling Shortest Seek Time First

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Aplikasi Algoritma Brute Force Pada Knight s Tour Problem

BAB I PENDAHULUAN 1.1. Latar Belakang

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Penerapan Algoritma Greedy dalam Pengisian Rencana Studi Semester di ITB sebagai Persoalan Binary Knapsack

BAB I PENDAHULUAN. pekerjaan. Hampir segala bidang membutuhkan komputer sebagai sarana bantuan dalam

BAB I PENDAHULUAN. pada sektor masyarakat meluas dengan cepat[4]. menentukan tingkat kegiatan-kegiatan yang akan dilakukan, dimana masingmasing

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Design and Analysis of Algorithms CNH2G3- Week 8 Greedy Algorithm

LAPORAN RESMI MODUL II DYNAMIC PROGRAMMING

Penerapan Algoritma Greedy dalam Permainan MarketGlory

Mega Orina Fitri Dosen Jurusan Ilmu Perpustakaan UIN Imam Bonjol Padang ABSTRAK

PENERAPAN ALGORITMA GENETIKA PADA PERSOALAN PEDAGANG KELILING (TSP)

Penggunaan Algoritma Greedy dalam Optimasi Masalah Perkebunan

BAB 2 TINJAUAN PUSTAKA

BAB 1 KONSEP DASAR JAVA

Penerapan Algoritma Greedy Dalam Permainan Clash Royale

Optimisasi Penjadwalan Proses Pada Central Processing Unit Dengan Menggunakan Algoritma Greedy

Penyelesaian Persoalan Penukaran Uang dengan Program Dinamis

Penentuan Menu Makan dengan Pemrograman Dinamis

Implementasi Brute Force dan Greedy dalam Permainan Big Two (Capsa)

Penerapan Algoritma Greedy pada Intelegensia Buatan untuk Transfer Pemain dalam Permainan Simulasi Sepakbola

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

BAB I PENDAHULUAN 1.1 Latar Belakang

Pemilihan Monster yang Akan Digunakan dalam Permainan Yu-Gi-Oh! Capsule Monster Coliseum

Solusi Optimum Minmax 0/1 Knapsack Menggunakan Algoritma Greedy. Raja Sabaruddin Manajemen Informatika, AMIK BSI Pontianak

BAB II LANDASAN TEORI

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

What Is Greedy Technique

APLIKASI ALGORITMA GREEDY DALAM PENENTUAN SPESIFIKASI KOMPUTER RAKITAN

Perbandingan Performa Algoritma Greedy dan Dynamic Programming

Penerapan Algoritma Greedy dalam Permainan Connect 4

Jurnal Evolusi Volume 4 No evolusi.bsi.ac.id

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

BAB 1 PENDAHULUAN Latar Belakang

Penerapan Algoritma Greedy dalam Permainan Bantumi

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktifitas Pembelajaran

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Pemograman Java. Input(ii) String Function Pengulangan(FOR-While-DoWhile) Yoannita, S.Kom

Pendekatan Maju (Forward) Dynamic Programming Untuk Permasalahan MinMax Knapsack 0/1

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Algorima Greedy Pada Self Serve Gas Station

Penerapan Algoritma Brute force dan Greedy pada Penjadwalan Disk

BAB I PENDAHULUAN. Pada tahun 1947, George B. Dantzig, seorang anggota kelompok penelitian

PENERAPAN ALGORITMA GREEDY DALAM PENCARIAN SOLUSI TERBAIK PADA PERMAINAN TETRIS

ANALISA PENGGUNAAN ALGORITMA GREEDY PADA PERMAINAN FIVE LINK

Pertemuan 4 Array pada Java

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

BAB I PENDAHULUAN. Kebutuhan akan jasa angkutan laut semakin lama semakin meningkat, baik

BAB I PENDAHULUAN I.1 Latar Belakang Masalah

Penerapan Algoritma Greedy untuk Permainan Halma

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

BAB 2 LANDASAN TEORI

Aplikasi Algoritma Greedy dalam Penjurusan Mahasiswa Tingkat Pertama Institut Teknologi Bandung

MODUL PRAKTIKUM Matematika Informatika 2

Program Java Sesi 1. Arief Susanto

Penerapan Algoritma Greedy untuk Permainan Flood It

Penggunaaan Algoritma Greedy Dalam Aplikasi Vending Machine

BAB 1 PERSYARATAN PRODUK

IMPLEMENTASI ALGORITMA GENETIKA PADA KNAPSACK PROBLEM UNTUK OPTIMASI PEMILIHAN BUAH KEMASAN KOTAK

Penerapan Algoritma Greedy untuk Menentukan Loadout dalam Permainan PAYDAY 2

Penerapan Algoritma Greedy dalam Permainan Othello

Algoritma Greedy untuk AI dalam Permainan DotA

Perbandinganan Penggunaan Algoritma Greedy dan Modifikasi Algoritma Brute Force pada Permainan Collapse XXL

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 06

Penerapan Algoritma Brute Force pada permainan Countdown Number

Penentuan Lokasi Pemasaran Produk dengan Media Periklanan Menggunakan Algoritma Greedy

Penerapan Greedy pada Jalan Jalan Di Bandung Yuk! V1.71

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Bahasa Pemrograman :: Dasar Pemrograman Java

Transkripsi:

PENERAPAN ALGORITMA GREEDY PADA PERMASALAHAN KNAPSACK UNTUK OPTIMASI PENGANGKUTAN PETI KEMAS Agus Ambarwari 1), Nur Witdi Yanto 2) Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor (IPB) Jl. Meranti Kampus IPB Darmaga Bogor Telp/Fax : (0251) 625584 E mail: 1) ambarwari_agus@apps.ipb.ac.id, 2) nur_004@ apps.ipb.ac.id Abstrak Optimasi merupakan metode pemecahan masalah maksimalisasi atau minimalisasi. Optimasi sangat bermanfaat untuk meningkatkan produktivitas kerja. Terutama pada bidang (jasa) pengangkutan barang (seperti pengangkutan peti kemas dalam sebuah kapal). Dalam usaha tersebut, diinginkan suatu keuntungan yang maksimal untuk mengangkut barang yang ada dengan tidak melebihi batas kapasitas yang ada. Permasalahan semacam ini sering dianalogikan dengan menggunakan permasalahan Knapsack. Solusi dari permasalahan Knapsack pada pengangkutan peti kemas, dapat dilakukan dengan menerapkan algoritma Greedy. Algoritma Greedy yang diterapkan ke dalam suatu sistem dapat digunakan untuk menyelesaikan permasalahan Knapsack pada pengangkutan peti kemas dengan perolehan keuntungan lebih besar. Keyword: Algoritma Greedy, Knapsack Problem, Optimasi, Peti Kemas. 1. PENDAHULUAN Semakin maju dan berkembangnya teknologi, dibutuhkan juga kinerja yang cepat, tepat, dan efisien. Dengan pemanfaatan teknologi yang sudah dikembangkan, diharapkan produktivitas suatu perusahaan semakin meningkat. Salah satu contoh perusahaan yang sangat dibutuhkan dalam perdagangan adalah perusahaan pengiriman peti kemas. Perusahaan peti kemas melakukan pengiriman barang antar pulau maupun negara, dengan menggunakan alat transportasi kapal, truk, atau kereta api. Bukan sekedar pengangkutan saja yang harus dipikirkan, melainkan juga harus dipikirkan efisiensi dan keuntungan yang dapat diperoleh. Dengan pertimbangan tersebut, diharapkan dapat diperoleh keuntungan yang besar. Pengiriman barang menggunakan peti kemas ini tidak hanya terjadi sekali saja, tetapi dapat berulang kali. Oleh karena itu, dibutuhkan suatu sistem yang dapat membantu petugas di lapangan dalam seleksi peti kemas di pelabuhan. Dengan syarat berat muatan peti kemas tidak melebihi kapasitas kapal pengangkut, dan masing masing peti kemas tersebut memiliki nilai yang tinggi. Dari permasalahan tersebut, munculah suatu permasalahan yang dikenal dengan istilah Permasalahan Knapsack atau lebih dikenal Knapsack Problem. Masalah 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 ( Wi ) dan profit ( Pi ), dengan memperhatikan juga kapasitas dari media penyimpanan sebesar M dan nilai probabilitas dari setiap objek ( Xi ) (Prihandono, 2009). Sehingga untuk menyelesaikan permasalahan tersebut diperlukan suatu algoritma yang dapat menghasilkan solusi yang optimal, efektif, dan efisien. Salah satu algoritma yang sesuai dalam hal optimasi pengangkutan peti kemas adalah dengan menggunakan algoritma Greedy. Metode Greedy merupakan salah satu cara untuk mendapatkan solusi optimal dalam proses penyimpanan. Berdasarkan hal tersebut, dalam tulisan ini akan diterapkan suatu sistem komputer yang bertujuan untuk mempercepat proses pemilihan peti kemas dengan menggunakan algoritma Greedy. Sehingga dapat memberikan solusi optimal dalam melakukan pemilihan peti kemas yang akan dimasukkan ke dalam kapal pengangkut dan keuntungan yang diperoleh maksimal. 2. TINJAUAN PUSTAKA 2.1. Peti Kemas Peti kemas ( container ) merupakan gudang kecil yang berjalan untuk mengangkut barang dari satu tempat ke tempat lain, harus bersama sama dengan alat pengangkutnya yaitu kapal angkut kontainer, truk, atau kereta api sampai ke tempat yang dituju. Hal inilah yang menyebabkan peralihan angkutan barang umum menjadi angkutan barang dengan menggunakan kontainer yang menonjol dalam beberapa dekade terakhir. Hal ini juga terlihat pada pelabuhan pelabuhan kecil yang sudah menunjukkan trend peralihan ke kontainer, karena alasan ekonomi yang berkaitan dengan kecepatan bongkar muat dan biaya yang lebih rendah. Pergerakan kontainer dari satu tempat ke tempat lain tanpa adanya pembatasan teritorial/wilayah pembawa muatan di dalamnya ( cargo ) secara aman dan efisien dapat dipindah pindahkan. Oleh karena itu kontainer harus laik laut ( sea worthy ) mampu menahan getaran pada waktu pengangkutan di laut maupun di darat. Dan tahan terhadap iklim dan suhu yang berbeda beda (Indrianingsih, (Online)). Bentuk kontainer ada yang mempunyai standar Internasional, bentuknya dapat disesuaikan dengan kebutuhan pemakai, yaitu: 1) Untuk keperluan militer ( army container ) 2) Untuk logistik ( oil offshore ) 3) Untuk office dan logistik bangunan ( building and road project contractor ) Pada kontainer mempunyai fiting sudut dan kunci putar, sehingga antara satu kontainer dengan kontainer lainnya dapat disatukan atau dilepaskan. Pada tempat pengiriman barang dalam satuan yang lebih kecil, barang barang tersebut dimasukkan ke dalam kontainer kemudian dikunci atau disegel untuk siap dikirimkan. 2.2. Permasalahan Knapsack ( Knapsack Problem ) Knapsack adalah tas atau karung yang digunakan untuk memasukkan sesuatu barang, namun tidak semua barang dapat ditampung ke dalam karung tersebut. Karung tersebut hanya

dapat menyimpan beberapa objek dengan total ukurannya ( weight ) lebih kecil atau sama dengan ukuran kapasitas karung (Wahab, 2008). Knapsack problem merupakan masalah di mana orang dihadapkan pada persoalan optimasi dalam pemilihan benda yang dapat dimasukkan ke dalam sebuah wadah yang memiliki keterbatasan ruang atau daya tampung. Dengan adanya optimasi dalam pemilihan benda yang akan dimasukkan ke dalam wadah tersebut diharapkan dapat menghasilkan keuntungan yang maksimum. Benda benda yang akan dimasukkan ini masing masing memiliki berat dan sebuah nilai yang digunakan untuk menentukan prioritasnya dalam pemilihan tersebut. Nilainya dapat berupa tingkat kepentingan, harga barang, nilai sejarah, atau yang lainnya. Wadah yang dimaksud di sini juga memiliki nilai konstanta yang merupakan nilai pembatas untuk benda benda yang akan dimasukkan ke dalam wadah tersebut untuk itu harus diambil sebuah cara memasukkan benda benda tersebut ke dalam wadah sehingga menghasilkan hasil optimum tetapi tidak melebihi kemampuan wadah untuk menampungnya. 2.3. Jenis Jenis Knapsack Problem Terdapat beberapa variasi Knapsack problem, diantaranya: a. 0/1 Knapsack problem Setiap barang hanya tersedia 1 unit, take it or leave it. b. Fractional Knapsack problem Barang boleh dibawa sebagian saja (unit dalam pecahan). Versi problem ini menjadi masuk akal apabila barang yang tersedia dapat dibagi bagi misalnya gula, tepung, dan sebagainya. c. Bounded Knapsack problem Setiap barang tersedia sebanyak N unit (jumlahnya terbatas). d. Unbounded Knapsack problem Setiap barang tersedia lebih dari 1 unit, jumlahnya tidak terbatas 2.4. Berbagai Macam Stategi dalam Mengatasi Permasalahan Knapsack a. Knapsack Problem Knapsack sering sekali digunakan terutama pada bidang (jasa) pengangkutan barang (seperti pengangkutan peti kemas dalam sebuah kapal). Dalam usaha tersebut, diinginkan suatu keuntungan yang maksimal untuk mengangkut barang yang ada dengan tidak melebihi batas kapasitas yang ada. Berdasarkan persoalan tersebut, diharapkan ada suatu solusi yang secara otomatis dalam mengatasi persoalan itu. Problem Knapsack adalah permasalahan optimasi kombinatorial, dimana kita harus mencari solusi terbaik dari banyak kemungkinan yang dihasilkan (Wahab, 2008). b. Penyelesaian Knapsack Knapsack problem bisa diselesaikan dengan berbagai cara. Ada beberapa strategi algoritma yang dapat menghasilkan solusi optimal, diantaranya adalah:

1) Brute Force Brute force adalah sebuah pendekatan yang lempang ( straightforward ) untuk memecahkan suatu masalah, biasanya didasarkan pada pernyataan masalah ( problem statement ) dan definisi konsep yang dilibatkan (Munir, 2004). 2) Algoritma Greedy Algoritma Greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi (Munir, 2001). Dalam menyelesaikan permasalahan, algoritma Greedy melakukannya secara bertahap (Brassard G, 1996). Tahap penyelesaiannya adalah: 1) Mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan. 2) Berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global. 2.5. Strategi Algoritma Greedy Untuk memilih objek yang akan dimasukkan ke dalam Knapsack, terdapat beberapa strategi Greedy yang heuristik (Silvano, 1990) yaitu: a. Greedy by profit Knapsack diisi dengan objek yang mempunyai keuntungan terbesar pada setiap tahap. Objek yang paling menguntungkan dipilih terlebih dahulu untuk memaksimumkan keuntungan. Tahap pertama yang dilakukan adalah mengurutkan secara menurun objek objek berdasarkan profitnya. Kemudian baru diambil satu per satu objek yang dapat ditampung oleh Knapsack sampai Knapsack penuh atau sudah tidak ada objek lagi yang dapat dimasukkan. b. Greedy by weight Knapsack diisi dengan objek yang mempunyai berat paling ringan pada setiap tahap. Sebanyak mungkin objek dimasukkan ke dalam Knapsack untuk memaksimumkan keuntungan. Tahap pertama yang dilakukan adalah mengurutkan secara menaik objek objek berdasarkan weight nya. Kemudian baru diambil satu per satu objek yang dapat ditampung oleh Knapsack sampai Knapsack penuh atau sudah tidak ada objek lagi yang dapat dimasukkan. c. Greedy by density Knapsack diisi dengan objek yang mempunyai densitas terbesar pada setiap tahap. Memilih objek yang mempunyai keuntungan per unit berat terbesar untuk memaksimumkan keuntungan. Tahap pertama yang dilakukan adalah mencari nilai profit per unit ( density ) dari tiap tiap objek. Kemudian objek objek tersebut diurutkan berdasarkan density nya. Kemudian baru diambil satu per satu objek yang dapat ditampung oleh Knapsack sampai Knapsack penuh atau sudah tidak ada objek lagi yang dapat dimasukkan. Algoritma Greedy mengurangi jumlah langkah pencarian.

2.6. Algoritma Greedy dalam Menyelesaikan Masalah Knapsack Algoritma Greedy menyelesaikan suatu masalah dengan beberapa fungsi pembatas untuk mencapai satu fungsi tujuan (Prihandono, 2009). Jadi dalam penyelesaiannya harus ditentukan fungsi pembatas dan fungsi tujuan. Cara untuk menyelesaiakan masalah Knapsack dengan algoritma Greedy adalah: 1) Tentukan Fungsi Tujuan, yaitu mencari nilai maksimum dari jumlah hasil perkalian antara nilai profit ( Pi ) dengan nilai probabilitas ( Xi ). Maximum P i X i 2) Tentukan Fungsi Pembatas, yang merupakan hasil penjumlahan dari perkalian antara bobot ( Wi ) dengan nilai probabilitas ( Xi ) yang tidak boleh melebihi dari kapasitas media penyimpanan ( M ). W i Xi M, dimana 0 Xi 1, P i > 0, W i > 0 Berikut ini algoritma Greedy dalam menyelesaikan permasalahan Knapsack: PROCEDURE GREEDY KNAPSACK (P, W, X, n) REAL P(1:n), W(1:n), X(1:n), M, isi INTEGER i, n X(1:n) = 0 isi = M FOR i = 1 TO n DO IF W(i) > isi THEN EXIT ENDIF X(i) = 1 isi = isi W(i) REPEAT IF i n THEN X(i) = isi/w(i) ENDIF END GREEDY KNAPSACK Keterangan: n = Jumlah objek Wi = Bobot setiap objek Pi = Profit setiap objek Xi = Probabilitas setiap objek M = Kapasitas media penyimpanan 3. METODE PENELITIAN Langkah langkah penelitian yang dilakukan pada tulisan ini untuk menyelesaikan permasalahan knapsack dalam pemilihan peti kemas menggunakan algoritma greedy adalah sebagai berikut: 1) Melakukan studi literatur mengenai algoritma greedy dalam penyelesaian permasalahan knapsack. 2) Mengidentifikasi permasalahan atau kendala yang dihadapi dalam penerapan agoritma greedy.

3) Melakukan eksperimen ( coding ), yaitu dengan membuat prototipe menggunakan bahasa pemrograman untuk mensimulasikan solusi permasalahan knapsack pada pemilihan peti kemas. 4) Melakukan analisis dan pembahasan dari hasil simulasi menggunakan program yang telah dibuat. 5) Membuat kesimpulan dari serangkaian kegiatan penelitian yang telah dilakukan. 4. HASIL DAN PEMBAHASAN Permasalahan yang diambil pada tulisan ini yaitu tentang pemilihan peti kemas yang akan dimasukkan ke dalam kapal pengangkut. Kapal pengangkut ini memiliki kapasitas terbatas, namun menginginkan hasil atau keuntungan yang besar dari pengangkutan peti kemas. Sehingga petugas memerlukan waktu cukup lama untuk melakukan perhitungan, sedangkan kegiatan pengangkutan peti kemas ke dalam kapal harus cepat. Dari permasalahan tersebut dibuatlah prototipe program untuk mensimulasikan pemilihan peti kemas dengan keuntungan yang maksimal. Kode program dibuat dengan menggunakan bahasa pemrograman Java yang dijalankan menggunakan IDE Eclipse, algoritma yang digunakan adalah Algoritma Greedy pada Permasalahan Knapsack. Di bawah ini adalah sintaks dari program yang telah dibuat: /** * File name : Knapsack.java * Program name: Knapsack Peti Kemas * By Computer Science Ilkom IPB 2015 */ import java.util.*; import java.io.*; import java.lang.*; public class Knapsack { static int n = 5, W; static obj st[]; public static BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); public static void main(string[] agus) throws IOException { int i = 0; System.out.println("Knapsack Problem\n \n"); System.out.print("Banyak peti yang ingin dimasukkan : "); n = Integer.parseInt(br.readLine()); System.out.print("Kapasitas maksimum kapal (Kg) : "); W = Integer.parseInt ( br.readline() ); st = new obj[n]; for (i=0; i<n; i++) { st[i] = new obj(); System.out.print("Peti #" + (i + 1) + " : \n\tberat (Kg) : "); st[i].weight = Float.parseFloat(br.readLine()); System.out.print ("\tprofit (Rp): "); st[i].profit = Float.parseFloat(br.readLine());

st[i].p_perkg = Round (st[i].profit / st[i].weight, 2); System.out.print("\tProfit per Kg: " + st[i].p_perkg + "\n"); st[i].index = i + 1; bubblesort(); System.out.print("\nSolusi Optimal : "); fill_sack(); public static float Round(float Rval, int Rpl) { float p = (float) Math.pow(10, Rpl); Rval = Rval * p; float tmp = Math.round(Rval); return(float) tmp / p; static void fill_sack() { float x[] = new float[n]; float u, tot_profit = 0; int i; for (i=0; i<n; i++) x[i] = 0; u = W; for (i = 0; i < n; i++) { if (st[i].weight > u) break; x[i] = 1; u = st[i].weight; System.out.print("\nMemasukkan Peti #" + st[i].index + " (Rp. " + st[i].profit + ", " + st[i].weight + " Kg) kedalam kapal.\n" ); System.out.print("Kapasitas kapal tersisa : " + u + " Kg\n"); tot_profit += st[i].profit; System.out.print("\n\nTotal Profit earned = Rp." + tot_profit + "/ "); static void bubblesort() { for (int pass=1; pass<n; pass++) for (int i=0; i<n pass; i++) if (st[i].p_perkg < st[i+1].p_perkg) { obj temp = new obj(); temp = st[i]; st[i] = st[i+1]; st[i+1] = temp; static class obj { float weight; float profit; float p_perkg; int index;

Output yang dihasilkan dari sintaks di atas terlihat seperti Gambar 1. Gambar 1. Output Program Greedy Knapsack untuk Pemilihan Peti Kemas Contoh kasus yang penulis gunakan untuk mensimulasikan permasalahan knapsack pada peti kemas yaitu jika terdapat 3 peti kemas yang ingin dimasukkan ke dalam kapal pengangkut dengan kapasitas maksimal sebesar 20 Kg, dengan berat masing masing peti kemas tersebut adalah 18 Kg, 15 Kg, dan 10 Kg, dimana setiap peti kemas memiliki profit masing masing sebesar 25, 24, dan 15. Untuk memperoleh keuntungan yang maksimal, langkah langkah yang dilakukan oleh algoritma greedy adalah sebagai berikut: Data yang diketahui: n = 3, (1, 2, 3) objek M = 20 kapasitas ( W 1, W 2, W 3 ) = ( 18, 15, 10) ( P 1, P 2, P 3 ) = ( 25, 24, 15) Nilai probabilitas 0 Xi 1

Perbandingan profit dengan bobot: P 1 /W 1 = 25/18 = 1.39 P 2 /W 2 = 24/15 = 1.6 P 3 /W 3 = 15/10 = 1.5 Susun data sesuai kriteria ( non increasing ): ( P 2, P 3, P 1 ) = ( 24, 15, 25), atau ( P 1, P 2, P 3 ) = ( 24, 15, 25) ( W 2, W 3, W 1 ) = ( 15, 10, 18), atau ( W 1, W 2, W 3 ) = ( 15, 10, 18) Masukkan nilai kriteria di atas ke dalam algoritma greedy: 1) PROCEDURE GREEDY KNAPSACK (P, W, X, n) nama prosedur/proses 2) REAL P(1:n), W(1:n), X(1:n), M, isi variabel yang digunakan 3) INTEGER i, n variabel yang digunakan 4) X(1:n) = 0 5) isi = M 6) FOR i = 1 TO n DO 7) IF W(i) > isi THEN EXIT ENDIF 8) X(i) = 1 9) isi = isi W(i) 10)REPEAT 11)IF i n THEN X(i) = isi/w(i) ENDIF 12)END GREEDY KNAPSACK akhir prosedur/proses Proses kegiatan dimulai dari langkah ke 4 sampai dengan 11. X(1:3) = 0, artinya X(1)=0, X(2)=0, X(3)=0 isi = M = 20 Pengulangan untuk i = 1 sampai dengan 3 Untuk i = 1 Apakah W(1) > isi Apakah 15 > 20, jawabnya tidak, karena tidak maka perintah dibawah IF dikerjakan. X(1) = 1 nilai probabilitas untuk objek pada urutan pertama (X 1 ) isi = 20 15 = 5 REPEAT mengulang untuk perulangan FOR Untuk i = 2 Apakah W(2) > isi Apakah 15 > 5, jawabnya ya, karena ya maka perintah EXIT dikerjakan, yaitu keluar dari pengulangan/for dan mengerjakan perintah di bawah REPEAT. Apakah 2 3, jawabnya ya, karena ya maka X(2) = 5/10 = ½ nilai probabilitas untuk objek pada urutan kedua (X 2 ). Selesai (akhir dari prosedur greedy knapsack). Berarti untuk nilai X(3) = 0 atau X 3 = 0, sebab nilai probabilitas untuk objek ke 3 tidak pernah dicari.

Jadi ( P 1, P 2, P 3 ) = ( 24, 25, 25) ( W 1, W 2, W 3 ) = ( 15, 10, 18) ( X 1, X 2, X 3 ) = ( 1, 1/2, 0) Fungsi Pembatas: W i Xi M ( W 1 X 1 ) + ( W 2 X 2 ) + ( W 3 X 3 ) M ( 15 1 ) + ( 10 1 /2) + ( 18 0 ) 20 20 20 Fungsi Tujuan: P i X i = ( P 1 X 1 ) + ( P 2 X 2 ) + ( P 3 X 3 ) = ( 24 1 ) + ( 15 1 /2) + ( 25 0 ) = 31.5 Hasil akhir dari program yang telah dijalankan, mendapatkan data seperti pada Tabel 1. Tabel 1. Hasil akhir program Greedy Knapsack Properti Objek Greedy by N Wi Pi Pi/Wi Profit Weight Density 1 18 25 1.39 1 1 0 2 15 24 1.6 0 0 1 3 10 15 1.5 0 0 0 Total Bobot 18 18 15 Total Keuntungan 25 25 24 Dari Tabel 1 terlihat bahwa greedy by profit dan greedy by weight memiliki keuntungan lebih besar. Namun apabila diperhatikan secara seksama, greedy by density yang lebih optimal, karena dengan bobot yang kecil keuntungan yang diperoleh lebih besar dibandingkan dengan greedy by profit dan greedy by weight. Sehingga dari analisis di atas diperoleh bahwa algoritma Greedy dapat memberikan solusi optimal pada program pemilihan peti kemas. 5. KESIMPULAN Knapsack merupakan salah satu permasalahan yang dapat diselesaikan dengan strategi greedy, untuk mencari dan mendapatkan solusi optimal yaitu dengan menggunakan strategi greedy by profit, greedy by weight, atau juga dapat diselesaikan dengan greedy by density. Pendekatan yang digunakan oleh algoritma greedy adalah membuat pilihan yang dapat memberikan perolehan terbaik, yaitu dengan membuat pilihan optimum lokal pada

setiap langkah dengan tujuan bahwa sisanya mengarah ke solusi optimum global. Meskipun tidak selalu mendapatkan solusi terbaik (optimum), algoritma greedy umumnya memiliki kompleksitas waktu yang cukup baik, sehingga algoritma ini sering digunakan untuk kasus yang memerlukan solusi cepat meskipun tidak optimal seperti sistem real time atau game. Pada permasalahan optimasi peti kemas, algoritma greedy diterapkan sebagai salah satu cara untuk menyelesaikan permasalahan knapsack pada pemilihan peti kemas. Dari hasil percobaan dan analisis yang telah dilakukan, algoritma greedy memberikan solusi optimal dalam melakukan pemilihan peti kemas sehingga juga diperoleh keuntungan yang lebih besar. 6. DAFTAR PUSTAKA Brassard G. 1996. Fundamentals of algorithmics. New Jersey: Prentice Hall. Indrianingsih, Y.. Algoritma Genetik Untuk Seleksi Peti Kemas Pada Pelabuhan. (Online). ( http://stta.name/data_lp3m/jurnal ANGKASA PETI KEMAS.doc, diakses 9 Januari 2016) Munir, R. 2001. Algoritma dan Pemrograman dalam bahasa pascal dan C. Bandung: CV. Informatika. Munir, R. 2004. Bahan Kuliah ke 1 IF2251: Strategi Algoritmik dan Algoritma Brute Force. Departemen Teknik Informatika Institut Teknologi Bandung. (Online). ( http://kur2003.if.itb.ac.id/file/trans Bahan Kuliah ke 1.doc, diakses 10 Januari 2016). Prihandono, H. 2009. Knapsack Problem dengan Algoritma dan Metode Greedy. (Online). ( https://hendryprihandono.files.wordpress.com/2009/01/knapsack problem metode gr eedy.doc, diakses 10 Januari 2016). Silvano et al. 1990. Knapsack problem: Algorithm and Computer Implementation. John Wiley & Sons. ISBN: 0 471 92420. Wahab, A., Shinta, P., dkk. 2008. Knapsack Algorithm & Computer Implementation. (Online). ( http://oc.its.ac.id/ambilfile.php?idp=667, diakses 10 Januari 2016)