Perancangan Aplikasi Container Loading Problem dengan
Menggunakan Maximal Space Algorithm
Rosalinda
1)Lely Hiryanto
2)Gunadi Gan
3) 1) 2) 3)Program Studi Teknik Informatika
Fakultas Teknik Informasi Universitas Tarumanagara
Jl. Letjen. S. Parman No. 1, Jakarta 11440 Indonesia
email : 1) [email protected], 2) [email protected], 3) [email protected]
ABSTRACT
This paper presentmaximalspace algorithmtosolve the problem ofloadingcargointo containers.This algorithmis presentedin two phases, that isconstructive phasesandimprovementphases. With constructivephase, optimal resultsareobtainedin the use ofphaseimprovement.The result of this experiment is the objection objective of this application has been achieved. It’s because the data testing can load cargo to container successfully. However, the size of each cargo can affect the rest of the container volume.
Key words
Container loading; 3D packing; maximal space; GRASP; heuristics
1. Pendahuluan
Dalam melakukan pengiriman muatan, digunakan berbagai alat dalam melakukannya.Salah satunya dengan menggunakan mobil kontainer untuk melakukan pengiriman pada jalur darat.Dalam melakukan penyusunan muatan ke dalam kontainer terdapat berbagai masalah yang membatasi penyusunan muatan. Permasalahan tersebut adalah sebagai berikut :
1. Ukuran muatan yang akan dimuat, seperti panjang, lebar, tinggi, dan berat.
2. Tujuan muatan yang dikirim. Muatan yang akan dikirim akan disusun ke dalam kontainer berdasarkan tujuan pengirimannya. Untuk satu benda yang sama memiliki tujuan yang sama.
3. Ruang kontainer yang diperhatikan agar muatan yang dapat dimasukkan menjadi lebih banya tanpa merusak muatan.
4. Sifat dari muatan yang akan dikirim. Dengan muatan yang bersifat fragile tidak boleh disusun dibawah muatan bersifat cair dan nonfragile. Begitu juga benda cair tidak boleh disusun dibawah benda nonfragile.
5. Terdapat beberapa benda yang bersifat fragile tidak dapat dilakukan rotasi. Untuk menghindari benda tersebut akan rusak karena di lakukan rotasi dan tertimpa oleh muatan lain.
Penelitian ini bertujuan untuk mengoptimalkan penempatan muatan di dalam kontainer sehingga mencapai muatan yang optimal.Penggunaan ruang kontainer yang digunakan maksimal dan muatan yang dimasukkan berjumlah optimal.Untuk mencapai tujuan tersebut, digunakan metode maximal space untuk mendapatkan hasil yang optimal.
Pada percobaan sebelumnya, dilakukan percobaan dengan menggunakan metode Hybrid genetic algorithm[1]dan algoritma heuristik[2]untuk mendapatkan hasil pemuatan ke dalam kontainer yang optimal.Begitu juga dengan penelitian ini, dengan melakukan percobaan, didapatkan hasil yang optimal dengan memanfaatkan ruang kosong dalam kontainer sehingga jumlah muatan yang dimasukkan menjadi lebih optimal dan lebih banyak.
2. Maximal Space Algorithm
Maximal space memiliki dua tahapan yang terjadi yaitu tahap Constructive dan tahap improvement [3].Tahap constructive dan Tahap improvement merupakan tahapan yang mengadopsi algoritma GRASP [4].Namun perbedaan dari algoritma GRASP adalah pada tahap constructiveyang menggunakan konsep maximal space dalam melakukan pemuatan ke dalam kontainer.
Seperti yangterlihat dalam alur kerja algoritma maximal space pada gambar 1.
2.1 Tahap Constructive
Tahap constructive digunakan sebagai algoritma untuk memasukkan muatan ke dalam kontainer serta memilih kandidat muatan yang akan dimasukkan kedalam kontainer. Terlihat pada gambar 2, dibutuhkan inisialisasi terhadap input untuk melakukan proses tahap constructive. Pada tahap ini dicari ruang yang dapat menghasilkan nilai minimum terhadap sudut ruang kontainer.
Berikut merupakan penjelasan dari tahap constructive[3]:
1. Inisialisasi
Tahap pertama yang harus dilakukan adalah menginisialisasi list L, list B, qi, dan p dengan :
L = {C}, memasukkan maximal space yang kosong dalam kontainer
B = {b1,b2,..,bn}, muatan yang ingin dimasukkan ke
dalam kontainer
qi = jumlah muatan yang ingin dimasukkan ke dalam
kontainer
p = jumlah muatan yang telah dimasukkan ke dalam container
2. Memilih maximal space di L
Pada tahap ini hitung jarak , antara setiap sudut ruang kosong yang tersedia dengan sudut kontainer. Untuk menghitung , dapat digunakan formula sebagai berikut :
, = | − |, | − |, | − |(1)
Dengan:
= sudut ruang kosong yang tersedia = sudut kontainer
= sudut ruang pada koordinat x = sudut kontainer pada koordinat x = sudut ruang pada koordinat y = sudut kontainer pada koordinat y = sudut ruang pada koordinat z = sudut kontainer pada koordinat z 3. Mencari jarak terkecil
Tentukan jarak setiap muatan dengan mencari jarak terkecil dari jarak , yang telah dihitung untuk dimasukkan ke dalam kontainer. Rumus yang digunakan adalah :
= min { , } (2)
Dengan :
= jarak terkecil dari ,
, = jarak antara ruang kosong dengan container
4. Memilih muatan yang akan dipack
Bentuk muatan yang akan dimuat ke dalam kontainer dalam kasus ini dibatasi hanya berbentuk kubus dan balok. Jika qi(jumlah muatan yang ingin dimasukkan)
lebih dari 1 maka muatan yang akan dimasukkan dapat dipilih secara acak. Muatan yang akan dipilih
harus memenuhi kontainer dengan baik, berat dari muatan tersebut tidak melebihi berat kontainer, sifat muatan tersebut harus diurutkan menurut prioritas dari muatan tersebut.
Muatan yang diprioritaskan diletakkan pada posisi bawah adalah muatan yang bersifat nonfragile, cair dan fragile.Selain itu tujuan dari muatan tersebut mempengaruhi penempatan muatan tersebut dalam kontainer.Proses rotasi muatan dimungkinkan jika muatan tersebut tidak cukup jika dimasukkan secara horisontal atau vertical sehingga muatan yang masuk menjadi lebih banyak dan ruang kosong yang tersisa dalam kontainer menjadi lebih banyak.
Selain itu,berat dari muatan juga mempengaruhi penempatan muatan tersebut. Dimana muatan yang lebih berat berada pada posisi bawah dan muatan yang lebih ringan berada pada posisi bawah. Kemudian benda yang bersifat fragile khusus yang posisinya tidak bias dirotasi maka tidak akan terjadi rotasi.
Kemudian hitung kembali nilai qi dengan formula :
= − (3)
Dengan :
ri = jumlah muatan yang dimasukkan kedalam
kontainer.
5. Memperbaharuilist L, list B, qi, p
Setelah memasukkan muatan tersebut, list L akan diperbaharui sesuai dengan ruang kosong yang tersedia di kontainer. List B akan diperbaharui sesuai dengan muatan yang belum masuk ke dalam kontainer. qi akan diperbaharui dengan nilai qi yang
dihitung pada tahap sebelumnya. p akan diperbaharui sesuai dengan jumlah muatan yang masuk ke dalam kontainer.
6. Mengecek kondisi henti
Kondisi henti yang harus dipenuhi, antara lain saat kondisi qi=0 dan B=0 atau saat sisa ruang kontainer
tidak mampu untuk memuat muatan lainnya yang belum masuk kedalam kontainer.
2.2 Tahap Improvement
Pada tahap improvement ini akan dilakukan pengoptimalan dari proses tahap constructive jika masih terdapat muatan yang belum termuat ke kontainer. Proses pengoptimalan dilakukan dengan menggunakan local search. Local search yang digunakan adalah Simulated Annealing (SA)[5].
Pada tahap ini terjadi proses pemasukkan muatan ke dalam kontainer sehingga muatan yang ingin dimasukkan bias menjadi lebih banyak. Pada tahap ini juga jika dapat terjadi proses rotasi, maka dilakukan rotasi sehingga muatan dapat termuat sesuai ruang kosong yang tersedia sesuai dengan panjang, lebar, tinggi muatan.Berikut algoritma yang digunakan dalam tahap improvement :
1. Inisialisasi t, tf, F(S0), , Nmove, dan Niter.
Tahap awal yang harus dilakukan adalah inisialisasi t, tf, F(S0), , Nmove, dan Niter. Dengan :
= Suhu awal atau volume kontainer awal.
= Suhu akhir atau target sisa volume kontainer yang diinginkan (default=1).
F(S0) = Fitness kontainer awal sebelum terjadi
pertukaran.
= penurunan temperatur yang digunakan untuk menurunkan volume kontainer dengan menggunakan formula :
= 1 − ln − !ln "# /%&'()* (4)
%&'() = jumlah muatan yang telah dimasukkan ke dalam kontainer.
Nmax = jumlah iterasi yang akan dilakukan untuk
mendapatkan hasil solusi yang optimal (default=1).
Gambar 3 Alur Tahap Improvement
2. Hitung Nilai fitness keseluruhan kontainer nilai fitness setiap muatan.
Hitung terlebih dahulu nilai fitness semua benda sesuai dengan ketentuan yang berlaku. Kemudian hitung total fitness awal sebelum ada perpindahan muatan dengan menggunakan formula:
+ , = + + + +. . . . ++/(5) Dengan :
F1= Fitness muatan ke-1
F2= Fitness muatan ke-2
Fn= Fitness muatan ke-n
3. Mencari ruang kosong yangtersedia pada kontainer. Jika muatan tersebut dapat dimuat pada ruang kosong tersebut, masukkan muatan tersebut ke dalamkontainer. Kemudian lakukan juga proses
pertukaran dua muatan yang
bervolumesama.Kemudian hitung nilai fitness akhir setelah pertukaran dengan formula :
Dengan :
+ = nilai fitness akhir setelah pertukaran
F1 = Fitness muatan ke-1
F2 = Fitness muatan ke-2
Fn= Fitness muatan ke-n
Kemudian bandingkan nilai fitness awal dan nilai fitness setelah melakukan pertukaran.Jika nilai fitness awal lebih kecil dari nilai fitness akhir maka pertukaran muatan diterima.Jika tidak maka pertukaran muatan tidak diterima.
4. Tambahkan nilai Niter
Lakukan pertambahan nilai dari Niterdengan formula:
Niter=Niter+1 (7)
Dengan :
Niter = jumlah iterasi yang telah dilakukan
Lakukan perbandingan antara Niter dengan Nmax.Jika
nilai dari Niter sudah sama dengan Nmax maka
lanjutkan ke tahap selanjutnya. Jika belum, maka Lakukan kembali daritahappertukaran muatan sampai didapat nilai Nitersama dengan Nmax. Nilai default dari
Nmax=3.
5. Hitung nilai t
Hitung nilai t dengan formula :
= ∗ (8)
Nilai t diturunkan dengan menggunakan . Dengan nilai tetap yang ditentukan pada tahap inisialisasi. 6. Bandingkan nilai t dengan tf.
Jika nilai t masih lebih besar dari tf maka lakukan
kembali proses dari tahap inisialisasi hingga tahap perbandingan Niter. Lakukan tahap improvement ini
hingga didapatkan hasil t<tf.
3. Rancangan dan Pembuatan
Program aplikasi container loading problem menggunakan beberapa modul Input dan modul output. Modul Input berguna untuk memasukkan data ke dalam sistem. Sedangkan modul output berguna untuk menampilkan hasil dari optimalisasi. Terdapat sebuah modul utama yang menjadi wadah utama yang menyajikan semua modul yang tersedia. Dalam melakukan optimalisasi digunakan dua buah modul untuk melakukan proses. Adapun dua modul tersebut adalah sebagai berikut.
3.1. Modul Pemesanan Kontainer
Modul ini digunakan untuk pemesanan kontainer yang akan digunakan untuk mengirim muatan pelanggan. Pada modul ini user hanya perlu memilih kontainer yang dipakai untuk mengirim serta memilih tanggal pengiriman. Daftar kontainer ini disediakan
berdasarkan data yang tersimpan di basis data kontainer yang berstatus aktif. Jika user telah selesai memilih user harus menekan tombol lanjut agar user dibawa pada modul selanjutnya. Data yang dimasukkan nantinya akan disimpan pada tabel pemesanan.
Gambar 4 Pemesanan kontainer
3.2. Modul Pemilihan Barang
Setelah memilih kontainer yang ingin digunakan, user harus memilih pelanggan yang memesan pengiriman muatan, muatan yang ingin dikirim, jumlah muatan yang ingin dikirim, serta kota muatan tersebut dikirim. Data yang telah dimasukkan oleh user.
Gambar 5 Modul Pemilihan Barang
4. Hasil Pengujian
Dilakukan beberapa kali percobaan untuk mendapatkan hasil yang optimal. Adapun percobaan yang dilakukan sebanyak 10 kali dengan menggunakan computer yang berbasis Windows seven dengan menggunakan RAM 2048 Mbytes dan 1.6GHz.
Dalam melakukan percobaan, dilakukan percobaan sebanyak 10 kali. Dengan hasil tampilan 3 dimensi yang dihasilkan dari aplikasi ini, sebagai berikut :
Selain Tampilan visualisasi, diberikan juga report hasil optimalisasi
Dilakukan 10 kali percobaan dataasli dan 2 kali percobaan data asli perusahaan untuk melihat hasil dari tahap constructive dan improvementmemiliki hasil pengolahan yang dapat menghasilkan sisa volume kontainer seminimal mungkin. Hasil tersebut dapat dilihat pada table 1 dan table 2.
Melihat data hasil percobaan 12 kali tersebut, dapat diperlihatkan bahwa semakin besar jumlah muatan yang dimasukkan maka semakin lama waktu proses yang dibutuhkan serta menghasilkan sisa volume kontainer yang seminimal mungkin dengan nilai fitness yang semakin besar. Pada aplikasi ini disediakan pengiriman muatan ke berbagai kota namun aplikasi ini masih belum dapat memisahkan muatan-muatan yang sama ke beberapa kota yang berbeda. Serta waktu proses yang dibutuhkan cukup besar untuk dapat menghasilkan optimalisasi pada jumlah muatan yang besar.
Tabel 1 Percobaan dengan menggunakan data asli
test Jumlah muatan yang ingin dimasu kkan
Tahap Constructive Tahap
Improvement Sisa Volume Kontainer Jumlah berhasi l masuk Fitnes Waktu
Proses Jumlah Fitnes Wakt u 1 500 box 500 box 12275 170 s - 36840 m 3 2 750 box 750 box 17825 188 s - 31690 m 3 3 900 box 900 box 20325 197 s - 24940 m 3 4 1000 box 1000 box 25635 215 s - 21240 m 3 5 1107 box 1107 box 27335 228 s - 27504 m 3 6 1300 box 1300 box 30165 231 s - 12840 m 3 7 1500 box 1500 box 37565 296 s - 7590 m 3 8 1575 box 1575 box 40255 328 s - 9574 m 3 9 1750 box 1750 box 44575 530 s - 5378 m 3 10 1950bo x 1950 box 50325 1137 s - 2.427 m 3
Tabel 2 Percobaan dengan menggunakan data asli perusahaan
test Jumlah muatan yang ingin dimasu kkan
Tahap Constructive Tahap
Improvement Sisa Volume Kontainer Jumlah berhasil masuk Fitnes Waktu
Proses Jumlah Fitnes Waktu
1 756 box 756 box 18235 193 s - 35.747 m3 2 1963 box 1963 box 52375 1258 s - 26.980 m 3 Keterangan : s = second (detik)
4. Kesimpulan
Berdasarkan hasil pengujian yang dilakukan melalui data testing. Aplikasi ini sudah dapat digunakan dengan baik sesuai dengan fungsinya walaupun terjadi perubahan dalam tampilan rancangan awal. Adapun kelebihan dan kekurangan yang diperoleh dari penelitian ini adalah sebagai berikut :
1. Fungsi dari setiap form aplikasi sudah dapat berjalan dengan baik sesuai dengan ketentuan.
2. Tujuan dari pembuatan aplikasi telah tercapai. Hal ini terbukti melalui percobaan data testing, setiap muatan yang ingin dimasukkan berhasil dimasukkan namun ukuran setiap muatan yang dimasukkan dapat mempengaruhi sisa volume kontainer.
3. Kelemahan pada aplikasi ini ialah tujuan untuk satu macam muatan hanya memiliki tujuan pengiriman yang sama. Namun untuk beberapa macam muatan dapat memiliki tujuan yang berbeda.
4. Dalam kasus percobaan data testing, ditemukan bahwasetiap muatan yang dimasukkan berhasil diproses hanya dengan menggunakan tahap constructive dan didapatkan hasil yang optimal hanya dengan menggunakan tahap constructive.
Tabel 3 Percobaan dengan data simulasi
test Jumlah muatan yang ingin dimasu kkan
Tahap Constructive Tahap
Improvement Sisa Volume Kontainer Jumlah berhasil masuk Fitnes Waktu
Proses Jumlah Fitnes Waktu
1 350 box 350 box 150 34 s - 3.2 m 3 2 365 box 365 box 155 35 s - 2.7 m 3 3 365 box 365 box 135 30 s - 2.4 m 3 4 380 box 380 box 80 41 s 285 box 80 30 s 1.2 m 3 5 1107 box 1107 box 135 32 s 360 box 135 36 s 0.7 m 3 6 1300 box 1300 box 145 30 s 365 box 145 33 s 2.2 m 3 7 1500 box 1500 box 135 33 s 365 box 135 32 s 1.8 m 3 8 1575 box 1575 box 150 35 s - 3.5 m3 9 1750 box 1750 box 155 40 s - 3.2 m3 10 1950 box 1950 box 135 32 s - 3.3 m3
Berdasarkan Kesimpulan yang didapatkan melalui data testing, diperoleh beberapa saran antara lain: 1. Tampilan 3D pada aplikasi dapat diperbaikiSehingga
memudahkan user melihat muatan dengan baik. Kemudian kontainer yang ditampilkan dapat diputar 360o. Serta ditambahkan fitur edit sehingga user dapat mengubah penyusunan muatan secara manual. 2. Bentuk muatan yang dapat diproses dapat lebih
sifat muatan dapat lebih beragam tidak terbatas hanya pada non fragile, cair dan fragile.
3. Tujuan dari muatan dapat ditambah menjadi lebih beragam. Untuk muatan yang sama dengan jumlah yang banyak dapat memproses ke tujuan yang berbeda. Seperti seratus paket pakaian dapat dikirim ke tujuan yang berbeda-beda.
REFERENSI
[1] A. Bortfeldt, Gehring, H Smith, 1992, “A Hybrid Genetic Algorithm for Solving the Container Loading Problem”, European Journal of Operational Research Volume 131, [2] Amelia Utama, 2002, “Analisis Perancangan Algoritma
Heuristic untuk Optimalisasi Penempatan Benda pada Kontainer untuk Studi Kasus: UD. Wijaya”,Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Tarumanagara (Skripsi tidak dipublikasikan). [3] F. Parreno, J.F. Olivera, J.M. Tamarit, Valdes, R. Alvarez,
2008, “A Maximal-Space Algorithm For The Kontainer Loading Problem”, INFORMS Journal on Computing volume 20.
[4] A.Moura, J.F.Oliveira, 2005,“A GRASP approach to the Kontainer Loading Problem”. IEEE Intelegent Systems. [5] E. Aycan, T. Ayav, 2009, “Solving the Course Scheduling
Problem Using Simulated Annealing”, Advance Computing Conference.
Rosalinda, merupakan mahasiswa program Sarjana S1,
Program Studi Teknik Informatika, universitas Tarumanagara.
Lely Hiryanto, memperoleh gelar S.T. dari Universitas
Tarumanagara, Indonesia tahun 2001. Kemudian tahun 2006 memperoleh M.Sc dari Curtin University of Technology, Australia.Saat ini sebagai staf Pengajar Fakultas Teknology Informasi, Universitas Tarumanagara.
Gunadi Gan, memperoleh gelar B.Sc dan M.Sc
majoring in Operations Research dari Naval Postgraduate School, Monterey, California tahun 1983.Saat ini sebagai staf Pengajar Fakultas Teknology Informasi, Universitas Tarumanagara.