• Tidak ada hasil yang ditemukan

BAB 3 PERANCANGAN DAN IMPLEMENTASI SISTEM

3.4 Tahapan Penyelesaian Masalah

3.4.3 Penggunaan Algoritma GA-BLF

Pada tahap ini dilakukan pengembangan algoritma genetika yang digabung dengan algoritma bottom-left fill. Algoritma genetika dalam hal ini digunakan untuk menentukan urutan penyusunan barang kemudian dilanjutkan ke algoritma bottom-left fill untuk dilakukan proses

penataan barang. Apabila ditemukan sebuah solusi yang memenuhi maka algoritma ini dihentikan.

3.4.3.1 Input Data Algoritma Genetika

Input dari algoritma ini berbentuk barang-barang yang akan dikirim pada sebuah tour yang telah ditentukan pada algoritma genetika untuk VRP.

3.4.3.2 Parameter Algoritma Genetika, Struktur Data Kromosom dan Nilai Fitness

Dalam algoritma genetika banyak individu dan lama generasi merupakan parameter yang dapat dikontrol dan diperlukan untuk mendapat kualitas algoritma yang baik. Selain parameter tersebut adapula parameter yang tidak dapat dikontrol yaitu lebar kromosom yang ada. Misal kita definisikan parameter tersebut,

π‘›π‘π‘Ÿ : Banyak kromosom dalam setiap individu dengan indeks π‘–π‘π‘Ÿ

π‘›π‘π‘œπ‘ : Banyak individu dalam populasi dengan indeks π‘–π‘π‘œπ‘ 𝑛𝑔𝑒𝑛 : Banyak generasi yang dibangkitkan dengan indeks 𝑖𝑔𝑒𝑛.

Setiap individu merupakan solusi yang bisa jadi belum mungkin untuk sepenuhnya ditata pada algoritma BLF. Ada dua buah kromosom yang membentuk setiap individu. Kromosom pertama membentuk list urutan. List tersebut menyimpan urutan barang yang akan ditata pada algoritma BLF. Kemudian kromosom kedua berbentuk array yang menyatakan posisi barang. Kromosom tersebut bernilai 1 apabila barang dirotasi dan bernilai 0 apabila barang tidak di rotasi.

Solusi terbaik ditentukan oleh nilai fitness. Nilai fitness berupa total okupasi yang dapat diisi oleh beberapa barang terakhir. Prosedur nilai fitness diletakkan pada algoritma BLF.

3.4.3.4 Prosedur Algoritma Genetika

Pada tahap ini akan dibahas tentang urutan tahapan untuk proses algoritma genetika untuk melakukan urutan barang. Berikut urutan algoritma genetika,

1. Inisialisasi data dan nilai parameter, berikan flag tidak berhasil

2. Pembangkitan himpunan individu mula, ada beberapa jenis pembangkitan yang dilakukan antara lain LAF-priority, LIFO-priority, LAF-LIFO-priority, area-based random generation untuk kromosom urutan dan size-based random generation untuk kromosom posisi

3. Pemberian nilai fitness, apabila ada individu yang memenuhi, berikan flag berhasil dan hentikan algoritma ini, masukkan individu dengan fitness terbaik ke dalam himpunan individu terbaik

4. Kawin silang, ada dua kawin silang yang dapat dilakukan yaitu kawin silang kromosom jenis dan kawin silang kromosom posisi. Untuk kawin silang jenis digunakan arithmatic-decoded kawin silang sedangkan untuk kawin silang kromosom posisi digunakan uniform crossover 5. Mutasi yang digunakan adalah pembangkitan individu baru.

Pembangkitan individu baru digunakan agar hasil tidak terjebak pada local optimum.

6. Masukkan individu terbaik ke dalam populasi

7. Pemberian nilai fitness, apabila ada individu yang memenuhi, berikan s berhasil dan hentikan algoritma ini, masukkan individu dengan fitness terbaik ke dalam himpunan individu terbaik

8. Lakukan pengulangan langkah 3 sampai 7.

3.4.3.5 LAF-Priority, Area-Based, LIFO-priority, LA-LIFO-priority Generations

