BAB IV PEMBAHASAN
IV.7 Contoh Uncapacitated Facility Location Problem (UFLP)
Manual
Uncapacitated Facility Location Problem (UFLP) untuk Data Kecil yang terdiri dari 10 Lokasi dan 15 Customer (Lampiran 1) diselesaikan secara manual dengan Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS). Proses pengerjaan manual secara lengkap disajikan pada pembahasan berikut ini.
Penyelesaian:
Tahap pertama untuk penyelesaian uncapacitated facility location problem dengan Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) penentuan variabel input. Variabel input yang digunakan sebagai berikut: sw_size =10, , PSOIter = 1, LSIter = 2, , -.
sw_size adalah ukuran swarm yang merupakan representasi dari jumlah lokasi yang akan dibangun fasilitas, adalah variabel yang menyatakan pengalaman partikel dan adalah variabel yang menyatakan pengalaman dari swarm (kelompok partikel), PSOIter adalah jumlah itersi pada Algoritma PSO, LSIter adalah jumlah iterasi pada Algoritma LS, w adalah bobot inersia yang dibangkitkan dari bilangan random pada interval [0,1], serta dan adalah bilangan random pada interval [0,1].
Setelah itu, dilakukan generate vektor posisi dan vektor kecepatan sebanyak sw_size dan dilakukan penghitungan vektor open facility. Proses generate vektor posisi dimulai dengan membangkitkan partikel-partikel yang berisi sejumlah n bilangan random pada interval , -. Proses generate vektor posisi untuk tiap partikel dilakukan sebanyak sw_size. Hasil selengkapnya disajikan secara rinci pada Tabel 4.3.
Tabel 4.3 Vektor posisi
Partikel Vektor Posisi
l1 7,28 9,3 -8,45 6,47 4,38 -0,38 0,44 1,26 -2,74 0,38 l2 -3,21 9,3 -8,45 6,47 4,38 -0,38 0,44 1,26 -2,74 0,38 l3 9,11 -0,72 2,79 -6,24 -0,43 -1 2,98 -7,76 3,53 -5,21 l4 9,28 7,56 0 0 0,07 9,15 0 1 6,85 -8,06 l5 -2,2 9 0 1 6,98 -8,23 1 0 -3,93 0,1 l6 -8,45 -4,4 1 0 -3,61 6,74 0 1 5,3 -3,93 l7 -9,54 -6,83 1 0 -7,7 4,07 1 0 -6,79 4,34 l8 -0,07 4,16 1 1 -5,42 -9,02 1 0 -5,47 2,78 l9 1 0 -6,38 9,42 1 0 -7,27 8,51 1 0 l10 -3,1 6,35 1 1 -5,36 -5,33 0 1 4,62 -2,14
Langkah selanjutnya adalah membangkitkan vektor kecepatan. Proses generate vektor kecepatan dimulai dengan membangkitkan partikel-partikel yang berisi sejumlah n bilangan random pada interval , -. Proses ini dilakukan sebanyak sw_size. Hasil selengkapnya disajikan dalam Tabel 4.4.
Tabel 4.4 Vektor kecepatan Partikel Vektor kecepatan
v1 -1,55 -2,84 -1,12 1,13 -2,04 1,79 -0,71 -2,25 -3,37 0,37 v2 -1,55 -2,84 -1,12 1,13 -2,04 1,79 -0,71 -2,25 -3,37 0,37 v3 2,31 2,98 -1,41 1,32 -0,15 1,85 0,30 2,74 -0,09 0,54 v4 1,31 1,16 2,20 -1,72 0,67 -2,22 3,97 -3,65 3,01 -1,12 v5 -0,98 -0,16 1,42 1,10 -2,20 -2,73 1,81 -0,85 -3,74 -1,80 v6 3,85 -1,89 -1,60 2,10 0,88 2,58 2,66 -2,75 -0,81 3,27 v7 0,50 -1,15 0,68 -2,22 2,99 -0,85 0,86 1,29 3,26 -3,95 v8 2,09 0,31 1,51 -1,07 1,83 -0,70 0,79 -1,75 3,69 2,82 v9 -0,30 3,29 3,19 -1,30 0,66 -3,06 -2,41 3,73 -1,03 -3,90 v10 2,77 -0,04 -0,39 3,79 -2,36 2,07 -0,47 -3,95 -2,79 2,58
Setelah membangkitkan vektor posisi, dapat dihitung vektor open facility dengan persamaan (2.4). Angka 1 pada vektor open facility menunjukkan bahwa fasillitas tersebut dibangun. Sedangkan, angka 0 menunjukkan bahwa fasilitas tersebut tidak dibangun. Proses ini dilakukan sebanyak sw_size. Hasil selengkapnya disajikan dalam Tabel 4.5
Tabel 4.5 Vektor Open facility Partikel Vektor Open facility
y1 1 1 0 0 0 0 0 1 0 0 y2 1 1 0 0 0 0 0 1 0 0 y3 1 0 0 0 0 1 0 1 1 1 y4 1 1 0 0 0 1 0 1 0 0 y5 0 1 0 1 0 0 1 0 1 0 y6 0 0 1 0 1 0 0 1 1 1
Partikel Vektor Open facility
y7 1 0 1 0 1 0 1 0 0 0
y8 0 0 1 1 1 1 1 0 1 0
y9 1 0 0 1 1 0 1 0 1 0
y10 1 0 1 1 1 1 0 1 0 0
Biaya untuk membangun fasilitas dikeluarkan hanya jika fasilitas dibangun. Fasilitas terbangun yang dipilih untuk melayani customer adalah fasilitas dengan biaya pelayanan customer terkecil. Dengan melihat tabel biaya untuk membangun fasilitas dan tabel biaya untuk melayani customer, didapat data nilai fitness untuk masing-masing partikel pada iterasi pertama yang disajikan pada Tabel 4.6.
Tabel 4.6 Nilai fungsi tujuan (Z)
Partikel fasilitas yang Jumlah dibangun Jumlah Biaya membangun fasilitas Jumlah biaya melayani customer Nilai Fungsi tujuan (Z) y1 3 22,500,00 321.231,59 343.731,59 y2 3 22,500,00 321.231,59 343.731,59 y3 5 37,500,00 184.612,69 222.112,69 y4 4 30,000,00 177.136,80 207.136,80 y5 4 30,000,00 142.506,26 172.506,26 y6 5 37,500,00 169.693,83 207.193,83 y7 4 30,000,00 160.017,07 190.017,07 y8 6 45,000,00 124.334,14 169.334,14 y9 5 37,500,00 140.903,66 178.403,66 y10 6 45,000,00 126.577,70 171.577,70
Nilai fitness pada masing-masing partikel menjadi patokan untuk menentukan vektor personal best pada tiap iterasi. Adapun nilai fitness pada keseluruhan swarm atau nilai fitness personal best pada masing-masing partikel menjadi tolok
ukur penentuan vektor global best. Nilai fitness terkecil akan dipilih sebagai vektor personal best dan nilai fitness personal best terkecil menjadi vektor global best. Untuk iterasi pertama, didapat vektor personal best adalah vektor posisi awal. Personal best untuk iterasi pertama disajikan pada Tabel 4.7 sebagai berikut:
Tabel 4.7 personal best
Personal
best Vektor Posisi Nilai fitness
p1 7,28 9,3 -8,45 6,47 4,38 -0,38 0,44 1,26 -2,74 0,38 343.731,59 p2 -3,21 9,3 -8,45 6,47 4,38 -0,38 0,44 1,26 -2,74 0,38 343.731,59 p3 9,11 -0,72 2,79 -6,24 -0,43 -1 2,98 -7,76 3,53 -5,21 222.112,69 p4 9,28 7,56 0 0 0,07 9,15 0 1 6,85 -8,06 207.136,80 p5 -2,2 9 0 1 6,98 -8,23 1 0 -3,93 0,1 172.506,26 p6 -8,45 -4,4 1 0 -3,61 6,74 0 1 5,3 -3,93 207.193,83 p7 -9,54 -6,83 1 0 -7,7 4,07 1 0 -6,79 4,34 190.017,07 p8 -0,07 4,16 1 1 -5,42 -9,02 1 0 -5,47 2,78 169.334,14 p9 1 0 -6,38 9,42 1 0 -7,27 8,51 1 0 178.403,66 p10 -3,1 6,35 1 1 -5,36 -5,33 0 1 4,62 -2,14 171.577,70
Sehingga didapatkan global best (g) adalah vektor personal best ke-8. Vektor Global best untuk iterasi pertama adalah sebagai berikut:
g : 6,75 11,25 -8,12 7,5 0,06 -5,96 0,9 0,56 -7,5 2,39
Setelah mendapatkan vektor-vektor pbest dan vektor gbest, langkah selanjutnya adalah meng-update vektor kecepatan dan vektor posisi dengan prosedur yang telah ditentukan. Vektor kecepatan setelah di-update disajikan pada Tabel 4.8 sebagai berikut:
Tabel 4.8 Vektor kecepatan setelah di-update
Partikel Vektor kecepatan
v1 -0,53 1,95 0,33 1,03 -4,32 -5,58 0,46 -0,7 -4,76 2,01 v2 1,19 -4,69 5,38 -2,87 -7,21 -4,53 -0,01 -1,94 -3,44 1,7 v3 -3,57 4,42 -1,81 4,7 -2,78 -3,22 -0,89 5,83 -4,91 4,64 v4 -4,98 -1,24 2,5 -0,79 -3,01 -13,68 3,98 -3,72 -5,48 6,11 v5 -0,09 -1,31 1,16 0,7 -4,51 -1,94 1,16 -0,54 -2,78 -0,48 v6 6,48 1,26 -1,47 2,28 0,18 -3,14 2,8 -2,88 -4,51 5,36 v7 7,23 6,96 0,56 -1,12 4,12 -10,13 0,71 1,07 3,66 -4,4 v8 1,9 0,28 1,37 -0,97 1,67 -0,64 0,72 -1,59 3,36 2,57 v9 -0,56 3,41 4,51 -3,79 -1,93 -5,02 1,58 -0,9 -2,93 -1,23 v10 4,05 -1,26 -0,33 3,22 -2,04 -0,31 0,16 -3,92 -8,02 4,95
Setelah didapatkan vektor kecepatan yang baru, maka langkah selanjutnya adalah melakukan update vektor posisi partikel, yaitu dengan menjumlahkan komponen vektor posisi lama dengan vektor kecepatan baru. Tabel 4.9 berisi data-data vektor posisi setelah di-update.
Tabel 4.9 Vektor posisi setelah di-update
Partikel Vektor Posisi
l1 6,75 11,25 -8,12 7,5 0,06 -5,96 0,9 0,56 -7,5 2,39 l2 -2,02 4,61 -3,07 3,6 -2,83 -4,91 0,43 -0,68 -6,18 2,08 l3 5,54 3,7 0,98 -1,54 -3,21 -4,22 2,09 -1,93 -1,38 -0,57 l4 4,3 6,32 2,5 -0,79 -2,94 -4,53 3,98 -2,72 1,37 -1,95 l5 -2,29 7,69 1,16 1,7 2,47 -10,17 2,16 -0,54 -6,71 -0,38 l6 -1,98 -3,14 -0,47 2,28 -3,43 3,6 2,8 -1,88 0,79 1,43 l7 -2,31 0,13 1,56 -1,12 -3,58 -6,06 1,71 1,07 -3,13 -0,06 l8 1,83 4,44 2,37 0,03 -3,75 -9,66 1,72 -1,59 -2,11 5,35 l9 0,44 3,41 -1,87 5,63 -0,93 -5,02 -5,69 7,61 -1,93 -1,23 l10 0,95 5,09 0,67 4,22 -7,4 -5,64 0,16 -2,92 -3,4 2,81
Kemudian masing-masing partikel akan ditentukan komponen (fasilitas) yang akan dibuka dan ditutup dengan menghitung vektor open facility. Berikut Tabel 4.10 yang menyajikan vektor-vektor open facility setelah di-update. Angka 1
menunjukkan bahwa fasilitas dibangun, sedangkan angka 0 menunjukkan bahwa fasilitas tidak dibangun.
Tabel 4.10 vektor open facility setelah di-update
Partikel Vektor Open facility y1 0 1 0 1 0 1 0 0 1 0 y2 0 0 1 1 0 0 0 0 0 0 y3 1 1 0 1 1 0 0 1 1 0 y4 0 0 0 0 0 0 1 0 1 1 y5 0 1 1 1 0 0 0 0 0 0 y6 1 1 0 0 1 1 0 1 0 1 y7 0 0 1 1 1 0 1 1 1 0 y8 1 0 0 0 1 1 1 1 0 1 y9 0 1 1 1 0 1 1 1 1 1 y10 0 1 0 0 1 1 0 0 1 0
Setelah itu dilakukan evaluasi nilai fitness tiap partikel dengan menggunakan prosedur yang telah ditentukan. Berikut Tabel 4.11 yang menyajikan data nilai fungsi tujuan (fitness) setelah dilakukan update.
Tabel 4.11 Nilai fungsi tujuan setelah di-update
Partikel Jumlah fasilitas yang dibangun Jumlah Biaya membangun fasilitas
Jumlah biaya melayani
customer Nilai fungsi tujuan
y1 4 30.000 138.545,79 168.545,79 y2 2 15.000 161.775,79 176.775,79 y3 6 45.000 124.101,34 169.101,34 y4 3 22.500 217.764,24 240.264,24 y5 3 22.500 147.141,04 169.641,04 y6 6 45.000 144.625,35 189.625,35 y7 6 45.000 130.557,38 175.557,38 y8 6 45.000 158.995,84 203.995,84 y9 8 60.000 124.595,32 184.595,32 y10 4 30.000 156.920,97 186.920,97
Sebagaimana telah dijelaskan sebelumnya bahwa partikel yang terpilih menjadi Personal Best adalah partikel dengan nilai fitness terbaik (terkecil) pada iterasi tertentu. Tabel 4.12 berikut ini merangkum vektor posisi personal best dan nilai fitness masing-masing.
Tabel 4.12 Personal Best setelah di-update
Personal
best Vektor Posisi Nilai fitness
p1 6,75 11,25 -8,12 7,5 0,06 -5,96 0,9 0,56 -7,5 2,39 168.545,79 p2 -2,02 4,61 -3,07 3,6 -2,83 -4,91 0,43 -0,68 -6,18 2,08 176.775,79 p3 5,54 3,7 0,98 -1,54 -3,21 -4,22 2,09 -1,93 -1,38 -0,57 169.101,34 p4 9,28 7,56 0 0 0,07 9,15 0 1 6,85 -8,06 207.136,80 p5 -2,29 7,69 1,16 1,7 2,47 -10,17 2,16 -0,54 -6,71 -0,38 169.641,04 p6 -1,98 -3,14 -0,47 2,28 -3,43 3,6 2,8 -1,88 0,79 1,43 189.625,35 p7 -2,31 0,13 1,56 -1,12 -3,58 -6,06 1,71 1,07 -3,13 -0,06 175.557,38 p8 -0,07 4,16 1 1 -5,42 -9,02 1 0 -5,47 2,78 169.334,10 p9 1 0 -6,38 9,42 1 0 -7,27 8,51 1 0 178.403,66 p10 -3,1 6,35 1 1 -5,36 -5,33 0 1 4,62 -2,14 171.577,70
Berdasarkan perbandingan nilai fitness dari tiap partikel, didapatkan vektor posisi global best (g) adalah sebagai berikut:
g : 6,75 11,25 -8,12 7,5 0,06 -5,96 0,9 0,56 -7,5 2,39
Posisi global best (g) inilah yang kemudian diambil sebagai solusi awal bagi algoritma local search.
Langkah selanjutnya adalah menjalankan Algoritma Local search pada posisi global best. Vektor g ditransfer menjadi solusi awal bagi algoritma local search dan dinamakan dengan s0.
s0 : 6,75 11,25 -8,12 7,5 0,06 -5,96 0,9 0,56 -7,5 2,39
Solusi awal (s0) ini kemudian dimodifikasi berdasarkan η dan κ, yaitu dua bilangan asli yang dibangkitkan secara random sebanyak jumlah fasilitas yang akan dibangun. Hasil modifikasi s0 menjadi vektor solusi baru yaitu s.
Misalkan didapat η dan κ masing-masing adalah 3 dan 8, maka vektor posisi solusi awal s0 pada poin ke-3 dan ke-8 dimodifikasi sehingga didapatkan vektor solusi baru s.
s: 6,75 11,25 -7,12 7,5 0,06 -5,96 0,9 2,56 -7,5 2,39
Fungsi fitness pada partikel solusi s0 dan s adalah f(s0) dan f(s) yaitu masing-masing bernilai 168.545,79 dan 173.554,70. Kemudian dilakukan operasi flip berdasarkan bilangan random ρ sehingga didapatkan solusi baru s1. Misalkan ditentukan operasi flip adalah sebanyak 2 kali.
Berikut ini adalah operasi flip.
1. Flip 1
Untuk ρ = 0,89
Karena ρ > 0,5 maka s1 = s-1, sehingga didapatkan vektor baru s1: s1: 5,75 10,25 -8,12 6,5 -0,94 -6,96 -0,1 1,56 -8,5 1,39
Selanjutnya dilakukan evaluasi terhadap calon solusi hasil flip operator dan didapatkan nilai fitness sebesar 401,829.18. karena nilai fitness s1 lebih besar dari nilai fitness s, maka iterasi dilanjutkan.
2. Flip 2
Untuk ρ = 0,01
Karena ρ < 0,5 maka s1 = s+1, sehingga didapatkan vektor baru s1: s1 : 7,75 12,25 -6,12 8,5 1,06 -4,96 1,9 3,56 -6,5 3,39
Selanjutnya dilakukan evaluasi terhadap calon solusi hasil flip operator dan didapatkan nilai fitness sebesar 218.999,76.
Setelah dilakukan iterasi sebanyak 2 kali, ternyata nilai fitness yang didapatkan tidak lebih baik dari nilai fitness solusi awal. Oleh karena itu, solusi yang diambil adalah solusi awal:
s0 : 6,75 11,25 -8,12 7,5 0,06 -5,96 0,9 0,56 -7,5 2,39
Solusi ini kemudian dikonversi menjadi bilangan biner sebagai berikut :
y : 0 1 0 1 0 1 0 0 1 0
Angka 0 menyatakan fasilitas tidak dibangun, sedangkan angka 1 menyatakan fasilitas dibangun. Dengan demikian dapat disimpulkan bahwa fasilitas yang dibangun adalah fasilitas 2, fasilitas 4, fasilitas 6 dan fasilitas 9. Data biaya pembangunan masing-masing fasilitas disajikan pada Tabel 4.13.
Tabel 4.13 Biaya Pembangunan fasilitas pada Lokasi Pembangunan Lokasi Pembangunan Biaya 2 7.500 4 7.500 6 7.500 9 7.500 Total 30.000
Oleh karena setiap customer harus dilayani oleh fasilitas yang terbuka, dan pada fungsi tujuan adalah meminimalkan, maka untuk masing-masing customer dipilih fasilitas dengan biaya pelayanan minimal. Berikut ini alokasi customer pada fasilitas beserta biaya pelayanannya.
1. Customer 1 dilayani oleh fasilitas 4 dengan biaya pelayanan 5.219,50 2. Customer 2 dilayani oleh fasilitas 4 dengan biaya pelayanan 2.396,85 3. Customer 3 dilayani oleh fasilitas 4 dengan biaya pelayanan 13.876,80 4. Customer 4 dilayani oleh fasilitas 6 dengan biaya pelayanan 20.071,71 5. Customer 5 dilayani oleh fasilitas 4 dengan biaya pelayanan 1.061,75 6. Customer 6 dilayani oleh fasilitas 4 dengan biaya pelayanan 10.383,43 7. Customer 7 dilayani oleh fasilitas 2 dengan biaya pelayanan 28.499,25 8. Customer 8 dilayani oleh fasilitas 6 dengan biaya pelayanan 8.861,74 9. Customer 9 dilayani oleh fasilitas 4 dengan biaya pelayanan 1.324,95 10. Customer 10 dilayani oleh fasilitas 4 dengan biaya pelayanan 869,60 11. Customer 11 dilayani oleh fasilitas 4 dengan biaya pelayanan 12.638,50 12. Customer 12 dilayani oleh fasilitas 4 dengan biaya pelayanan 8.429,80 13. Customer 13 dilayani oleh fasilitas 6 dengan biaya pelayanan 5.185,98 14. Customer 14 dilayani oleh fasilitas 4 dengan biaya pelayanan 3.428,43 15. Customer 15 dilayani oleh fasilitas 4 dengan biaya pelayanan 16.297,50
Fungsi tujuan adalah jumlahan dari biaya pembangunan fasilitas terpilih dan biaya pelayanan customer oleh fasilitas terpilih (fasilitas dengan biaya pelayanan paling minimal). Dengan demikian, fungsi tujuan (Z) untuk kasus UFLP pada data Lampiran 1 adalah sebesar 168.545,79.
IV.8 Implementasi Program Pada Contoh Kasus Uncapacitated facility