PENDEKATAN FIREFLY ALGORITHM (FA) UNTUK MENYELESAIKAN MASALAH PENGEPAKAN PERSEGI TIGA DIMENSI
SKRIPSI
DESSY PITON’S BUNGA PERTIWI
PROGRAM STUDI S-1 MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI
PEDOMAN PENGGUNAAN SKRIPSI
KATA PENGANTAR
Alhamdulillahirabbil’alamin. Segala puji syukur penulis panjatkan kepada
Allah SWT karena hanya dengan rahmat dan karunia-Nya, sehingga skripsi yang berjudul “Pendekatan Firefly Algorithm (FA) untuk Menyelesaikan Masalah Pengepakan Persegi Tiga Dimensi” ini dapat diselesaikan dengan baik. Shalawat serta salam bahagia semoga senantiasa tercurahkan kepada junjungan kita, Nabi Besar Muhammad SAW, pemimpin sekaligus sebaik-baiknya suri tauladan bagi kehidupan umat manusia.
Ucapan terima kasih disampaikan kepada :
1. Universitas Airlangga yang telah memberikan kesempatan kepada penulis untuk menuntut ilmu.
2. Badrus Zaman, S.Kom, M.Cs selaku Kepala Departemen Matematika Fakultas Sains dan Teknologi Universitas Airlangga.
3. Dr. M. Imam Utoyo, M.Si selaku Kepala Prodi Matematika Fakultas Sains dan Teknologi, sekaligus dosen wali yang senantiasa penuh kesabaran, ketelitian, keramahan, dalam memberikan bimbingan berupa ilmu, arahan, waktu, serta semangat.
5. Auli Damayanti S.Si, M. Si selaku dosen pembimbing II yang senantiasa penuh kesabaran, ketelitian, keramahan, dalam memberikan bimbingan berupa ilmu, arahan, waktu, serta semangat.
6. Dr. Eridani, Drs., M.Si dan Dr. Fatmawati, M.Si selaku dosen yang selalu memberikan semangat dan motivasi saat perkuliahan.
7. Yang Tercinta, kedua orang tua penulis, Eko Harto H. P. dan Sutrami, kedua adik penulis, Imelda Amitharia Jayanti dan Venando Aditya Putra, serta anggota keluarga lain yang selalu memberikan dukungan, perhatian, semangat, doa dan kasih sayangnya.
8. Teman-teman seperjuangan mahasiswa Matematika angkatan 2012, khususnya Qonitah Asia, Rien Recylia, Yulia Haqi, Rafika Agustina, Nindhyta, Rizky Azizia, Syahrul Fadilah, Herfinggi Ayu, Rokhana, Selva Putri, Kartika, Purani, dan masih banyak lainnya yang telah bersama selama kuliah, saling memberi semangat dan motivasi di celah-celah canda tawa.atas dukungan dan kebersamaannya selama ini.
Penulis berharap semoga skripsi ini dapat bermanfaat sebagai bahan pustaka dan penambah informasi khususnya bagi mahasiswa Universitas Airlangga. Penulis menyadari bahwa dalam penulisan skripsi ini, kemungkinan masih terdapat kekurangan sehingga saran dan kritik yang membangun sangat diharapkan untuk penulisan berikutnya.
Surabaya, 2 Agustus 2016
Dessy Piton’s Bunga Pertiwi, 2016, Pendekatan Firefly Algotirhm (FA) untuk Menyelesaikan Masalah Pengepakan Persegi Tiga Dimensi, Skripsi ini dibawah bimbingan Dr. Herry Suprajitno, M.Si dan Auli Damayanti, S.Si, M.Si.Departemen Matematika, Fakultas Sains dan Teknologi, Universitas Airlangga.
ABSTRAK
Makalah ini bertujuan untuk memecahkan masalah pengepakan persegi tiga dimensi menggunakan Firefly Algorithm (FA). Masalah pengepakan persegi tiga dimensi dapat didefinisikan sebagai penempatan sejumlah barang berbentuk persegi ke dalam suatu wadah berbentuk persegi tiga dimensi. Tujuan dari masalah ini adalah untuk meminimalkan penggunaan ruang pada wadah. Pendekatan menggunakan FA dipilih untuk menyelesaikan masalah pengepakan persegi tiga dimensi. FA sendiri terinspirasi oleh perilaku kunang-kunang. Pada FA terdapat dua masalah penting, pertama variasi intensitas cahaya, kedua perumusan daya tarik (attractiveness). Intensitas cahaya kunang-kunang akan ditentukan oleh fungsi tujuan, semakin terang intensitas cahaya kunang-kunang maka panjang wadah semakin minimum. Daya tarik sebanding dengan kecerahan, sehingga kunang-kunang dengan intensitas cahaya yang redup akan bergerak menuju kunang-kunang-kunang-kunang dengan intensitas cahaya yang lebih terang. Terdapat beberapa langkah dalam membuat program untuk menyelesaikan masalah pengepakan persegi tiga dimensi dengan pendekatan FA. Langkah pertama adalah membuat flowchart, dilanjutkan dengan membuat prosedur FA untuk menyelesaikan masalah pengepakan persegi tiga dimensi, dan yang terakhir adalah membuat program dengan menggunakan
software Borland C++. Program digunakan untuk membantu perhitungan saat jumlah tipe barang dan unit barang banyak. Terdapat tiga data yang diselesaikan dengan bantuan program, yaitu masalah pengepakan persegi tiga dimensi dengan 5 tipe barang dengan 81 unit barang, 10 tipe barang dengan 106 unit barang, dan 20 tipe barang dengan 110 unit barang. Berdasarkan hasil yang diperoleh menunjukkan bahwa semakin banyak iterasi yang dilakukan maka solusi yang diperoleh semakin baik. Menurut Yang (2010), menyelesaikan masalah menggunakan FA mempunyai solusi yang lebih baik dibandingkan dengan Genetic Algorithm dan Partical Swarm Optimization. Kemudian solusi yang diperoleh menggunakan FA lebih baik daripada hybrid Genetic Algorithm-Simulated Annealing (Putra, 2013) dan hybrid Partical Swarm Optimization-Simulated Annealing (Arasy, 2015).
Dessy Piton’s Bunga Pertiwi, 2016, Approach Firefly Algorithm (FA) for Solving Rectangular Three-Dimension Packing Problem, This theses was supervised by Dr. Herry Suprajitno, M.Si and Auli Damayanti, S.Si, M.Si, Faculty of Science and Technology, Airlangga University.
ABSTRACT
This paper aims to solve the problem of rectangular three-dimensional packing problem using Firefly Algorithm. Rectangular three-dimensional packing problem can be defined as the placement of a small item shaped like a square into one large rectangular object in three dimensions. The purpose of the problem is to minimize the use of the space of object large. Approach with FA have to solve the problem of rectangular three-dimension packing problem. Firefly Algorithm (FA) that inspired by the behavior of fireflies. In the FA, there are two important think, first the variation of light intensity, second formulation of the attractiveness. Firefly light intensity will be determined by the objective function, the brighter the light intensity of a firefly, the greater the minimum length of the object. The appeal is comparable to the brightness, so fireflies with low light intensity will move towards fireflies with higher light intensity. There are several steps in creating a program to solve the problem of rectangular three-dimension packing problem approach to the FA. The first step is to create a flowchart, followed by making the FA procedure to solve the problem of rectangular three-dimension packing problem, and the last is to make software programs using Borland C ++. The program is used to assist calculations when many of the type of item and unit of item . There are three data solved with the help of the program, the problem of rectangular three-dimension packing problem with 5 types of item and 81 units of item, 10 types of item and 106 units of item, and 20 types of item and 110 units of item. Based on the results obtained show that the more iterations performed, the obtained solution the better. According to Yang (2010), to solve the problem using the FA have a better solution than the Genetic Algorithm and Partical Swarm Optimization. Then the obtained solution using the FA better than hybrid Genetic Algorithm-Simulated Annealing (Putra, 2013) and hybrid Partical Swarm Optimization-Simulated Annealing (Arasy, 2015).
DAFTAR ISI
LEMBAR JUDUL ... i
LEMBAR PERNYATAAN ... ii
LEMBAR PENGESAHAN NASKAH SKRIPSI ... iii
PEDOMAN PENGGUNAAN SKRIPSI ... iv
SURAT PERNYATAAN TENTANG ORISINILITAS ... v
KATA PENGANTAR ... vi
ABSTRAK ... viii
ABSTRACT ... ix
DAFTAR ISI ... x
DAFTAR TABEL ... xiii
DAFTAR GAMBAR ... xiv
DAFTAR LAMPIRAN ... xv
BAB I PENDAHULUAN 1.1 Latar Belakang ... 1
1.2 Rumusan Masalah ... 3
1.3 Tujuan ... 3
1.4 Manfaat ... 4
BAB II TINJAUAN PUSTAKA 2.1 Linear Programming ... 5
2.4 Pengkodean ... 9
2.5 Firefly Algorithm ... 10
2.6 C++... 15
BAB III METODOLOGI PENELITIAN ... 17
BAB IV PEMBAHASAN 4.1 Prosedur Firefly Algorithm (FA) untuk Menyelesaikan Masalah Pengepakan Persegi Tiga Dimensi ... 22
4.1.1 Input Data dan Inisialisasi Parameter ... 24
4.1.2 Membangkitkan Populasi Awal Firefly ... 25
4.1.3 Proses Pengelompokan Barang Berdasarkan Tipe ... 26
4.1.4 Evaluasi ... 27
4.1.5 Menentukan Intensitas Cahaya Firefly... 29
4.1.6 Membandingkan Firefly ... 30
4.1.7 Menentukan Firefly Terbaik ... 32
4.1.8 Menentukan Global Best Sementara ... 32
4.1.9 Melakukan Movement Pada Firefly Terbaik ... 34
4.2 Data ... 34
4.3 Contoh Kasus Pengepakan Persegi Tiga Dimensi yang diselesaikan Secara Manual ... 35
4.3.1 Input Data dan Inisialisasi Parameter ... 36
4.3.2 Membangkitkan Populasi Awal Firefly ... 36
4.3.3 Proses Pengelompokan Barang Berdasarkan Tipe ... 37
4.3.5 Menentukan Intensitas Cahaya Firefly... 44
4.3.6 Membandingkan Firefly ... 45
4.3.7 Menentukan Firefly Terbaik ... 49
4.3.8 Menentukan Global Best Sementara ... 49
4.3.9 Melakukan Movement Pada Firefly Terbaik ... 50
4.3.10 Mengecek Maksimum Iterasi ... 51
4.4 Implementasi Program Pada Contoh Kasus Pengepakan Persegi Tiga Dimensi ... 51
4.4.1 Implementasi Program Pada Data 1 (5 Tipe Barang dan 81 Jumlah Barang) ... 52
4.4.2 Implementasi Program Pada Data 1 (10 Tipe Barang dan 106 Jumlah Barang) ... 53
4.4.3 Implementasi Program Pada Data 1 (20 Tipe Barang dan 110 Jumlah Barang) ... 55
4.5 Perbandingan Hasil Perhitungan Firefly Algorithm (FA) dengan Hibrid Algoritma PSO-SA dan Hibrid Algoritma GA-SA ... 56
BAB V PENUTUP 5. 1. Kesimpulan ... 58
5. 2. Saran ... 59
DAFTAR TABEL
No Judul Halaman
4.1 Membangkitkan Populasi Awal Firefly 36 4.2 Pengurutan Bilangan dan Pembagian dan Tipe Barang 37 4.3 Urutan Barang yang Akan Dimasukkan 38
4.4 Hasil Evaluasi Setiap Firefly 44
4.5 Intensitas Cahaya Firefly 45
4.7 Firefly Baru dan Pengurutan Berdasarkan Tipe 47 4.8 Proses Membandingkan Intensitas Cahaya Tiap Firefly 48 4.9 Populasi Baru Firefly Setelah Melakukan Movement 48
4.10 Populasi Baru 50
4.11 Hasil Running Program Pada Data 1 52 4.12 Hasil Running Program Pada Data 2 54 4.13 Hasil Running Program Pada Data 3 55 4.14 Hasil Perbandingan FAdengan Hibrid PSO-SA dan
Hibrid GA-SA
DAFTAR GAMBAR
No Judul Halaman
4.1 Prosedur FireflyAlgorithm 23
4.2 Prosedur Inisialisasi Parameter 24
4.3 Prosedur Input Data 24
4.4 Prosedur Membangkitkan Populasi Awal 25 4.5 Prosedur Pengelompokan Barang Berdasarkan Tipe 26 4.6 Prosedur Input Barang Pada wadah 27
4.7 Prosedur Cek Konstrain 2.4 28
4.8 Prosedur Cek Konstrain 2.4 28
4.9 Prosedur Menghitung Fungsi Tujuan 29 4.10 Prosedur Menghitung Intensitas Cahaya Firefly ke-i 30 4.11 Prosedur Membandingkan Intensitas Cahaya Firefly 30 4.12 Prosedur Menghitung Jarak dan Attractiviness 31
4.13 Prosedur Persamaan Movement 31
4.14 Prosedur Firefly Terbaik 32
4.15 Prosedur Menentukan Global Best 33
4.16 Prosedur Firefly Terbaik 34
4.17 Ilustrasi Penempatan Barang Pertama 38
4.18 Ilustrasi Saat Pindah Strip 39
4.19 Ilustrasi Saat Pindah Layer 42
DAFTAR LAMPIRAN
No Judul Lampiran
1 Flowchart Penyelesaian Pengepakan Persegi Tiga Dimensi Menggunakan Firefly Algorithm
2 Data Tipe, Jumlah, dan Dimensi Barang 3 Source Code Program
BAB I PENDAHULUAN 1. 1. Latar Belakang
Pada suatu industri diperlukan beberapa bentuk efisiensi dalam pelaksanaan kegiatannya. Salah satu kegiatan yang harus diefisiensikan adalah kegiatan distribusi dan penyimpanan barang berbentuk persegi tiga dimensi. Biaya yang dikeluarkan untuk kedua kegiatan tersebut berpengaruh terhadap peningkatan biaya operasional suatu industri. Oleh karena itu diperlukan solusi optimal untuk menekan biaya pendisitribusian dan penyimpanan barang yang berkaitan dengan masalah pengepakan. Dereli dan Sena (2011) mengatakan bahwa masalah pengepakan ini telah banyak diaplikasikan di beberapa industri seperti tekstil, kayu, dan kertas.
metodenya adalah hibrid GA (Genetic Algorithm) dengan SA (Simulated Annealing), hibrid PSO (Particle Swarm Optimization) dengan SA.
Pada kesempatan ini akan dilakukan penelitian terhadap pendekatan
Firefly Algorithm (FA) untuk menyelesaikan masalah pengepakan persegi tiga dimensi. Algoritma kunang-kunang atau Firefly Algorithm (FA) adalah algoritma yang memperoleh inspirasi dari cara berkedipnya kunang-kunang. Algoritma ini diperkenalkan oleh Dr Xin-she Yang di Universitas Cambridge pada tahun 2007. Menurut Yang (2010) terdapat tiga hal yang mendasari algoritma kunang-kunang. Pertama, kunang-kunang akan tertarik dengan kunang-kunang lain yang tingkat kecerahannya lebih tinggi. Kedua, kecerahan atau intensitas cahaya kunang-kunang ditentukan oleh nilai fungsi tujuan dari masalah yang diberikan. Dan ketiga, intensitas cahaya dari kunang-kunang akan berkurang seiring dengan bertambahnya jarak. Selain itu, FA dianggap lebih mengungguli dibandingkan dengan GA dan PSO.
1. 2. Rumusan Masalah
Berdasarkan latar belakang tersebut, muncul beberapa masalah yang dirumuskan sebagai berikut :
1. Bagaimana menyelesaikan masalah pengepakan persegi tiga dimensi menggunakan pendekatan firefly algorithm (FA) ?
2. Bagaimana membuat program yang dapat digunakan untuk menyelesaikan masalah pengepakan persegi tiga dimensi menggunakan pendekatan firefly algorithm (FA) ?
3. Bagaimana mengimplementasikan program pengepakan persegi tiga dimensi menggunakan pendekatan firefly algorithm (FA) pada contoh kasus?
1. 3. Tujuan
Berdasarkan rumusan masalah tersebut, diperoleh tujuan dari penelitihan ini, yaitu :
1. Penyelesaian pengepakan persegi tiga dimensi menggunakan pendekatan firefly algorithm (FA).
2. Membuat program untuk menyelesaikan pengepakan persegi tiga dimensi menggunakan pendekatan firefly algorithm (FA).
1. 4. Manfaat
BAB II
TINJAUAN PUSTAKA
Pada bab ini akan diuraikan beberapa definisi yang digunakan pada pembahasan penerapan Firefly Algorithm (FA) pada masalah pengepakan persegi tiga dimensi.
2. 1 Linear Programming
Materi yang dibahas pada bagian ini bersumber dari Taha (1996). Pemrograman linier (LP) telah terbukti sebagai salah satu alat riset operasi yang paling efektif. Keberhasilannya berakar dari keluwesan dalam menjabarkan berbagai situasi kehidupan nyata di bidang-bidang berikut ini: industri, pertanian, transportasi, ekonomi, dan kesehatan. Pemrograman linier adalah sebuah alat deterministik, yang berarti bahwa semua parameter model diasumsikan dengan pasti.
Pada umumnya, model pemrograman linear (LP) seperti pada model riset operasi, memiliki tiga komponen dasar yaitu :
1. Menentukan variabel keputusan yang akan dicari.
2. Fungsi tujuan yang kita butuhkan untuk mengoptimalkan (memaksimalkan atau meminimalkan)
3. Kendala dengan solusi yang memenuhi batasan yang ada.
dalam format yang sama, yang disebut bentuk standar. Sifat dari bentuk ini adalah sebagai berikut:
1. Semua batasan berbetuk persamaan. 2. Semua variabel bernilai positif.
3. Fungsi tujuan dapat berupa maksimisasi atau minimisasi.
Untuk masalah maksimalisasi, solusi optimal untuk LP adalah titik di daerah layak dengan nilai fungsi tujuan terbesar. Demikian pula, untuk masalah minimalisasi, solusi optimal adalah titik di wilayah layak dengan nilai fungsi tujuan terkecil.
Masalah LP dalam bentuk standar dapat diekspresikan dalam bentuk matriks sebagai berikut:
Maksimumkan , 𝑍 = ∑𝑛𝑖=1 𝑐𝑖𝑥𝑖 (2.1)
dengan syarat kendala
(𝐴, 𝐼)𝑋 = 𝑏 (2.2)
𝑋 ≥ 0
Dimana I adalah matriks identitas berordo 𝑚𝑥𝑚 dan
banyaknya sumber daya yang tersedia untuk kegiatan 𝑖, 𝑚 adalah banyaknya jenis sumber daya, dan 𝑛 adalah banyaknya jenis kegiatan.
Fungsi tujuan diatas dapat berubah menjadi meminimumkan, dengan kendala fungsional yang dapat berganti tanda menjadi ≥ atau = sesuai dengan permasalahan akan diselesaikan.
2. 2 Pengepakan Persegi Tiga Dimensi
Pengepakan persegi tiga dimensi dapat diartikan sebagai proses penempatan sejumlah barang berbentuk kotak kedalam suatu wadah dalam bentuk persegi tiga dimensi yang bertujuan untuk meminimalkan penggunaan ruang dalam wadah yang terpakai.
(Bortfeldt dan Gehring 2001) Pada masalah pengepakan persegi tiga dimensi terdapat 𝑛 barang yang memiliki panjang, lebar, dan tinggi, serta wadah yang memiliki tinggi (H) yang tetap dan lebar (W) yang tetap. Baranng tersebut ditempatkan pada wadah secara baik dan efektif sehingga dapat mengoptimalkan fungsi tujuan yang diberikan.
Menurut Dereli dan Sena (2011), masalah pengepakan dapat diselesaikan dengan asumsi sebagai berikut :
1. Produk berbentuk kotak persegi panjang didefinisikan dengan dimensi panjang, lebar, dan tinggi yang diketahui.
2. Kotak dapat diputar.
3. Setiap kotak dapat ditumpuk diatas kotak yang lain.
Fungsi tujuan pada masalah pengepakan adalah meminimalkan ruang kosong pada wadah saat semua barang dimasukkan ke dalam wadah.
Secara matematis permasalahan ini dideskripsikan sebagai berikut : 𝑀𝑒𝑚𝑖𝑛𝑖𝑚𝑢𝑚𝑘𝑎𝑛, 𝑍 = ∑𝐾𝑘=1𝑑𝑘 (2.3) Dengan Kendala,
∑𝑛𝑖=1𝑃𝑖𝑗𝑘 ≤ 𝑊 (2.4)
𝑟𝑖𝑗𝑘 + ∑𝑗−1𝑖=1ℎ𝑖𝑘 ≤ 𝐻, (2.5)
𝑖 = 1,2, … , 𝑛, 𝑗 = 1,2, … , 𝐽, 𝑘 = 1,2, … , 𝐾
Keterangan
𝑑𝑘 = tebal layer ke-k
𝑃𝑖𝑗𝑘 = panjang barang ke-i pada strip ke-j layer ke-k 𝑊 = lebar wadah
𝑟𝑖𝑗𝑘 = tinggi barang ke-i pada strip ke-j layer ke-k ℎ𝑖𝑘 = tinggi strip barang ke-i layer ke-k
H = tinggi wadah
J = banyaknya strip yang terbentuk pada wadah n = banyaknya barang yang akan dimasukkan
(Imahori et al, 2007) 2. 3 Algoritma
Algoritma adalah sebuah strategi yang mengandalkan kemampuan berpikir secara logis untuk memecahkan suatu masalah. Dalam algoritma, dimulai dengan berpikir apa yang dimiliki (kekuatan dan kelemahan), selanjutnya akan diatur langkah agar tujuan yang diharapkan terwujud.
(Wahyudi, 2004) Secara informal, algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang mengambil beberapa nilai, atau himpunan nilai, sebagai masukan dan menghasilkan beberapa nilai, atau himpunan nilai sebagai output. Sebuah algoritma adalah urutan langkah-langkah komputasi yang mengubah input ke output.
(Cormen et al, 2001) 2. 4 Pengkodean
1. Pengkodean biner
Dalam pengkodean biner, setiap solusi adalah rangkaian dari 0 atau 1. 2. Pengkodean nilai
Dalam pengkodean nilai, setiap solusi adalah rangkaian dari beberapa nilai. Nilai tersebut adalah nilai apapun yang dapat dihubungkan ke permasalahan, dari angka, bilangan real atau huruf hingga beberapa objek yang rumit.
3. Pengkodean permutasi
Dalam pengkodean permutasi, setiap solusi adalah rangkaian dari angka, dimana menggambarkan angka dalam suatu barisan.
2. 5 Firefly Algorithm
Algoritma Firefly (FA) pertama kali dikembangkan oleh Xin-She Yang pada akhir tahun 2007 dan 2008 di Cambridge University, yang didasarkan pada pola berkedip dan perilaku kunang-kunang. Menurut Xin Yang (2010), FA menggunakan tiga aturan yang dianggap ideal, yakni :
1. Kunang bersifat unisex, sehingga satu kunang-kunang dapat tertarik dengan kunang-kunang lain tanpa melihat jenis kelamin.
akan mendekati kunang-kunang yang lebih terang. Jika dari kedua kunang-kunang tidak ada yang lebih terang maka kunang-kunang akan bergerak secara acak.
3. Kecerahan pada kunang-kunang akan ditentukan oleh fungsi tujuan dari masalah yang diberikan.
Berikut ini beberapa istilah yang digunakan dalam Firefly Algorithm (FA) dan definisinya menurut Yang (2010) :
Definisi 2.1 Populasi adalah sebuah kumpulan solusi yang direprentasikan dengan kunang-kunang (firefly)
Definisi 2.2 Firefly adalah individu dalam populasi yang terdiri dari kumpulan kode yang merepresentasikan solusi dari permasalahan.
Definisi 2.3 Intensitas cahaya adalah nilai atau ukuran untuk mengevaluasi firefly.
Definisi 2.4 Atractiveness adalah daya tarik seekor kunang-kunang yang dinilai oleh kunang-kunang lainnya berdasarkan intensitas cahayanya.
Definisi 2.5 Distance adalah jarak antar dua firefly.
2.5.1 Intensitas cahaya
Dalam algoritma FA, terdapat dua masalah penting yaitu variasi intensitas cahaya dan perumusan atractiveness. Kecerahan pada kunang-kunang akan ditentukan oleh fungsi tujuan dan atractiveness sebanding dengan kecerahan, dengan demikian untuk setiap dua kunang-kunang yang berkedip, kunang-kunang dengan cahaya yang kurang terang akan bergerak ke arah kunang-kunang yang cahanya lebih cerah.
Intensitas cahaya pada kunang-kunang dipengaruhi oleh fungsi tujuan. Tingkat intensitas cahaya untuk masalah meminimumkan sebuah kunang-kunang 𝑥 dapat dilihat sebagai 𝐼(𝑥) = 1
𝑓(𝑥). Nilai 𝐼(𝑥) merupakan tingkat intensitas cahaya pada kunang-kunang 𝑥 yang berbanding terbalik terhadap solusi fungsi tujuan permasalahan yang akan dicari 𝑓(𝑥).
Atractiveness 𝛽 bernilai relatif, karena intensitas cahaya harus dilihat dan dinilai oleh kunang-kunang lain. Dengan demikian, hasil penilaian akan berbeda tergatung dari jarak antara kunang-kunang yang satu dengan yang lainnya 𝑟𝑖𝑗. Selain itu, intensitas cahaya akan menurun dari sumbernya dikarenakan terserap oleh media, misalnya udara. Sehingga dapat ditentukan atractiveness (𝛽) dengan jarak 𝑟 sebagai berikut :
𝛽 = 𝛽0𝑒−𝛾𝑟2 (2.6)
2.5.2 Distance
Distance atau jarak antara dua kunang-kunang i dan j pada posisi 𝑥𝑖 , dan 𝑥𝑗, masing-masing adalah jarak kartesian yang dirumuskan sebagai berikut:
𝑟𝑖𝑗 = ‖𝑥𝑖− 𝑥𝑗‖ = √∑ (𝑥𝑛𝑘=1 𝑖𝑘− 𝑥𝑗𝑘)2 (2.7)
dengan 𝑥𝑖𝑘adalah komponen ke- 𝑘 dari 𝑥𝑖 pada firefly 𝑖.
(Yang, 2010) 2.5.3 Movement
Movement adalah pergerakan yang dilakukan firefly 𝑖 karena ketertarikan terhadap fireflylain 𝑗, yang intensitas cahanya lebih terang. Dengan adanya movement, maka posisi firefly atau solusi dari firefly
tersebut akan berubah sesuai rumus berikut :
𝑥𝑖_𝑛𝑒𝑤𝑘 = 𝑥𝑖_𝑙𝑎𝑚𝑎𝑘 + 𝛽0 𝑒−𝛾𝑟2(𝑥𝑗𝑘𝑙𝑎𝑚𝑎 − 𝑥𝑖𝑘𝑙𝑎𝑚𝑎) + 𝛼 (𝑟𝑎𝑛𝑑 − 1
2) (2.8) dengan suku pertama merupakan posisi lama dari 𝑓𝑖𝑟𝑒𝑓𝑙𝑦, suku kedua terjadi karena ketertarikan, suku ketiga adalah pergerakan random firefly dengan 𝛼 adalah koefisien parameter random dan 𝑟𝑎𝑛𝑑 adalah bilangan real random pada interval [0,1]. Pada sebagian besar implementasi Firefly Algorithm menggunakan 𝛽0 = 1, 𝛼 ∈ [0,1] dan 𝛾 ∈ [0, ∞)
2.5.4 Proses Firefly Algorithm
Menurut Yang (2014), Firefly Algorithm dijalankan dengan cara sebagai berikut :
1. Inisialisasi parameter Firefly Algorithm.
2. Membangkitkan secara random populasi awal sebanyak 𝑚 firefly. Hitung intensitas cahaya tiap firefly 𝐼(𝑥) berdasarkan nilai fungsi tujuan 𝑓(𝑥).
3. Membandingkan intensitas cahaya tiap firefly dengan firefly
lainnya. Apabila terdapat firefly yang intensitas cahayanya lebih besar, akan dilakukan update pergeraka firefly menggunakan persamaan movement (2.5).
4. Menentukan G-best. Untuk iterasi pertama, firefly terbaik (firefly
dengan intensitas cahaya terbesar) adalah G-best.
5. Membandingkan firefly terbaik tiap iterasi denngan G-best yang diperoleh. Apabila intensitas cahaya firefly terbaik saat itu lebih besar daripada G-best maka firefly tersebut menjadi G-best.
6. Melakukan movement dengan persamaan
𝑥𝑖_𝑛𝑒𝑤𝑘 = 𝑥𝑖_𝑙𝑎𝑚𝑎𝑘 + 𝛼 (𝑟𝑎𝑛𝑑 −12) (2.9) kepada firefly terbaik dan menggabungkannya dengan firefly yang lain untuk menjadi populasi awal pada iterasi selanjutnya.
2. 6 Program C++
Materi yang dibahas pada bagian ini bersumber dari Abdul Kadir (2013). Pemograman C++ merupakan bahasa pemograman yang berlandaskan bahasa C. Bahasa C adalah pemrograman terstuktur yang membagi program dalam bentuk sejumlah blok, sehingga dapat mempermudah dalam pembuatan dan pengembangan program. Bahasa C diciptakan pada tahun 1972 oleh Brian W. Kernighan dan Dennis M. Ritche. Satu dekade kemudian, Bjarne Stroustrup, menciptakan C++ sehingga bahasa C++ lebih bersifat kompatible. Nama C++ sendiri diberikan oleh Rick Mascitti pada musim panas 1983.
C++ mendukung Pemograman Berorientasi Objek (PBO). Kebanyakan pakar setuju bahwa PBO dan C++ dapat mengurangi kekompleksitasan, terutama pada program yang terdiri dari 10.000 baris atau lebih. Greg Perry (1993) mengutip ungkapan para pelopor industri C++ yang pada intinya menyatakan C++ dapat meningkatkan produktivitas pemogram lebih dari dua kali dibanding bahasa prosedural seperti C, Pascal, Basic. Hal ini didasarkan pada kenyataan bahwa kode yang ditulis pada C++ lebih mudah untuk digunakan kembali pada program-program lain.
Program C++ dapat ditulis menggunakan sebarang editor teks, seperti EDIT (milik DOS), Workstar, slidekick ataupun menggunakan editor bawaan dari compiler. Program C++ biasa ditulis dengan nama ekstensi .CPP (dari kata c plus-plus). Agar program ini bisa dijalankan atau dieksekusi, program harus dikompilasi lebih dahulu dengan menggunakan compiler C++. Pada saat pengkompilasian, program sumber (.C++) bersama fiele-file header (berekstensi .H atau .HPP) akan diterjemahkan compiler C++dalam bentuk onyek (.OBT). file obyek ini berupa file dalam format biner (berkode 0 dan 1). Selanjutnya file obyek ini bersama-sama dengan file obyek lain serta file pustaka (.LIB) dikaitkan menjadi satu oleh linker. Hasilnya berupa file yang bisa dijalankan dari sistem operan secara langsung.
BAB III
METODE PENELITIAN
Untuk menyelesaikan masalah pengepakan persegi tiga dimensi dengan menggunakan pendekatan firefly algorithm (FA) diperlukan langkah-langkah sebagai berikut :
1. Melakukan Studi pustaka tentang pengepakan persegi tiga dimensi berbentuk kotak, dan firefly algorithm (FA).
2. Menginputkan banyaknya tipe barang (l) berdasarkan tinggi (t), lebar (q) dan panjang (p) barang, kemudian banyaknya barang (n), lebar wadah (W) dan tinggi wadah (H).
3. Menerapkan Firefly Algorithm (FA) dalam masalah pengepakan persegi tiga dimensi dengan prosedur seperti berikut :
A. Menginisialisasi parameter yang akan digunakan, seperti banyaknya firefly (m), koefisien parameter random 𝛼, keatraktifan
pada saat awal 𝛽0, koefisien penyerapan cahaya pada medium 𝛾, dan maksimum iterasi yang diinginkan (MaxIterasi).
masing-C. Mengevaluasi masing-masing firefly dengan cara sebagai berikut : i. Mengurutkan elemen firefly (tanpa mengubah urutan
kolom) sesuai dengan tipe barang yang digunakan.
ii. Membentuk alur barang yang akan dimasukkan terlebih dahulu kedalam wadah. Barang pertama yang dimasukkan akan diletakkan di ujung kiri bawah wadah, dengan tinggi barang sejajar dengan tinggi wadah, panjang barang sejajar dengan lebar wadah, dan lebar barang sejajar dengan panjang wadah. Saat barang pertama dimasukkan, terdapat ruang kosong yang terletak diatas, disamping, dan didepan barang pertama. Kemudian barang selanjutnya akan diletakkan di depan barang sebelumnya. Hal tersebut dilakukan terus hingga terbentuk strip pertama, dengan tinggi strip ℎ𝑘 = max {𝑟𝑖𝑘}. Jika panjang semua barang
iii. Menghitung fungsi tujuan yaitu jumlah total dari lebar layer yang terbentuk.
iv. Menghitung intensitas cahaya untuk masing-masing firefly
dengan rumusan 𝐼(𝑥) =𝑓(𝑥)1 .
D. Membandingkan intensitas cahaya firefly i dengan firefly j,
seperti berikut :
i. Jika intensitas cahaya firefly i lebih besar dari firefly j,
maka ulangi langkah ini dengan 𝑗 = 𝑗 + 1.
ii. Jika intensitas cahaya fireflyi lebih kecil dari firefly j, maka akan dihitung jarak firefly i ke firefly j sesuai dengan
persamaan (2.4). Kemudian menghitung attractiveness (𝛽)
dan melakukan movement dari firefly i ke firefly j.
E. Ulangi langkah D dengan 𝑗 = 𝑗 + 1 hingga semua firefly
dibandingkan.
F. Menetukan firefly terbaik yakni firefly dengan intensitas cahaya yang paling besar.
pada dengan g-best. Jika intensitas cahaya firefly terbaik lebih besar daripada intensitas cahaya g-best maka firefly tersebut akan menjadi g-best.
H. Menyimpan g-best sebagai calon solusi terbaik.
I. Melakukan movement pada firefly terbaik dengan persamaan
𝑥𝑖𝑘𝑛𝑒𝑤 = 𝑥𝑖𝑘𝑙𝑎𝑚𝑎 + 𝛼 (𝑟𝑎𝑛𝑑 − 1 2)
Hasil dari movement akan menjadi populasi awal pada iterasi selanjutnya.
J. Ulangi langkah D sampai G hingga maksimum iterasi tercapai. K. Membandingkan intensitas cahaya g-best dengan hasil movement
firefly terbaik di akhir iterasi (𝑥𝑖_𝑏𝑎𝑟𝑢). Jika I(g-best) < I(𝑥𝑖_𝑏𝑎𝑟𝑢),
maka g-best= 𝑥𝑖_𝑏𝑎𝑟𝑢. Sehingga diperoleh solusi dari g-best.
4. Membuat program dari prosedur yang telah dijelaskan sebelumnya. 5. Mengimplementasikan program pada contoh kasus.
BAB IV PEMBAHASAN
Pada bab ini akan dijelaskan penggunaan Firefly Algorithm (FA) untuk menyelesaikan masalah pengepakan persegi tiga dimensi.
4. 1. Prosedur Firefly Algorithm (FA) untuk Menyelesaikan Masalah Pengepakan Persegi Tiga Dimensi
sebaliknya. Prosedur Firefly Algorithm untuk menyelesaikan masalah pengepakan persegi tiga dimensi disajikan pada Gambar 4.1.
Prosedur Firefly Algorithm
Begin
inisialisasi parameter();
input data();
bangkitkan populasi awal firefly();
pengurutan data();
hitung fungsi tujuan();
hitung intensitas cahaya setiap firefly();
While (𝑡 < 𝑚𝑎𝑘𝑠_𝑖𝑡𝑒𝑟𝑎𝑠𝑖)
For 𝑖 ← 1 to banyak firefly For 𝑗 ← 1 to banyak firefly If (𝐼(𝑥𝑖) < 𝐼(𝑥𝑗))
lakukan movement pada 𝑥𝑖();
hitung fungsi tujuan();
update intensitas cahaya;
End if
End for 𝑗 End for 𝑖
tentukan firefly terbaik();
tentukan global best sementara();
lakukan movement random pada firefly terbaik();
End while
tentukan 𝑔 − 𝑏𝑒𝑠𝑡;
End
Gambar 4.1. Prosedur Firefly Algorithm
Prosedur Firefly Algorithm selengkapnya akan dijelaskan pada sub bab berikut ini.
4.1.1 Input Data dan Inisialisasi Parameter
Langkah pertama dari FA adalah inisialisasi parameter. Prosedur utuk inisialisasi parameter disajikan pada Gambar 4.2.
Prosedur inisialisasi parameter
Begin
m ← jumlah populasi awal fireflies ;
maks_iterasi ← jumlah iterasi ;
𝛼 ← koefisien parameter random;
𝛽0← koefisien ketraktifan awal ;
𝛾 ← koefisien penyerapan cahaya oleh udara ;
End
Gambar 4.2. Prosedur Inisialisasi Parameter
Langkah selanjutnya adalah memasukkan data berupa ukuran barang untuk setiap tipe dan ukuran wadah. Prosedur utuk input data disajikan pada Gambar 4.3.
Prosedur input data
Begin
For i ← 1 𝑡𝑜 𝑗𝑢𝑚𝑙𝑎ℎ 𝑡𝑖𝑝𝑒 For 𝑦 ← 1 𝑡𝑜 𝑑𝑖𝑚𝑒𝑛𝑠𝑖
𝐷𝑖𝑦← membaca ukuran barang ;
𝑃 ← ambil panjang barang ;
𝑑 ← ambil lebar barang ;
𝑟 ← ambil tinggi barang ;
End for 𝑦 End for 𝑖 End
Gambar 4.3. Prosedur Input Data
4.1.2 Membangkitkan Populasi Awal Firefly
Pembangkitan populasi awal firefly akan dilakukan sebanyak m
firefly. Setiap firefly mempunyai banyak elemen sesuai dengan banyaknya barang yang akan dimasukkan. Pembangkitkan elemen firefly dilakukan dengan cara membangkitkan secara acak bilangan real pada interval [0,1]. Prosedur untuk membangkitkan populasai awal firefly disajukan pada Gambar 4.4.
Prosedur membangkitkan populasi awal firefly
Begin
For p ← 1 𝑡𝑜 𝑚 For u ← 1 𝑡𝑜 𝑛
𝑟 ← 𝑟𝑎𝑛𝑑%1000 ; 𝑅 ← 0.001 ∗ 𝑟 ;
𝐷𝑅𝑘𝑢 ← 𝑅 ; End for u End for p End
Gambar 4.4. Prosedur Membangkitkan Populasi Awal
4.1.3Proses Pengelompokan Barang Berdasarkan Tipe
Prosedur pengelompokan barang berdasarkan tipe
Begin
berdasarkan tipe barang. Prosedur pengelompokan barang berdasarkan tipe disajikan pada Gambar 4.5.
Pertama yang dilakukan adalah melakukan pengurutan elemen firefly
ke-𝑝 dan komponen barang ke-𝑢 yang disimbolkan dengan 𝑅𝑝𝑢. Selanjutnya, jika 𝐷𝑅𝑝𝑢 = 𝑅𝑝𝑢 maka kita memperoleh 𝐷𝑈𝑝𝑢 = 𝑢, dengan 𝐷𝑈 adalah symbol dari data yang digunakan pada tahap selanjutnya. Setelah itu 𝐷𝑈 dimodifikasi sedemikian hingga sesuai dengan tipe barang. 4.1.4Evaluasi
Pada tahap ini akan dihitung fungsi tujuan setiap firefly dengan menggunakan aturan fungsi tujuan (2.3). Langkah pertama adalah memasukkan barang sesuai dengan urutan pada setiap firefly. Prosedur input barang disajikan pada Gambar 4.6.
G a m
bar 4.6. Prosedur Input Barang Pada Wadah
Barang yang dimasukkan ke dalam wadah tidak melalui proses perputaran balik secara vertikal maupun horizontal. Makna dari 𝐵𝑠𝑡 adalah barang yang berada di strip ke-𝑠 layer ke- 𝑡. 𝐽 adalah banyaknya strip yang terbentuk dalam suatu layer dan 𝐾 adalah banyaknya layer yang terbentuk pada wadah. Strip akan membagi tinggi wadah menjadi beberapa bagian
Prosedur input barang pada wadah Begin
For 𝑠 ← 1 𝑡𝑜 𝐽 For t ← 1 𝑡𝑜 𝐾
𝐵
𝑠𝑡 ← input barang ;
dan layer akan membagi panjang wadah menjadi beberapa bagian. Setiap barang yang dimasukkan ke dalam wadah akan melalui tahap pengecekan konstrain (2.4) dan (2.5). Prosedur cek konstrain (2.4) disajikan pada Gambar 4.7.
Prosedur Cek Konstrain 2.4 (pindah strip)
Begin
If (Panjang total > lebar wadah)
𝐵𝑠𝑡 ← pindah strip ; s++ ;
Panjang total ← P ;
End if End
Gambar 4.7. Prosedur Cek Konstrain 2.4
Jika panjang total dari barang yang telah dimasukkan lebih besar dari lebar wadah, maka dilakukan pindah strip. Panjang total sementara untuk suatu strip adalah panjang barang yang menyebabkan terbentuknya strip baru. Setelah melakukan pengecekan pada konstrain (2.4) langkah selanjutnya adalah melakukan pengecekan pada konstrain (2.5). prosedur cek konstrain (2.5) disajikan pada Gambar 4.8.
Prosedur Cek Konstrain 2.5 (pindah layer)
Begin
For 𝑠 ← 1 𝑡𝑜 𝐽
For 𝑡 ← 1 𝑡𝑜 𝐾
If (Tinggi srip > tinggi wadah)
𝐵𝑠𝑡 ← pindah layer ;
𝑡++ ;
End if 𝐵𝑠𝑡 ← 𝑟 ;
End for 𝑡
End for 𝑠
Jika tinggi strip yang telah terbentuk lebih besar dari wadah, maka akan dilakukan pindah layer yang disimbolkan dengan t++. Tinggi strip pertama pada layer selanjutnya merupakan tinggi barang (r) pada layer sebelumnya yang menyebabkan terjadinya pindah layer. Saat pindah layer maka dapat diketahui tebal pada layer sebelumnya. Prosedur menghitung fungsi tujuan disajikan pada Gambar 4.9.
Prosedur Menghitung Fungsi Tujuan
Begin
For 𝑝 ← 1 𝑡𝑜 𝑚
f(𝑥𝑝) ← 𝑆𝑈𝑀 𝑑(1, 𝐾) ;
End for 𝑝 End
Gambar 4.9. Prosedur Menghitung Fungsi Tujuan
Setelah semua barang sudah dimasukkan ke dalam wadah, maka telah terbentuk beberapa layer yang masing-masing memiliki lebar. Dengan demikian diperoleh fungsi tujuan dengan menjumlahkan lebar layer yang telah terbentuk.
4.1.5Menentukan Intensitas Cahaya Firefly
Prosedur Menghitung Intensitas Cahaya firefly Ke-i
Begin
𝐼𝐶𝑝 ← 𝑝𝑜𝑤(𝑓(𝐶𝑝), −1) ; End
Gambar 4.10. Prosedur Menghitung Intensitas Cahaya firefly ke-i
Intensitas cahaya (𝐼𝐶𝑝) yang diperoleh dengan rumus 𝑓𝑢𝑛𝑔𝑠𝑖 𝑡𝑢𝑗𝑢𝑎𝑛1 merupakan indikator baik buruknya suatu firefly p. Jika suatu firefly
memiliki intensitas cahaya paling tinggi dibandingkan firefly lainnya, maka dapat dikatakan bahwa firefly tersebut adalah solusi terbaik.
4.1.6Membandingkan Firefly
Pada tahap ini nilai intensitas cahaya pada firefly yang akan dibandingkan untuk memperoleh firefly terbaik. Prosedur untuk membandingkan intensitas cahaya disajikan pada Gambar 4.11.
Prosedur Membandingkan Intensitas Cahaya firefly
Begin
For p ← 1 𝑡𝑜 𝑚 For q ← 1 𝑡𝑜 𝑚 If (𝐼𝐶𝑝 < 𝐼𝐶𝑞 )
firefly p bergerak menuju firefly q ;
End if
End for q End for p End
Gambar 4.11. Prosedur Membandingkan Intensitas Cahaya Firefly
attractiveness. Prosedur untuk menghitung jarak dan attractiveness
disajikan pada Gambar 4.12.
Prosedur Menghitung Jarak dan Attractiveness
Gambar 4.12. Prosedur Menghitung Jarak dan Attractiveness
Setelah menghitung jarak dan attractiveness, selanjutnya adalah melakukan movement ke firefly 𝑞. Sehingga diperoleh solusi baru untuk setiap firefly. Prosedur untuk movement disajikan pada Gambar 4.13.
Prosedur Persamaan Movement
Gambar 4.13. Prosedur Persamaan Movement
4.1.7Menentukan Firefly terbaik
Prosedur Firefly Terbaik
Begin
𝑏𝑒𝑠𝑡 ← 𝐼𝐶1 ;
For 𝑝 ← 2 𝑡𝑜 𝑚 If (𝑏𝑒𝑠𝑡 < 𝐼𝐶𝑝 ) 𝑏𝑒𝑠𝑡 ← 𝐼𝐶𝑝;
End if End for 𝑝 End
Gambar 4.14. Prosedur Firefly Terbaik
Setelah membandingkan intensitas cahaya tiap firefly, langkah selanjutnya adalah menentukan firefly dengan intensitas cahaya tertinggi. Intensitas tertinggi pada setiap iterasi ini dianggap sebagai firefly terbaik. Prosedur untuk movement disajikan pada Gambar 4.14.
4.1.8Menentukan Global best Sementara
Global best (𝑔 − best) adalah firefly yang mempunyai intensitas terbesar dari semua iterasi yang telah dilakukan. Apabila firefly terbaik pada saat itu lebih besar intensitas cahayanya daripada 𝑔 − best, maka
firefly tersebut menjadi 𝑔 − best.
Pada iterasi pertama, 𝑔 − best merupakan firefly terbaik. Sedangkan untuk iterasi selanjutnya, firefly terbaik pada iterasi tersebut akan dibandingkan dengan 𝑔 − best pada iterasi sebelumnya. Apabila firefly
best pada iterasi tersebut sama dengan 𝑔 − best pada iterasi sebelunya. Prosedur untuk menentukan 𝑔 − bestdisajikan pada Gambar 4.15.
Prosedur Menentukan Global Best
Begin
If (𝑖𝑡𝑒𝑟𝑎𝑠𝑖 = 1) 𝑖𝑑𝑔𝑏𝑒𝑠𝑡 = 𝑖𝑑𝑓𝑏𝑎𝑖𝑘; 𝑓𝑔𝑏𝑒𝑠𝑡𝒊𝒕𝒆𝒓𝒂𝒔𝒊 =f(𝑥𝑖𝑑𝑔𝑏𝑒𝑠𝑡) 𝑖𝑔𝑏𝑒𝑠𝑡𝒊𝒕𝒆𝒓𝒂𝒔𝒊= 𝐼𝐶𝑖𝑑𝑔𝑏𝑒𝑠𝑡 For 𝑢 ← 1 𝑡𝑜 𝑛
𝑔𝑏𝑒𝑠𝑡𝑓(𝑖𝑡𝑒𝑟𝑎𝑠𝑖)(𝑢)= 𝐷𝑅(𝑖𝑑𝑔𝑏𝑒𝑠𝑡)(𝑢) End for 𝑢
Else if (𝑖𝑡𝑒𝑟𝑎𝑠𝑖 > 1)
If(𝐼𝐶𝑖𝑑𝑓𝑏𝑎𝑖𝑘≥ 𝑖𝑔𝑏𝑒𝑠𝑡𝒊𝒕𝒆𝒓𝒂𝒔𝒊−𝟏)
𝑖𝑑𝑔𝑏𝑒𝑠𝑡 = 𝑖𝑑𝑓𝑏𝑎𝑖𝑘; 𝑓𝑔𝑏𝑒𝑠𝑡𝒊𝒕𝒆𝒓𝒂𝒔𝒊 =f(𝑥𝑖𝑑𝑔𝑏𝑒𝑠𝑡) 𝑖𝑔𝑏𝑒𝑠𝑡𝒊𝒕𝒆𝒓𝒂𝒔𝒊= 𝐼𝐶𝑖𝑑𝑔𝑏𝑒𝑠𝑡 For 𝑢 ← 1 𝑡𝑜 𝑛
𝑔𝑏𝑒𝑠𝑡𝑓(𝑖𝑡𝑒𝑟𝑎𝑠𝑖)(𝑢)= 𝐷𝑅(𝑖𝑑𝑔𝑏𝑒𝑠𝑡)(𝑢) End for 𝑢
Else if(𝐼𝐶𝑖𝑑𝑓𝑏𝑎𝑖𝑘≥ 𝑖𝑔𝑏𝑒𝑠𝑡𝒊𝒕𝒆𝒓𝒂𝒔𝒊−𝟏) 𝑓𝑔𝑏𝑒𝑠𝑡𝒊𝒕𝒆𝒓𝒂𝒔𝒊 =f(𝑥𝑖𝑡𝑒𝑟𝑎𝑠𝑖−1) 𝑖𝑔𝑏𝑒𝑠𝑡𝒊𝒕𝒆𝒓𝒂𝒔𝒊= 𝐼𝐶𝑖𝑡𝑒𝑟𝑎𝑠𝑖−1 For 𝑢 ← 1 𝑡𝑜 𝑛
𝑔𝑏𝑒𝑠𝑡𝑓(𝑖𝑡𝑒𝑟𝑎𝑠𝑖)(𝑢)= 𝐷𝑅(𝑖𝑡𝑒𝑟𝑎𝑠𝑖−1)(𝑢) End for 𝑢
End if End if End
Gambar 4.15. Prosedur Menentukan Global Best
Setelah mendapatkan 𝑔 − best, langkah selanjutnya adalah melakukan
movement pada firefly terbaik.
Firefly terbaik pada setiap iterasi akan melakukan pergerakan secara random. Hal ini dilakukan untuk mencari solusi lain disekitar firefly
terbaik. Prosedur untuk movement pada firefly terbaik disajikan pada Gambar 4.16.
Prosedur Firefly Terbaik
Begin
rand ← random(0,1) ;
For 𝑖𝑡𝑒𝑟𝑎𝑠𝑖 ← 1 𝑡𝑜 𝑚𝑎𝑘𝑠 𝑖𝑡𝑒𝑟𝑎𝑠𝑖 For 𝑢 ← 1 𝑡𝑜 𝑛
𝐷𝑅(𝑖𝑡𝑒𝑟𝑎𝑠𝑖)(𝑢)= 𝐷𝑅(𝑖𝑡𝑒𝑟𝑎𝑠𝑖)(𝑢) + 𝛼 ∗ (𝑟𝑎𝑛𝑑 − 0.5) ;
End for 𝑢 End for 𝑖𝑡𝑒𝑟𝑎𝑠𝑖 End
Gambar 4.16. Prosedur Firefly Terbaik
Prosedur ini akan terus dilakukan hingga mencapai maksimum iterasi.
4. 2. Data
Data yang digunakan pada skripsi ini adalah data sekunder berasal dari
OR-library oleh J. E Beasley. Pada perhitungan secara manual, data yang
diperoleh dari website
http://people.brune1.ac.uk/~mastjjb/jeb/orlib/files/wtpack2.txt dimodifikasi
Data kecil yang digunakan berisi 3 tipe barang dan 12 unit barang. Data tersebut diperoleh dari alamat website
http://people.brune1.ac.uk/~mastjjb/jeb/orlib/files/wtpack2.txt.
b. Data Sedang
Terdapat 10 tipe barang dan 106 unit barang yang digunakan pada data sedang. Data tersebut diperoleh dari alamat website
http://people.brune1.ac.uk/~mastjjb/jeb/orlib/files/wtpack4.txt
c. Data Besar
Pada data besar akan digunakan 20 tipe barang dan 110 unit barang. Data
tersebut diperoleh dari alamat website
http://people.brune1.ac.uk/~mastjjb/jeb/olib/files/wtpack7.txt.
Keseluruhan data dapat dilihat pada Lampiran 2.
4. 3. Contoh Kasus Pengepakan Persegi Tiga Dimensi yang Diselesaikan Secara Manual
Langkah-langkah yang digunakan untuk menyelesaikan masalah pengepakan persegi tiga dimensi dengan menggunakan Firefly Algorithm adalah sebagai berikut :
4.3.1 Input Data dan Inisialisasi parameter
Pertama adalah dengan menentukan pengkodean yang akan digunakan, dalam hal ini adalah pengkodean real. Kemudian akan ditentukan parameter-parameter yang akan digunakan pada proses selanjutnya. Parameter-parameter Firefly Algorthm (FA) yang akan digunakan dalam menyelesaikan contoh kasus masalah pengepakan persegi tiga dimensi secara manual, yaitu sebagai berikut : banyaknya firefly (popsize)=7, tinggi dan lebar wadah berturut-turut adalah 233 cm dan 220 cm, MaxIterasi=1, 𝛽0 = 1,𝛾 = 1, 𝛼 = 0.1.
4.3.2 Membangkitkan Populasi Awal Firefly
Tabel 4.1. Membangkitkan populasi awal firefly
Proses membangkitkan populasi awal firefly sebanyak popsize
dengan elemen setiap firefly yang terdiri atas hasil random bilangan real pada interval [0,1]. Hasil membangkitkan populasi awal firefly dengan
Firefly Random sejumlah barang
1 2 3 4 5 6 7 8 9 10 11 12
4.3.3 Pengelompokan Barang Berdasarkan Tipe
Setelah membangkitkan populasi dengan merandom bilangan real sebanyak jumlah barang, langkah selanjutnya adalah mengurutkan bilangan yang diperoleh secara acak tersebut. Setelah bilangan tersebut diurutkan, selanjutnya adalah membagi jumlah barang berdasarkan tipe. Diketahui barang tipe satu berjumlah empat, barang tipe dua berjumlah lima, dan barang tipe tiga berjumlah tiga. Oleh karena itu bilangan dengan urutan 1-4 akan menjadi barang tipe satu, bilangan dengan urutan 5-9 akan menjadi barang tipe dua, dan bilangan dengan urutan 10-12 akan menjadi barang dengan tipe tiga. Pengurutan bilangan yang diperoleh secara acak dan pembagian tipe barang akan disajikan dalam Tabel 4.2.
Tabel 4.2. Pengurutan Bilangan dan Pembagian Tipe Barang
Proses tersebut dilakukan kepada semua firefly dengan cara yang sama. Sehingga diperoleh urutan barang yang akan dimasukkan ke dalam wadah yang disajikan pada Tabel 4.3.
Firefly Random sejumlah barang
1 2 3 4 5 6 7 8 9 0 11 12
𝑥1
Populasi
awal 0.3 0.31 0.1 0.5 0.12 0.2 0.22 0.71 0.35 0.41 0.43 0.88 Pengurutan
Bilangan 5 6 1 10 2 3 4 11 7 8 9 12
Urutan Barang Berdasarkan
Tipe
2 2 1 3 1 1 1 3 2 2 2 3
Firefly Random sejumlah barang
T a b e l 4
.3. Urutan Barang yang Akan Dimasukkan
Dari data tersebut akan diperoleh nilai fungsi tujuan pada setiap firefly.
4.3.4 Evaluasi Firefly
Pada tahap ini akan dihitung fungsi tujuan dari masing-masing individu. Nilai fungsi tujuan diperoleh setelah malalui proses penempatan barang sesuai dengan urutan barang yang akan dimasukkan. proses evaluasi akan diuraikan sebagai berikut :
Misalnya pada firefly-1 (𝑥1) : 2 2 1 3 1 1 1 3 2 2 2 3
1. Barang pertama adalah barang type 2 yang akan diletakkan di sudut kiri bawah wadah yaitu pada strip ke-1 layer ke-1,
ℎ1 = 𝑟1 = 20
𝑑1 = 𝑞1 = 52
2. Barang kedua adalah barang type 2. a. [cek konstrain 2.5]
𝑝111+ 𝑝211 = 120 + 120 = 240 > 233 (W) → pindah strip
b. [cek konstrain 2.6]
𝑟121+ ℎ1 = 20 + 20 = 40 < 220 (H) ℎ2= 𝑟221= 20
𝑑1= maks (𝑞111, 𝑞221) = maks (52,52) = 52
Barang kedua diletakkan pada strip ke-2 dan layer ke-1
3. Barang ketiga adalah barang type 1. a. [cek konstrain 2.5]
b. [cek konstrain 2.6]
𝑟321+ ℎ1 = 54 + 20 = 74 < 220 (H) ℎ2= maks (𝑟221, 𝑟321) = maks (20,54) = 54 𝑑1 = maks (52,52,59) = 59
Barang ketiga diletakkan pada strip ke-2 dan layer ke-1 4. Barang keempat adalah barang type 3.
a. [cek konstrain 2.5]
𝑝221+ 𝑝321+𝑝421 = 120 + 78 + 100 = 298 > 233 (𝑊) → pindah strip
b. [cek konstrain 2.6]
𝑟431+ ℎ1+ ℎ2 = 54 + 20 + 54 = 128 < 220 (H) ℎ3 = 𝑟431=54
𝑑1= maks (52,52,59,67) = 67
Barang keempat diletakkan pada strip ke-3 dan layer ke-1 5. Barang kelima adalah barang type 1.
a. [cek konstrain 2.5]
𝑝431 + 𝑝531 = 100 + 78 = 178 < 233 (W) b. [cek konstrain 2.6]
𝑟531+ ℎ1+ ℎ2 = 54 + 20 + 54 = 128 < 220 (H) ℎ3 = maks (54,54) = 54
𝑑1= maks (52,52,59,67,59) = 67
a. [cek konstrain 2.5]
𝑝431 + 𝑝531+ 𝑝631 = 100 + 78 + 78 = 256 > 233 (W) → pindah strip
b. [cek konstrain 2.6]
𝑟641+ ℎ1+ ℎ2+ ℎ3 = 54 + 20 + 54 + 54 = 182 < 220 (H) ℎ4= 𝑟641 = 54
𝑑1 = maks (52,52,59,67,59,59) = 67
Barang keenam diletakkan pada strip ke-4 dan layer ke-1 7. Barang ketujuh adalah barang type 1.
a. [cek konstrain 2.5]
𝑝641 + 𝑝741 = 78 + 78 = 156 < 233 (W) b. [cek konstrain 2.6]
𝑟741+ ℎ1+ ℎ2+ ℎ3 = 54 + 20 + 54 + 54 = 183 < 220 (H) ℎ4 = maks (54,54) = 54
𝑑1 = maks (52,52,59,67,59,59,59) = 67
Barang ketujuh diletakkan pada strip ke-4 dan layer ke-1 8. Barang kedelapan adalah barang type 3.
a. [cek konstrain 2.5]
𝑝641 + 𝑝741+ 𝑝841 = 78 + 78 + 100 = 256 > 233 (W) → pindah strip
b. [cek konstrain 2.6]
𝑟851+ ℎ1+ ℎ2+ ℎ3+ ℎ4 = 54 + 20 + 54 + 54 + 54 = 236 >
ℎ1 = 𝑟812 = 54 𝑑2= 𝑞812 = 67
Barang kedelapan diletakkan pada strip ke-1 dan layer ke-2
9. Barang kesembilan adalah barang type 2. a. [cek konstrain 2.5]
𝑝812 + 𝑝912 = 100 + 120 = 220 < 233 (W) b. [cek konstrain 2.6]
𝑟912= 20 < 220 (H) ℎ1 = maks (54,20) = 54 𝑑2= maks (67,52) = 67
Barang kesembilan diletakkan pada strip ke-1 dan layer ke-2 10.Barang kesepuluh adalah barang type 2.
a. [cek konstrain 2.5]
b. [cek konstrain 2.6]
𝑟1012+ ℎ1 = 20 + 54 = 74 < 220 (H) ℎ2 = 𝑟1012= 20
𝑑2= maks (67,52,52) = 67
Barang kesepuluh diletakkan pada strip ke-2 dan layer ke-2 11.Barang kesebelas adalah barang type 2.
a. [cek konstrain 2.5]
𝑝1022 + 𝑝1122 = 120 + 120 = 240 > 233(W) → pindah strip b. [cek konstrain 2.6]
𝑟1132+ ℎ1+ ℎ2 = 20 + 54 + 20 = 94 < 220 (H) ℎ3= 𝑟1132 = 20
𝑑2= maks (67,52,52,52) = 67
Barang kesebelas diletakkan pada strip ke-3 dan layer ke-2 12.Barang kedua adalah barang type 3.
a. [cek konstrain 2.5]
𝑝1132+ 𝑝1232 = 120 + 100 = 220 < 233 (W) b. [cek konstrain 2.6]
𝑟1232+ ℎ1+ ℎ2 = 54 + 54 + 20 = 128 < 220 (H) ℎ3= maks (20,54) = 54
𝑑2= maks (67,52,52,5267) = 67
Setelah semua barang disusun, maka diperoleh total lebar layer yang merupakan penggunaan ruang wadah sebagai hasil penjumlahan dari lebar layer pertama (𝑑1 = 67 𝑐𝑚) dan lebar layer kedua (𝑑2 = 67 𝑐𝑚) yaitu 134 cm. Evaluasi untuk memperoleh total lebar layer akan dilakukan pada semua firefly. Hasil evaluasi selengkapnya disajikan pada Tabel 4.4.
Tabel 4.4. Hasil Evaluasi Setiap Firefly
Firefly 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7
𝑓(𝑥𝑖) 134 134 126 134 126 134 126
Hasil evaluasi ini akan menentukan intensitas cahaya firefly yang akan dilakukan pada tahap selanjutnya.
4.3.5 Menentukan Intensitas Cahaya Firefly
Intensitas cahaya pada permasalahan Pengepakan Persegi tiga dimensi berbanding terbalik dengan fungsi tujuannya karena fungsi tujuan masalah Pengepakan Persegi tiga dimensi akan diminimalkan sedangkan
intenseitas cahaya dari firefly akan dicari yang paling maksimal. Intensitas cahaya untuk masing-masing firefly dicari dengan rumus sebagai berikut :
𝐼(𝑥𝑖) =𝑓(𝑥1 𝑖)
Hasil perhitungan intensitas cahaya firefly selengkapnya akan disajikan dalam Tabel 4.5.
Tabel 4.5. Intensitas Cahaya Firefly
Firefly 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7
𝐼(𝑥𝑖) 0.0075 0.0075 0.0079 0.0075 0.0079 0.0075 0.0079
Firefly terbaik adalah firefly dengan intensitas cahaya terbesar. Dengan demikian, firefly ke-2,6,7 merupakan firefly terbaik dengan intensitas cahaya 0.0079.
4.3.6 Membandingkan Firefly
Pada langkah ini, masing-masing firefly akan dibandingkan dengan
firefly lainnya melalui intensitas cahayanya. Jika intensitas cahaya suatu
firefly lebih kecil dari pada intensitas cahaya firefly lainnya, maka firefly
tersebut akan melakukan perpindahan menuju firefly yang mempunyai intensitas lebih baik. Taedapat beberapa perhitungan saat melakukan perpindahan, yaitu attractiveness (𝛽)dan jarak antara firefly.
firefly 2. Selanjutnya firefly 1 akan dibandingkan dengan firefly 3. Karena 𝐼(𝑥1) < 𝐼(𝑥3) maka firefly 1 akan bergerak menuju firefly 3 dengan langkah sebagai berikut :
1. Menghitung distance (jarak) antara firefly 1 dan 2 untuk masing-masing elemen real pada firefly. Penghitungan jarak dirumuskan sebagai berikut:
𝑟𝑖,𝑗 = √ ∑ (𝑥𝑖𝑘− 𝑥𝑗𝑘)2 𝑗𝑢𝑚𝑙𝑎ℎ 𝑏𝑎𝑟𝑎𝑛𝑔
𝑘=1
𝑟1,2 = √∑(𝑥1𝑘− 𝑥1𝑘)2 12
𝑘=1
𝑟1,2 = √(0.3 − 0.8)2+ (0.31 − 0.23)2 + ⋯ + (0.88 − 0.6)2
𝑟1,2 = 1.307211
2. Menghitung attractiveness dengan rumusan sebagai berikut: 𝛽 = 𝛽0𝑒−𝛾𝑟2
𝛽 = 1 × 𝑒−1×1.3072112
= 0.181
3. Menghitung perpindahan firefly per elemen dengan rumusan sebagai berikut:
𝑥𝑖_𝑏𝑎𝑟𝑢𝑘 = 𝑥
𝑖_𝑙𝑎𝑚𝑎𝑘 + 𝛽0 𝑒−𝛾𝑟2(𝑥𝑗𝑘𝑙𝑎𝑚𝑎− 𝑥𝑖𝑘𝑙𝑎𝑚𝑎) + 𝛼 (𝑟𝑎𝑛𝑑 − 1 2)
𝑥1𝑘𝑏𝑎𝑟𝑢 = 𝑥𝑖_𝑙𝑎𝑚𝑎𝑘 + 0.181(𝑥2𝑘𝑙𝑎𝑚𝑎 − 𝑥1𝑘𝑙𝑎𝑚𝑎) + 0.1 (𝑟𝑎𝑛𝑑 − 1 2)
𝑥11𝑏𝑎𝑟𝑢 = 𝑥11𝑙𝑎𝑚𝑎 + 0.181(𝑥21𝑙𝑎𝑚𝑎 − 𝑥11𝑙𝑎𝑚𝑎) + 0.1 (0.42753 − 1 2)
𝑥11𝑏𝑎𝑟𝑢 = 0.3 + 0.181(0.8 − 0.3) + 0.1 (0.42753 − 1 2)
𝑥11𝑏𝑎𝑟𝑢 = 0.383294
Demikian pula untuk k=2,3,…,12, sehingga diperoleh firefly 1 yang baru dan pengurutannya disajikan pada Tabel 4.7.
Tabel 4.7. Firefly Baru dan Pengurutan Berdasarkan Tipe
Firefly Barang ke-
1 2 3 4 5 6 7 8 9 10 11 12
𝑥1
Bilangan
Real 0.23 0.48 0.46 0.29 0.22 0.07 0.32 0.51 0.18 0.15 0.28 0.47
Berdasarkan
Tipe 1 3 2 2 1 1 2 3 1 1 2 3
Kemudian menghitung fungsi tujuan baru pada firefly 1 dan menghitung intensitas cahayanya. Fungsi tujuan dapat dihitung dengan cara yang sama pada langkah 2 sehingga memperoleh total lebar layer pada wadah adalah 134 cm. Sehingga diperoleh intensitas cahaya sebagai berikut :
𝐼(𝑥1) =134 = 0.00751
Tabel 4.8. Proses Membandingkan Intensitas Cahaya Tiap Firefly
Dari proses movement akan diperoleh populasi firefly yang baru. Populasi
firefly yang baru disajikan pada Tabel 4.9.
Tabel 4.9. Populasi Baru Firefly Setelah Melakukan Movement 𝑖 = 1 𝑗 = 2 𝐼(𝑥1) = 𝐼(𝑥2) Tidak Bergerak
𝑖 = 1 𝑗 = 3 𝐼(𝑥1) < 𝐼(𝑥3)
𝑥1 lama 0.3 0.31 0.1 0.5 0.12 0.2 0.22 0.71 0.35 0.41 0.43 0.88 𝑥3 lama 0.8 0.23 0.25 0.09 0.9 0.01 0.7 0.21 0.15 0.3 0.51 0.6
𝑟 1.307
𝛽 0.181
𝑥1 baru 0.38 0.35 0.12 0.41 0.23 0.13 0.34 0.59 0.36 0.37 0.43 0.79
𝑓(𝑥1) 134
𝐼(𝑥1) 0.0075
𝑖 = 1 𝑗 = 4 𝐼(𝑥1) = 𝐼(𝑥4) Tidak Bergerak
𝑖 = 1 𝑗 = 5 𝐼(𝑥1) < 𝐼(𝑥5)
𝑥1 baru 0.38 0.35 0.12 0.41 0.23 0.13 0.34 0.59 0.36 0.37 0.43 0.79 𝑥5 lama 0.18 0.27 0.74 0.22 0.35 0.04 0.53 0.78 0.12 0.21 0.09 0.17
𝑟 1.070
𝛽 0.318
𝑥1 baru 0.31 0.31 0.31 0.34 0.26 0.09 0.4 0.65 0.23 0.24 0.38 0.66
𝑓(𝑥1) 134
𝐼(𝑥1) 0.0075
⋮
𝑖 = 7 𝑗 = 6 𝐼(𝑥7) = 𝐼(𝑥6) Tidak Bergerak
Firefly Random sejumlah barang
1 2 3 4 5 6 7 8 9 10 11 12
𝑥1 0.3 0.31 0.1 0.5 0.12 0.2 0.22 0.71 0.35 0.41 0.43 0.88
4.3.7 Menentukan Firefly Terbaik
Firefly terbaik adalah firefly dengan intensitas cahaya tertinggi pada setiap iterasi. Firefly terbaik merupakan calon solusi yang paling baik yang berarti wadah dengan panjang terkecil dibandingkan dengan firefly
lain. Dari hasil movement tersebut diperoleh bahwa intensitas cahaya tertinggi berada pada firefly 2 sampai firefly 7, dengan nilai intensitas cahayanya adalah 0.0079.
4.3.8 Mentukan Global Best Sementara
Pada iterasi pertama, Global Best (𝑔 − 𝑏𝑒𝑠𝑡) adalah firefly terbaik pada iterasi tersebut. Sedangkan untuk iterasi selanjutnya, g-best dapat dipilih berdasarkan intensitas cahaya yang paling besar antara 𝑔 − 𝑏𝑒𝑠𝑡 dengan firefly yang terbaik pada iterasi tersebut. Dari hasil movement pada iterasi pertama diperoleh 6 firefly dengan intensitas cahaya tertinggi. Oleh sebab itu dipilih firefly 2 sebagai g-best= 𝑥2 dengan urutan barang sebagai berikut :
Firefly Urutan barang
𝑥2 2 3 3 1 3 2 2 2 1 1 1 2
4.3.9 Melakukan Movement Pada Firefly Terbaik
Movement pada firefly terbaik dilakukan agar tidak terjebak pada optimum lokal dan untuk membentuk populasi firefly baru yang akan digunakan pada iterasi selanjutnya. Movement ini dilakukan dengan rumus matematika sebagai berikut.
𝑥𝑖_𝑏𝑎𝑟𝑢𝑘 = 𝑥
𝑖_𝑙𝑎𝑚𝑎𝑘 + 𝛼 (𝑟𝑎𝑛𝑑 −12)
Untuk 𝑖 = 3 dan 𝑘 = 1 diperoleh 𝑥21𝑏𝑎𝑟𝑢 = 𝑥21𝑙𝑎𝑚𝑎 + 0.1 (𝑟𝑎𝑛𝑑 −
1 2)
𝑥21𝑏𝑎𝑟𝑢 = 0.306 + 0.1 × (0.876 − 0.5) = 0.3436
Demikian juga untuk k=2,3,…,12 sehingga diperoleh 𝑥2 yang baru sebagai berikut :
𝑥2 0.34 0.45 0.54 0.09 0.47 0.29 0.40 0.25 0.08 0.13 0.2 0.41
Popuasi firefly selengkapnya disajikan pada Tabel 4.10.
Tabel 4.10. Populasi Baru
Firefly Populasi baru
𝑥1 0.3 0.31 0.1 0.5 0.12 0.2 0.22 0.71 0.35 0.41 0.43 0.88
𝑥2 0.34 0.45 0.54 0.09 0.47 0.29 0.40 0.25 0.08 0.13 0.2 0.41
𝑥3 0.8 0.23 0.25 0.09 0.9 0.01 0.7 0.21 0.15 0.3 0.51 0.6
𝑥4 0.5 0.61 0.09 0.32 0.39 0.4 0.11 0.29 0.18 0.72 0.2 0.25
𝑥5 0.18 0.27 0.74 0.22 0.35 0.04 0.53 0.78 0.12 0.21 0.09 0.17
𝑥6 0.12 0.43 0.13 0.43 0.73 0.05 0.56 0.23 0.65 0.17 0.83 0.2
4.3.10 Mengecek Maksimum Iterasi
Pada langkah ini, kriteria yang harus dipenuhi adalah pengulangan sebanyak maksimum iterasi. Karena pada proses inisialisasi dimasukkan
MaxIterasi = 1, maka iterasi pada pengerjaan manual ini telah selesai. Pada iterasi terakhir ini, akan dibandingkan antara firefly baru hasil
movement dari firefly terbaik dengan g-best. Jika I(g-best) < I(𝑥𝑖) maka
g-best yang baru adalah 𝑥𝑖. Hal ini dilakukan karena mungkin saja hasil
movement firefly terbaik memiliki intensitas cahaya yang lebih baik dari sebelumnya sehingga solusi yang didapatkan juga semakin baik.
Pada iterasi pertama, 𝐼(𝑔 − 𝑏𝑒𝑠𝑡) =0.0079 dan intensitas cahaya hasil movement 𝑥3 = 0.0079. Karena 𝐼(𝑔 − 𝑏𝑒𝑠𝑡) = 𝐼(𝑥2) maka g-best akan tetap. Sehingga 𝑔 − 𝑏𝑒𝑠𝑡 menjadi solusi dari masalah pengepakan persegi tiga dimensi.
Dengan demikian diperoleh hasil dengan Firefly Algorithm yang dilakukan sebanyak 1 iterasi, yaitu firefly yang ke-2. Oleh karena itu, pada masalah pengepakan persegi tiga dimensi diperoleh urutan barang 2 – 3 – 3 – 1 – 3 – 2 – 2 – 2 – 1 – 1 – 1 – 2 dengan total panjang layer yang digunakan adalah 126 cm.
4. 4. Implementasi Program Pada Contoh Kasus Pengepakan Persegi Tiga Dimensi
Menyelesaikan masalah pengepakan persegi tiga dimensi dengan
pada subbab sebelumnya. Namun semakin besarnya data yang digunakan mengakibatkan semakin lamanya proses perhitungan. Oleh sebab itu diperlukan bantuan program untuk memudahkan dalam mencari solusi. Program yang dimaksud menggunakan bahasa pemrograman C++ dengan menggunakan softwere Borland C++ 5.02. source code program dapat dilihat pada Lampiran 3.
Berikut ini adalah implementasi program pada beberapa jenis data, diantaranya data kecil, sedang, dan data besar.
4.4.1 Implementasi Program Pada Data 1 (5 Tipe Barang dan 81 Unit Barang)
Berikut ini solusi terbaik yang diperoleh dari data kecil (Lampiran 2) dengan menggunakan program. Parameter yang digunakan adalah 𝛽0 = 1, koefisien penyerapan cahaya (𝛾) = 1, dan jumlah firefly (m), maksimum iterasi (max_Iterasi), serta koefisien parameter random (𝛼) bervariasi. Hasil selengkapnya disajikan pada Tabel 4.11.
Tabel 4.11. Hasil Running Program Pada Data 1
Banyaknya
firefly (𝑚)
Alpha
(𝛼)
Maksimum Iterasi
10 50 100
10
0.1 837 837 819
0.5 837 837 837
0.9 837 837 837
50
0.1 837 837 837
0.5 837 837 837