Beberapa algoritma BLF yang dapat digunakan adalah algoritma LAF-BLF atau large-area-first bottom-left fill. Algoritma ini membentuk urutan barang bedasar luas penampang barang yang diurutkan dari besar ke yang terkecil. Berdasarkan algoritma ini, dapat dilakukan pembangkitan sebuah individu dengan kromosom urutan bedasarkan luas penampang yang diurutkan dari besar ke yang kecil.

Selain itu untuk melakukan generation urutan barang yang acak namun tetap memperhatikan luas penampang barang yang disebut area-based generation. Algoritma ini memiliki langkah sebagai berikut,

1. Setiap barang diberikan nilai prioritas sebesar π‘Ÿπ‘Žπ‘›π‘‘ βˆ— πΏπ‘’π‘Žπ‘ π‘ƒπ‘’π‘›π‘Žπ‘šπ‘π‘Žπ‘›π‘”

2. Kemudian nilai-nilai prioritas yang ada diurutkan dan dibentuk individu baru dari urutan tersebut.

Kemudian karena ada konstrain last-in first-out (LIFO) maka perlu adanya pembangkitan individu yang berdasarkan urutan barang yaitu LIFO-priority generations. Pembangkitan ini memerlukan input urutan sebuah tour dengan urutan terbalik atau dari akhir pengiriman ke awal pengiriman. Kemudian barang-barang yang dikirim pada pelanggan yang sama dilakukan pengacakan seperti halnya area-based generations. Gabungan dari LAF-priority dan LIFO-priority dapat dihasilkan sebuah individu yang memenuhi konstrain LIFO kemudian untuk barang-barang pada pelanggan yang sama diurutkan bedasarkan urutan barang-barang dari luas penampang barang dari yang paling besar ke paling kecil. Pembangkitan individu ini disebut LAF-LIFO-priority generations. 3.4.3.6 Size-Based Generations

Algoritma ini digunakan untuk membangkitkan kromosom posisi setiap barang. Dasar algoritma ini adalah penggunaan roulette wheel dengan memberikan prioritas barang yang memiliki luas daerah yang tidak memiliki koordinat yang sama dengan posisi tersebut.

Misalkan pada barang 𝛼 memiliki panjang 𝑙𝛼 dan lebar 𝑀𝛼 sedangkan kontainer memiliki ukuran panjang 𝐿 dan lebar π‘Š. Maka prosedur algoritmanya adalah,

1. Untuk setiap barang 𝛼

2. Masukkan nilai untuk membatasi roulette wheel 𝛼 = max((πΏβˆ’π‘™π›Ό)(π‘Šβˆ’π‘€π›Ό),0)

max((πΏβˆ’π‘™π›Ό)(π‘Šβˆ’π‘€π›Ό),0)+max((πΏβˆ’π‘€π›Ό)(π‘Šβˆ’π‘™π›Ό),0) 3. Bangkitkan bilangan acak π‘Ÿπ‘Žπ‘›π‘‘ ∈ [0,1]

4. Apabila π‘Ÿπ‘Žπ‘›π‘‘ < 𝛼 maka kromosom di array 𝛼 diberi nilai 0 dan apabila π‘Ÿπ‘Žπ‘›π‘‘ β‰₯ 𝛼 maka kromosom di array 𝛼 diberi nilai 1

5. Kembali ke langkah 1. 3.4.3.7 Arithmetic-Decoded Crossover

Pada algoritma ini akan dijelaskan salah satu kawin silang untuk kromosom urutan. Kawin silang ini pada umumnya digunakan untuk permasalahan dengan nilai-nilai kontinyu. Namun pada permasalahan

optimasi permutasi dapat dilakukan dengan menambahkan algoritma decode yang berupa algoritma sorting atau pengurutan kembali. Misal π‘₯𝑝1 dan π‘₯𝑝2 adalah kromosom orang tua dan π‘₯𝑐1 dan π‘₯𝑐2 adalah kromosom anak yang berbentuk barisan urutan barang. Maka langkah algoritmanya adalah sebagai berikut,

1. Bangkitkan bilangan acak π‘Ÿπ‘Žπ‘›π‘‘ 2. π‘₯𝑐1≔ π‘Ÿπ‘Žπ‘›π‘‘ Γ— π‘₯𝑝1+ (1 βˆ’ π‘Ÿπ‘Žπ‘›π‘‘) Γ— π‘₯𝑝2 3. π‘₯𝑐2≔ π‘Ÿπ‘Žπ‘›π‘‘ Γ— π‘₯𝑝2+ (1 βˆ’ π‘Ÿπ‘Žπ‘›π‘‘) Γ— π‘₯𝑝1

4. Kemudian buat list urutan (berbentuk permutasi dari {1,2,3, … , π‘›π‘π‘Ÿ}) dari π‘₯𝑐1 dan π‘₯𝑐2 masukkan list tersebut kedalam π‘₯𝑐1 dan π‘₯𝑐2.

3.4.3.8 Uniform Crossover

Kawin silang ini digunakan pada kromosom posisi yang berbentuk biner. Prosedur kromosom ini adalah menukar posisi pada barang yang sama di dua individu.

Misal π‘₯𝑝1 dan π‘₯𝑝2 adalah kromosom orang tua dan π‘₯𝑐1 dan π‘₯𝑐2 adalah kromosom anak yang berbentuk array posisi barang. Langkah dari uniform-crossover adalah sebagai berikut,

1. Untuk setiap barang 𝑖

2. Bangkitkan bilangan acak π‘Ÿπ‘Žπ‘›π‘‘ ∈ [0,1]

3. Apabila π‘Ÿπ‘Žπ‘›π‘‘ < 0.5 maka masukkan kromosom array 𝑖 π‘₯𝑐1 dari π‘₯𝑝2 dan π‘₯𝑐2 dari π‘₯𝑝1

4. Apabila π‘Ÿπ‘Žπ‘›π‘‘ β‰₯ 0.5 maka masukkan kromosom array 𝑖π‘₯𝑐1 dari π‘₯𝑝1 dan π‘₯𝑐2 dari π‘₯𝑝2

5. Kembali ke langka 1. 3.4.3.9 Complete-BLF

Complete-BLF merupakan algortima pengembangan dari BLF. Untuk kasus 3D-BPP, BLF menyimpan 3 buah titik ke dalam list setiap kali ada barang yang dapat ditata. Algortima ini memerlukan input urutan dan posisi barang dari algoritma genetika. Berikut adalah algoritma complete-BLF,

1. Lakukan rotasi horizontal pada barang-barang yang memiliki kromosom rotasi bernilai 1

2. Buat list kosong 𝐿 dan masukkan koordinat (0,0,0) 3. Masukkan nilai 𝑓𝑖𝑑𝑛𝑒𝑠𝑠 ≔ 𝐿 βˆ— π‘Š βˆ— 𝐻

4. Bedasarkan kromosom urutan barang. Lakukan langkah berikut untuk barang 𝑖

5. Untuk setiap barang 𝑗 yang sudah diletakkan periksa dengan barang 𝑖 untuk konstrain overlaping, luas penopang minimal, keseimbangan, berat maksimal dan LIFO. Apabila barang 𝑖 muat pada 𝑙 (𝑙π‘₯, 𝑙𝑦, 𝑙𝑧) anggota list 𝐿 lanjutkan langkah. Apabila tidak ulangi langkah ini.

6. Kemudian hapus 𝑙 di 𝐿.

7. Untuk setiap barang 𝑗 yang sudah diletakkan simpan semua bottom-left point yang dibentuk barang 𝑖 dan 𝑗 ke dalam list.

8. Urutkan semua koordinat yang ada pada list dengan prioritas sumbu π‘₯ terkecil, kemudian apabila ada yang bernilai sama urutkan berdasarkan prioritas sumbu 𝑧 terkecil dan apabila ada yang sama lagi urutkan berdasarkan prioritas sumbu 𝑦 terkecil.

9. Letakkan barang 𝑖 kemudian kurangi nilai fitness sebesar volume barang yang ada. 𝑓𝑖𝑑𝑛𝑒𝑠𝑠 ≔ 𝑓𝑖𝑑𝑛𝑒𝑠𝑠 βˆ’ 𝑙(𝑖) Γ— 𝑀(𝑖) Γ— β„Ž(𝑖)

10. Apabila tidak ada barang yang muat maka keluarkan hasil tidak memenuhi

11. Kembali ke langkah 4 hingga semua barang habis

12. Apabila semua barang muat maka keluarkanlah hasil yang memenuhi.

Dokumen terkait