ALGORITMA PARTICLE SWARM OPTIMIZATION DENGAN LOCAL SEARCH (PSO-LS)
SEBAGAI METODE PENYELESAIAN UNCAPACITATED FACILITY
LOCATION PROBLEM (UFLP)
SKRIPSI
UMI LAILATUL MUYASSAROH
PROGRAM STUDI S-1 MATEMATIKA DEPARTEMEN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS AIRLANGGA SURABAYA
ii
ALGORITMA PARTICLE SWARM OPTIMIZATION
DENGAN LOCAL SEARCH (PSO-LS)
SEBAGAI METODE PENYELESAIAN UNCAPACITATED FACILITY
LOCATION PROBLEM (UFLP)
SKRIPSI
Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Sains Bidang Matematika pada Fakultas Sains dan Teknologi
Universitas Airlangga
Disetujui oleh :
Pembimbing I
Dr. Herry Suprajitno, M.Si NIP.19680404 199403 1 020
Pembimbing II
Dr. Miswanto, M.Si
NIP. 19680204 199303 1 002
LEMBAR PENGESAHAN NASKAH SKRIPSI
Judul : Algoritma Particle Swarm Optimization dengan Local
Search (PSO-LS) sebagai Metode Penyelesaian
Uncapacitated Facility Location Problem (UFLP)
Penyusun : Umi Lailatul Muyassaroh
NIM : 080810132
Tanggal Ujian : 27 Agustus 2012
Disetujui Oleh :
Pembimbing I
Dr. Herry Suprajitno NIP. 19680404 199403 1 020
Pembimbing II
Dr. Miswanto, M.Si NIP. 19680204 199303 1 002
Mengetahui :
Ketua Program Studi S-1 Matematika Departemen Matematika
Fakultas Sains dan Teknologi Universitas Airlangga
iv
PEDOMAN PENGGUNAAN SKRIPSI
Skripsi ini tidak dipublikasikan, namun tersedia di perpustakaan dalam
lingkungan Universitas Airlangga. Diperkenankan untuk dipakai sebagai referensi
kepustakaan, tetapi pengutipan seizin penulis dan harus menyebutkan sumbernya
sesuai kebiasaan ilmiah. Dokumen skripsi ini merupakan hak milik Universitas
Airlangga.
KATA PENGANTAR
Alhamdulillah segala puji bagi Allah Swt. Tuhan semesta alam yang telah menganugerahkan rahmat, taufik dan hidayah-Nya serta memberikan manusia akal yang berbeda dari makhluk yang lainnya, sehingga penulis dapat menyelesaikan skripsi dengan judul ”Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) sebagai Metode Penyelesaian Uncapacitated Facility Location Problem (UFLP)”. Shalawat dan salam semoga tetap terlimpah kepada Nabi Muhammad SAW., beserta keluarganya, sahabat dan para pengikutnya.
Kesuksesan penulisan skripsi ini tak luput dari bantuan beberapa pihak, untuk itu samudera terimakasih penulis ucapkan kepada :
1. Abah HM. Hasan Luthfi dan Umi Siti Muslichah tersayang serta kakak-kakak penulis (Mas Ahmad Nurhuda, Mbak Siti Kholishoh, Mas Ahmad Mujiburrohman, Mas Abdul Hamid Hasan, Mas Ahmad Ikhsan Fatoni serta Mas Fuad Hasyim) dan seluruh keluarga yang tak henti-hentinya mendoakan dan telah memberikan dukungan, kasih-sayang, kepercayaan, dan pengorbanan yang tiada terkira besarnya. Terima kasih telah menjadi bagian terpenting bagi hidup penulis.
vi
memberikan dukungan, baik material maupun non-material sehingga penulis dapat menyelesaikan pendidikan di Universitas Airlangga,
3. Dr. Herry Suprajitno dan Dr. Miswanto selaku dosen pembimbing I dan II yang telah memberikan banyak arahan, masukan, perhatian, semangat, rasa sabar yang begitu besar dan pengetahuan yang tidak ternilai harganya.
4. Dra. Inna Kuswandari, M.Si, selaku dosen wali selama menjadi mahasiswa FST UNAIR yang telah banyak memberikan arahan dan saran demi kesuksesan menjadi mahasiswa Matematika.
5. Sahabat-sahabat tersayang, Citra, Yusi, Meta, Ninis, Ayuk, Putu, Marisa, Rizal dan Teman-teman Matematika 2008 semua atas kekompakan dan rasa kekeluargaan yang begitu hangat.
6. Sahabat-sahabat di Griya Annisa, Ninis, Tika, Vika, Sema, Rohis, Vivin, Itsna dan semua tetangga kamar penulis yang telah banyak mengisi hari-hari penulis dengan keceriaan.
7. Serta kepada semua pihak yang tidak dapat disebutkan satu persatu, terima kasih atas segala bantuan dalam penyelesaian skripsi ini.
Penulis menyadari bahwa skripsi ini masih terdapat kekurangan dan masih jauh dari sempurna. Oleh karena itu, kritik dan saran yang membangun terus penulis harapkan agar skripsi ini dapat lebih baik lagi.
Surabaya, 02 Agustus 2012 Penyusun
Umi Lailatul Muyassaroh
Umi Lailatul Muyassaroh, 2012, Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) sebagai Metode Penyelesaian Uncapacitated Facility Location Problem (UFLP), Skripsi ini dibawah bimbingan Dr. Herry
Suprajitno, M.Si dan Dr. Miswanto, M.Si. Departemen Matematika, Fakultas Sains dan Teknologi, Universitas Airlangga, Surabaya.
ABSTRAK
Uncapacitated facility location problem didefinisikan sebagai suatu permasalahan untuk menemukan lokasi yang optimal dalam membangun fasilitas yang akan melayani sejumlah customer dengan asumsi bahwa fasilitas yang dibangun tidak mempunyai batasan jumlah customer. Skripsi ini membahas tentang Uncapacitated Facility Location Problem (UFLP) yang diselesaikan dengan menggunakan Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS). Algoritma PSO-LS merupakan kombinasi dari Algoritma Particle Swarm Optimization dan Algoritma Local Search. Kombinasi kedua algoritma optimasi ini diharapkan dapat mengoptimalkan pencarian solusi UFLP. Proses algoritma ini dimulai dengan pembangkitan posisi dan kecepatan partikel awal, menentukan vektor open facility, kemudian dilakukan evaluasi sehingga didapatkan nilai fitness. Selanjutnya ditentukan personal best pada tiap partikel dan global best untuk keseluruhan swarm. Pada saat iterasi Algoritma, dilakukan update kecepatan dan posisi partikel, kemudian dilakukan proses evaluasi dan ditentukan personal best dan global best yang baru. Solusi UFLP dengan Algoritma PSO (global best) adalah solusi awal bagi Algoritma Local Search. Solusi awal ini kemudian dimodifikasi sehingga terbentuk solusi baru. Selanjutnya dilakukan operasi flip pada solusi baru. Proses pengambilan kesimpulan solusi dilakukan pada akhir iterasi PSO-LS, yaitu dengan mengambil nilai fungsi tujuan yang paling minimum. Data yang digunakan adalah data 10 lokasi dengan 15 customer dan data 50 lokasi dengan 50 customer serta diselesaikan dengan bahasa pemrograman Java Netbeans IDE 7.1.2 dengan fungsi tujuan (biaya) minimum untuk data 10 lokasi dengan 15 customer adalah sebesar 149.690,4750 satuan. Sedangkan untuk data 50 lokasi dengan 50 customer diperoleh biaya sebesar 793.439,5625 satuan.
viii
Umi Lailatul Muyassaroh, 2012, Particle Swarm Optimization with Local Search Algorithm for Solving Uncapacitated Facility Location Problem , This skripsi is suprvised by Dr. Herry Suprajitno, M.Si and Dr. Miswanto, M.Si. Mathematics Department, Faculty of Science and Technology, Airlangga University, Surabaya.
ABSTRACT
Uncapacitated facility location problem is defined as a problem to find the optimal location to build a facility that will serve the customer with the assumption that the built facility does not have a limited number to serve the customers. This skripsi discuss about uncapacitated facility location problem using the particle swarm optimization with local search algorithm (PSO-LS). PSO-LS algorithm is combination of particle swarm optimization and local search algorithms. The couple of optimization algorithm expected to optimize searching process for UFLP solutions. The process of algorithm is started by generating the initial positions and velocities of particles, determined the open facilities, and did the evaluation process to obtain the objective function value (fitness value). After obtained fitness value of each particle, the next step was determined the personal best and global best. Iteration of algorithm began by updating the particle velocity and position, and then made evaluation process and setting a new personal best and global best. Global best was the initial solution for local search algorithm. The initial solution modified to form new solution. Then flip operation conducted on this new solution. The conclusions made at the end of PSO-LS iteration by taking the minimum value of objective function. The used data is the data of 10 locations with 15 customer and 50 locations with 50 customers that solved by the programming language Java Netbeans IDE 7.1.2. The objective function (cost) for the first data (10 locations with 15 customers) was 149.690,4750 unit, while the second data (50 locations with 50 customer) acquired a fee of 793.439,5625 unit.
Keywords: Particle Swarm Optimization Algorithm (PSO), Local Search Algorithm (LS), Location Problem, Uncapacitated Facility Location Problem (UFLP).
DAFTAR ISI
Halaman
LEMBAR JUDUL ... i
LEMBAR PERNYATAAN ... ii
LEMBAR PENGESAHAN SKRIPSI... iii
PEDOMAN PENGGUNAAN SKRIPSI ... iv
KATA PENGANTAR ... vi
ABSTRAK ... vii
ABSTRACT ... viii
DAFTAR ISI ... ix
DAFTAR TABEL ... xii
DAFTAR LAMPIRAN ... xiii
BAB I PENDAHULUAN I.1. Latar Belakang Masalah ... 1
I.2. Rumusan Masalah ... 3
I.3. Tujuan ... 3
I.4. Manfaat ... 4
I.5. Batasan Masalah... 4
BAB II TINJAUAN PUSTAKA II.1 Masalah Lokasi ... 5
II.2 Pengkodean ... 6
II.3 Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) 2.3.1. Algoritma ... 7
2.3.2. Algoritma Particle Swarm Optimization ... 7
2.3.3. Fungsi Fitness ... 11
2.3.4. Algoritma Local Search (LS) ... 12
x
II.4 Java ... 16
BAB III METODE PENULISAN ... 20
BAB IV PEMBAHASAN IV.1 Masalah Lokasi ... 22
IV.2 Particle Swarm Optimization ... 24
IV.3 Local Search... 25
IV.4 Particle Swarm Optimization dengan Local Search ... 26
IV.4.1. Pengisian Parameter ... 27
IV.4.2. Generate vektor posisi ... 28
IV.4.3. Generate vektor kecepatan ... 28
IV.4.4. Mendapatkan vektor open facility ... 29
IV.4.5. Evaluasi ... 29
IV.4.6. Penentuan personal best (P)... 29
IV.4.7. Penentuan global best ... 30
IV.4.8. Update vektor kecepatan... 31
IV.4.9. Update vektor posisi ... 31
IV.4.10. Modifikasi solusi awal ( ) ... 32
IV.4.11. Mengaplikasikan operator flip ke s dan mendapatkan ... 33
IV.5 Program ... 33
IV.6 Data ... 34
IV.7 Contoh Uncapacitated Facility Location Problem (UFLP) dengan Menggunakan 10 Lokasi dan 15 Customer yang Diselesaikan Secara Manual ... 34
IV.8 Implementasi Program pada contoh Kasus Uncapacitated Facility Location Problem ... 32
IV.8.1.Menggunakan Data pada Lampiran 1 ... 45
IV.8.2.Menggunakan Data pada Lampiran 2 ... 45
IV.8.3.Perbandingan Hasil Perhitungan dengan Parameter Berbeda pada Algoritma PSO-LS Menggunakan Data pada Lampiran 1 ... 45
IV.8.4.Perbandingan Hasil Perhitungan dengan Parameter Berbeda pada Algoritma PSO-LS Menggunakan Data pada Lampiran 2 ... 47 BAB V KESIMPULAN DAN SARAN
xii
DAFTAR TABEL
Nomor Judul Tabel Halaman
4.1 Tabel Biaya Untuk Membangun Fasilitas 23
4.2 Tabel Biaya Untuk Melayani Customer 23
4.3 Vektor Posisi 35
4.4 Vektor Kecepatan 36
4.5 Vektor open facility 37
4.6 Nilai Fungsi Tujuan (Z) 37
4.7 Personal Best 38
4.8 Vektor kecepatan setelah di-update 39
4.9 Vektor posisi setelah di-update 39
4.10 Vektor open facility setelah di-update 40
4.11 Nilai fungsi tujuan setelah di-update 40
4.12 Personal Best setelah di-update 41
4.13 Biaya pembangunan fasilitas pada lokasi pembangunan 44 4.14 Hasil Perbandingan perhitungan nilai fungsi tujuan (Z) pada Data
Lampiran 1 46
4.15 Hasil Perbandingan perhitungan nilai fungsi tujuan (Z) pada Data
Lampiran 2 48
DAFTAR LAMPIRAN
Nomor Judul Lampiran
1 Data 10 Lokasi dengan 15 Customer 2 Data 50 Lokasi dengan 50 Customer
3 Source Code Program Algoritma Particle Swarm Optimization dengan Local Search Untuk Uncapacitated Facility Location Problem
4 Output Program untuk Data Lampiran 1
5 Hasil Terbaik PSO-LS Menggunakan Data Lampiran 2
6 Antarmuka Program
1
BAB I
PENDAHULUAN
I.1. Latar Belakang
Kemajuan teknologi di berbagai bidang memicu pertumbuhan industri yang semakin cepat dan lahirnya berbagai industri baru. Hal ini tentu berdampak pada persaingan perusahaan yang ketat. Untuk itu diperlukan strategi yang tepat sebagai solusi cerdas untuk masalah persaingan industri tadi. Salah satu permasalahan penting dalam dunia industri antara lain adalah penempatan suatu fasilitas pada suatu lokasi.
Secara umum, permasalahan penempatan suatu fasilitas pada suatu lokasi (facility location problem) dapat didefinisikan sebagai penempatan beberapa fasilitas pada beberapa lokasi yang mungkin sehingga seluruh customer dapat dilayani dengan biaya seminimal mungkin.
Masalah penempatan fasilitas dalam suatu lokasi dapat diklasifikasikan menjadi dua berdasarkan batasan masalah yang digunakan, yaitu pengalokasian dengan jumlah customer yang terbatas (capacitated), dan pengalokasian dengan jumlah customer yang tidak terbatas (uncapacitated). Pada uncapacitated facility location problem berlaku asumsi bahwa fasilitas yang dibangun dapat melayani customer dalam jumlah yang tak terbatas, sedangkan pada capacitated facility location problem diasumsikan bahwa jumlah customer yang dilayani oleh fasilitas jumlahnya terbatas.
Pada skripsi ini akan dibahas penyelesaian Uncapacitated Facility Location Problem (UFLP). Beberapa contoh masalah pengalokasian fasilitas yang
dimodelkan sebagai UFLP antara lain: masalah lokasi Bank, desain jaringan (network design), pendistribusian data serta jaringan komunikasi dan desain jaringan komputer.
Metode yang digunakan untuk menyelesaikan UFLP ada dua, yaitu metode analitik dan metode numerik. Metode analitik dinilai kurang efisien untuk mencari solusi optimum, terutama dikarenakan UFLP terdiri dari beberapa kombinasi permasalahan sehingga semakin besar masalahnya, maka semakin sulit pula mencari solusi optimumnya, disamping dibutuhkan waktu yang lama untuk menyelesaikannya. Oleh karena itu, metode yang banyak digunakan adalah metode numerik. Adapun metode numerik yang digunakan adalah metode metaheuristik menggunakan algoritma tertentu. Beberapa metode metaheuristik yang pernah dicoba untuk menyelesaikan UFLP antara lain: Tabu search, Algoritma Genetik, Neighborhood Search, Simmulated Annealing dan Particle Swarm Optimization.
dibangkitkan secara random, sedangkan adalah vektor posisi yang dipetakan kepada himpunan variabel biner (0 dan 1).
Algoritma untuk menyelesaikan UFLP dalam skripsi ini adalah Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS), yaitu algoritma PSO yang dikombinasikan dengan algoritma Local Search (LS). Penambahan algoritma LS untuk algoritma PSO dimaksudkan agar tidak kehilangan solusi optimum dari algoritma PSO serta memperluas kandidat solusi. Dari algoritma PSO-LS ini akan dibuat programnya dan diimplementasikan pada contoh kasus.
I.2. Rumusan Masalah
Rumusan masalah yang dibahas dalam skripsi ini ada 3, yaitu:
1. Bagaimana menggunakan Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) untuk menyelesaikan Uncapacitated Facility Location Problem (UFLP)?
2. Bagaimana membuat program dari Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) untuk menyelesaikan Uncapacitated Facility Location Problem (UFLP) tersebut?
3. Bagaimana mengimplementasikan program tersebut pada contoh kasus?
I.3. Tujuan
Tujuan penulisan skripsi ini adalah:
1. Untuk mengetahui penggunaan Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) dalam menyelesaikan Uncapacitated Facility Location Problem (UFLP).
2. Membuat program dari Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) pada Uncapacitated Facility Location Problem (UFLP).
3. Mengimplementasikan program untuk contoh kasus.
I.4. Manfaat
Manfaat penulisan skripsi ini antara lain:
1. Menambah wawasan keilmuan mahasiswa khususnya tentang cara menyelesaikan Uncapacitated Facility Location Problem (UFLP) dengan menggunakan Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS).
2. Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) dan program dapat digunakan oleh perusahaan dan industri untuk menyelesaikan masalah yang relevan dengan Uncapacitated Facility Location Problem (UFLP), seperti desain jaringan dan penempatan lokasi Bank atau ATM.
3. Informasi yang didapat dari skripsi ini dapat dilanjutkan untuk bahan penelitian skripsi selanjutnya dengan berbagai modifikasi.
I.5. Batasan Masalah
5
BAB II
TINJAUAN PUSTAKA
Pada bab ini diberikan beberapa definisi yang akan digunakan pada pembahasan Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) sebagai metode penyelesaian Uncapacitated Facility Location Problem (UFLP).
II.1. Masalah Lokasi
Dalam bentuk sederhana, masalah lokasi adalah bagaimana menemukan lokasi optimal untuk membangun fasilitas dimana fasilitas tersebut melayani sejumlah m customer; selain itu terdapat sekumpulan n lokasi dimana akan dibangun fasilitas dan untuk membangun sebuah fasilitas pada lokasi i dibutuhkan biaya , customer j dilayani fasilitas i sedemikian hingga terdapat biaya cij. Variabel keputusan untuk membangun atau tidak membangun fasilitas i dinotasikan dengan . Sedangkan variabel keputusan bagi masing-masing fasilitas i untuk melayani atau tidak melayani customer j dinotasikan dengan . Jika diasumsikan bahwa fasilitas yang dibangun tidak mempunyai batasan jumlah dalam melayani customer, maka masalah ini disebut Uncapacitated Facility Location Problem (UFLP). Model matematika dari fungsi tujuan ( ) dirumuskan pada persamaan (2.1) dengan kendala persamaan (2.2) dan persamaan (2.3).
(∑ ∑ ∑
)
∑
Keterangan:
{ }
{
{
{ }
{ }
(Sevkli dan Guner 2006 )
II.2. Pengkodean
Menurut Obitko (1998), pengkodean merupakan suatu cara untuk menyajikan suatu solusi dalam ruang pencarian. Ada beberapa cara untuk mengkode suatu kromosom (dalam skripsi ini merupakan partikel), diantaranya:
1. Pengkodean Biner
Dalam pengkodean biner, partikel adalah bit 0 atau 1. 2. Pengkodean nilai
Dalam pengkodean nilai, setiap partikel adalah untaian bilangan yang membentuk sebuah nilai.
3. Pengkodean Permutasi
Dalam pengkodean permutasi, setiap partikel adalah untaian bilangan, yang menggambarkan bilangan dalam suatu barisan.
4. Pengkodean Random Keys (Nomor Acak)
Dalam pengkodean Random Keys, setiap partikel adalah untaian bilangan random pada interval [ ].
II.3. Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS)
Beberapa istilah yang digunakan dalam sub-bab ini antara lain:
II.3.1.Algoritma
Menurut Chartrand dan Oellermann (1993), Algoritma merupakan suatu himpunan langkah-langkah atau instruksi yang telah dirumuskan dengan baik
(well-defined) untuk memperoleh suatu keluaran khusus (specific output) dari suatu masukan khusus (specific input) dalam langkah yang jumlahnya berhingga.
II.3.2.Fungsi Fitness
Menurut Zomaya (1996), fungsi Fitness adalah fungsi yang menunjukkan keandalan suatu individu untuk bertahan dalam populasi. Fungsi fitness pada skripsi ini dihitung berdasarkan nilai dari fungsi tujuan itu sendiri.
II.3.3.Algoritma Particle Swarm Optimization
Algoritma Particle Swarm Optimization (PSO) diperkenalkan oleh James Kennedy dan Russell Eberhart pada tahun 1995. Proses algoritmanya diinspirasi oleh perilaku sosial dari binatang, seperti sekawanan burung dan sekelompok ikan dalam suatu gerombolan (swarm).
(Sevkli dan Guner, 2006)
Kesederhanaan algoritma dan performansinya yang baik, menjadikan PSO telah menarik banyak perhatian di kalangan para peneliti dan telah diaplikasikan dalam berbagai persoalan optimisasi. PSO telah populer menjadi teknik optimasi global dengan sebagian besar permasalahan dapat diselesaikan dengan baik.
Beberapa istilah yang digunakan dalam Particle Swarm Optimization dapat didefinisikan sebagai berikut:
1. Swarm adalah populasi atau kumpulan partikel.
2. Partikel adalah anggota pada suatu swarm. Setiap partikel merepresentasikan suatu solusi yang potensial pada permasalahan yang diselesaikan. Posisi dari suatu partikel merupakan representasi solusi saat itu. Jumlah partikel menunjukkan ukuran swarm dan dinotasikan sebagai sw_size.
3.
Personal best adalah posisi terbaik pada tiap partikel dalam tiap iterasi yang dipersiapkan untuk mendapatkan suatu solusi optimal.4. Global best adalah posisi terbaik partikel pada swarm. Global best juga bisa didapatkan dengan mengambil posisi terbaik dari Personal best.
5.
Vektor kecepatan (Velocity) adalah vektor yang menggerakkan proses optimisasi yang menentukan arah dimana suatu partikel diperlukan untuk berpindah untuk memperbaiki posisinya semula.6.
Inertia weight (w) adalah parameter yang digunakan untuk mengontrol dampak dari adanya velocity yang diberikan oleh suatu partikel.Menurut Sevkli dan Guner (2006), algoritma Particle Swarm Optimization (PSO) untuk menyelesaikan Uncapacitated Facility Location Problem (UFLP) adalah sebagai berikut:
1. Inisialisasi Posisi ( ) dan Kecepatan ( )
Posisi ( ) adalah salah satu kunci utama penyelesaian UFLP. adalah himpunan dari vektor-vektor posisi pada suatu swarm dan dinotasikan dengan { }. Vektor posisi pada partikel ke-i didefinisikan sebagai [ ] [ ], dengan i adalah jumlah partikel dalam suatu swarm (sw_size), { }, dan n adalah jumlah lokasi pada UFLP.
Kunci kedua untuk penyelesaian UFLP adalah yaitu himpunan dari vektor-vektor kecepatan dalam suatu swarm dan dinotasikan sebagai { }. Vektor kecepatan pada partikel ke-i didefinisikan sebagai [ ] [ ], dengan i adalah jumlah partikel dalam suatu swarm (sw_size), { } dan n adalah jumlah lokasi pada UFLP.
2. Cari Open Facility ( )
Posisi ( ) tidak mengarah langsung sebagai kandidat solusi untuk menghitung total biaya ( ), tetapi dibawa ke himpunan biner, yaitu open facility ( ). Dapat dikatakan bahwa Open Facility merupakan kunci terakhir untuk penyelesaian UFLP. Open Facility yang dinotasikan sebagai { } merupakan himpunan dari vektor Open Facility pada suatu swarm. Vektor Open Facility pada partikel ke-i didefinisikan sebagai [ ], dengan i adalah jumlah partikel dalam suatu swarm (sw_size) dan n adalah banyaknya kandidat lokasi yang akan dibangun fasilitas. Nilai dari komponen vektor Open Facility dihitung dari persamaan (2.4) sebagai berikut:
dengan: menggambarkan variabel keputusan untuk membuka atau menutup fasilitas ke-k dari partikel ke-i, ⌊ ⌋ merupakan sisa hasil bagi ⌊ ⌋ dengan 2, ⌊ ⌋ adalah bilangan bulat terbesar yang kurang dari atau sama dengan , sedangkan adalah nilai posisi dari partikel ke-i yang bersesuaian dengan dimensi ke-k.Dimensi menunjukkan banyaknya fasilitas yang akan dibangun ( { }) dan n adalah jumlah lokasi yang akan dibangun fasilitas.
3. Evaluasi nilai fitness ( )
Nilai fitness adalah keandalan partikel untuk bertahan dalam suatu populasi (swarm). Nilai fitness partikel ke-i yang dinotasikan dengan didapatkan dengan menghitung nilai fungsi tujuan (Z) sebagaimana persamaan . Semakin kecil nilai fitness berbanding lurus dengan semakin andal partikel untuk bertahan dalam suatu swarm.
4. Tentukan Personal best (P) dan Global best (G)
Personal best yang dinotasikan { } adalah himpunan dari vektor-vektor posisi terbaik untuk partikel ke-i pada iterasi tertentu, dan [ ] [ ], dengan nilai posisi dari Pbest ke-i yang berkaitan dengan dimensi ke-k. Nilai Personal best masing-masing partikel pada setiap iterasi t diperbarui jika didapatkan nilai fitness yang lebih baik.
Nilai fitness dari Personal best partikel ke-i dinotasikan dengan . Personal best awal adalah nilai dari vektor posisi ( ), sehingga nilai
fitness Personal best ke-i sama dengan nilai fitness dari posisi ke-i, . Nilai fitness Personal best pada iterasi ke-t adalah nilai fitness terkecil dari
masing-masing partikel untuk iterasi awal (iterasi ke-1) hingga iterasi ke-t dan dinotasikan sebagai { } Dengan { } { } sw_size adalah banyaknya partikel dalam swarm, n adalah jumlah lokasi yang akan dibangun fasilitas, { }, dan max_iter adalah iterasi maksimum untuk Algoritma PSO.
Kemudian, salah satu Personal best dengan nilai fitness terbaik pada keseluruhan swarm pada iterasi tertentu dinamakan Global best dan dinotasikan dengan [ ]. Nilai fitness Global best, dinotasikan sebagai { }, yang berkaitan dengan vektor posisi Global best, , sehingga . Dengan kata lain, [ ] dan [ ] dinotasikan sebagai vektor Open Facility dimana Global Best didapatkan.
5. Update Kecepatan ( ) dan Lokasi ( )
Kecepatan diperbaharui pada tiap iterasi untuk menggerakkan posisi semula menuju posisi yang lebih baik. Misalkan adalah komponen vektor kecepatan ke-i ( ) pada iterasi ke- , maka untuk memperbaharui komponen vektor kecepatan ke-i pada iterasi ke digunakan persamaan (2.5) sebagai berikut:
adalah 2, dan Bilangan random pada interval [ ], dan adalah banyaknya iterasi.
Setelah mendapatkan komponen-komponen vektor kecepatan baru, komponen-komponen vektor lokasi di-update berdasarkan persamaan 2.6 sebagai berikut:
6. Update vektor open facility
Komponen vektor open facility ( ) di-update dengan menggunakan persamaan .
7. Evaluasi nilai fitness ( )
Nilai fitness dievaluasi berdasarkan persamaan .
8. Jika iterasi telah maksimum, maka algoritma berhenti, jika tidak maka kembali ke langkah 4.
II.3.4. Algoritma Local Search (LS)
Materi yang dibahas pada bagian ini diambil dari artikel Sevkli dan Guner (2006). Dalam skripsi ini, algoritma Local Search digunakan untuk mencari solusi disekitar posisi vektor Global best. Aplikasi Local Search pada PSO ini dapat dijelaskan sebagai berikut. Global best yang didapatkan pada akhir setiap iterasi PSO kemudian diadopsi sebagai solusi awal untuk Algoritma LS. Agar tidak menghilangkan solusi optimal dan untuk memperlebar kandidat solusi di sekitar posisi Global best, maka Global Best dimodifikasi secara random dimana dua fasilitas membuka atau menutup berdasarkan parameter dan yang
dibangkitkan secara random. Kemudian, operator flip diaplikasikan selama ia masih menghasilkan solusi yang optimal.
Berikut ini adalah Algoritma Local Search: 1. Ambil vektor posisi Gbest ( ) sebagai
Solusi awal dari Algoritma Local Search dinotasikan sebagai vektor , dengan [ ].
2. Modifikasi berdasarkan dan dan namakan dengan
Bilangan dan adalah bilangan asli yang dibangkitkan secara random dengan range antara 1 sampai maksimum jumlah lokasi (n). Awalnya bilangan dan dibangkitkan, kemudian memilih dua komponen dengan yang bersesuaian dengan dua bilangan ini ( dan ) dan memodifikasinya menggunakan persamaan (2.7) sebagai berikut:
{
3. Aplikasikan operator flip ke dan dapatkan
{
dimana ρ adalah bilangan random pada interval [ ] dan { }. 4. Membandingkan nilai fitness dan . Jika , maka gantilah
dengan . Jika tidak, maka ulangi hingga iterasi maksimum (max_iter). 5. Membandingkan nilai fitness dan . Jika , maka gantilah
dengan .
6. Ulangi langkah hingga iterasi maksimum.
II.3.5. Algoritma Particle Swarm Optimization dengan Local Search
(PSO-LS)
Materi yang dibahas pada bagian ini diambil dari artikel Sevkli dan Guner (2006).
Penggabungan Algoritma PSO dengan algoritma lain (salah satunya dengan Algoritma Local Search) adalah untuk menghasilkan solusi yang optimal. Prosedur Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) sebagai metode penyelesaian UFLP adalah sebagai berikut:
1. Inisialisasi posisi ( ) dan kecepatan ( )
2. Cari open facility ( ) dengan menggunakan persamaan 3. Evaluasi nilai fitness ( ) dengan menggunakan persamaan 4. Tentukan Personal best dan Global best
5. Update kecepatan ( ) dan lokasi ( ) dengan menggunakan persamaan dan persamaan
6. Update open facility dengan menggunakan persamaan 7. Evaluasi nilai fitness ( ) dengan menggunakan persamaan 8. Tentukan Personal Best dan Global best baru
9. Ambil vektor posisi Gbest ( ) sebagai
10.Modifikasi berdasarkan dan menggunakan persamaan dan namakan dengan .
11.Aplikasikan operator flip ke dan dapatkan
12.Membandingkan nilai fitness dan . Jika , maka gantilah dengan . Jika tidak, maka ulangi hingga iterasi sebanyak n kali.
13.Membandingkan nilai fitness dan . Jika , maka gantilah dengan .
14.Jika iterasi telah maksimum, maka algoritma berhenti, jika tidak maka kembali ke langkah 4.
II.4. Software Berbasis Java
Java adalah bahasa pemrograman serbaguna, Java dapat digunakan untuk membuat suatu program sebagaimana bahasa Pascal atau C++. Java juga mendukung sumber daya internet yang saat ini populer, yaitu World Wide Web atau yang sering disebut Web saja. Java juga mendukung aplikasi klien/server, baik dalam jaringan lokal (LAN) maupun jaringan berskala luas (WAN). Java dikembangkan oleh Sun Microsystems pada Agustus 1991, dengan nama Oak.Program Java tidak bergantung pada platform, artinya Java dapat dijalankan pada sebarang komputer dan sistem operasi.
II.4.1.Pemrograman Java
Program Java dapat dibedakan menjadi dua jenis, yaitu applet dan aplikasi. 1. Applet adalah program yang dibuat dengan Java, dapat diletakkan pada Web
server dan diakses melalui Web browser. Dalam hal ini browser yang digunakan adalah yang memiliki kemampuan Java (misalnya Netscape Navigator, Internet Explorer, dan HotJava).
2. Aplikasi adalah program yang dibuat dengan Java yang bersifat umum. Aplikasi dapat dijalankan secara langsung, tidak perlu perangkat lunak browser untuk menjalankannya. Aplikasi ini seperti program yang ditulis dengan bahasa C atau Pascal. Setelah dikompilasi, program ini dapat dieksekusi secara langsung.
(Kadir, 2004)
II.4.2.Dasar Bahasa Java
Berikut ini adalah dasar bahasa yang digunakan dalam pemrograman java: a. Karakter
Elemen terkecil pada pemrograman Java adalah karakter yaitu berupa: 1) huruf (A sampai dengan Z, a sampai dengan z)
2) angka (0 sampai dengan 9) 3) simbol (misalnya * dan ! )
4) kode kontrol (misalnya formfeed dan newline ) b. Kata Kunci
Java memiliki sejumlah kata yang bermakana khusus. Kata-kata ini digolongkan sebagai kata kunci atau kata tercadang. Kata kunci tidak dapat digunakan sebagai pengenal.
Contoh:
abstract do new static
break extends private switch
case for public try
class if return void
continue import short while
c. Pengenal (identifier)
Pengenal (identifier) adalah nama yang diciptakan oleh pemrogram atau digunakan di dalam program untuk memberi nama kelas atau variabel pada program. Aturan pemberian nama pengenal adalah sebagai berikut:
1) Karakter pertama berupa huruf, tanda garis bawah ( _ ), atau tanda dolar ($)
2) Karakter kedua dan seterusnya dapat berupa sebarang huruf atau angka
3) Panjang pengenal bebas
4) Huruf kapital dan huruf kecil diperlakukan beda d. Tipe data primitif
Java memilik 8 tipe data primitif, meliputi 4 tipe bilangan bulat, 2 tipe untuk bilangan titik mengambang, dan sisanya untuk karakter dan boolean
2) Tipe bilangan titik mengambang: float dan double 3) Tipe karakter: char
4) Tipe data boolean: boolean e. Literal
Literal adalah suatu nilai yang dituliskan pada kode sumber Java. Literal pada Java dapat dibedakan menjadi:
1) literal bilangan 2) literal karakter 3) literal boolean 4) literal string f. Variabel
Variabel menyatakan suatu lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu nilai dan nilai yang ada di dalamnya bisa diubah. Contoh:
String kalimat;
int i;
g. Komentar
Komentar bisa dipakai dalam program dengan tujuan untuk memberikan penjelasan atau informasi kepada pembaca program.
Contoh: /* ini sebuah komentar */
// ini juga komentar
(Kadir, 2004)
BAB III
METODE PENELITIAN
Adapun langkah-langkah penyelesaian masalah penulisan skripsi ini adalah sebagai berikut:
1. Mengkaji materi Uncapacitated Facility Location Problem (UFLP) dan Algoritma Particle Swarm Optimization d Local Search (PSO-LS).
2. Menerapkan proses algoritma PSO-LS dengan langkah-langkah sebagai berikut :
a) Menginisialisasi posisi ( ) dan kecepatan ( ) b) Menghitung open facility ( )
c) Mengevaluasi nilai fitness ( )
d) Menentukan Personal best dan Global best awal e) Meng-update kecepatan ( ) dan lokasi ( ) f) Meng-update vektor open facility
g) Mengevaluasi nilai fitness ( )
h) Menentukan Personal best dan Global best baru
i) Mengambil vektor posisi Gbest ( ) sebagai solusi awal algoritma local search ( )
j) Memodifikasi berdasarkan dan dan menamakan dengan
k) Mengaplikasikan operator flip ke dan mendapatkan , dengan
21
l) Membandingkan nilai fitness dan . Jika ( ) ( ), maka
diganti dengan . Jika tidak, maka dilakukan operasi flip untuk mencari solusi di sekitar . Jika didapat nilai fitness yang lebih baik dari , maka diganti dengan solusi tersebut, jika tidak, maka iterasi dilanjutkan sampai maksimum iterasi Algoritma Local Search.
m) Membandingkan nilai fitness dan . Jika ( ) ( ), maka diganti dengan .
n) Jika telah mencapai maksimum iterasi PSO-LS, disimpulkan bahwa solusi dari UFLP dengan Algoritma PSO-LS adalah .
3. Membuat program komputer dari algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) sebagai pendekatan untuk memecahkan Uncapacitated Facility Location Problem (UFLP).
4. Mengimplementasikan program pada contoh kasus.
BAB IV PEMBAHASAN
Dalam bab ini dijelaskan penggunaan Algoritma Particle Swarm Optimization dengan Local Search untuk menyelesaikan Uncapacitated Facility Location Problem .
Tujuan menyelesaikan Uncapacitated Facility Location Problem adalah meminimalkan total biaya dalam membangun fasilitas dan biaya untuk melayani semua customer.
IV.1 Masalah Lokasi
Dalam bentuk yang sederhana, masalah lokasi didefinisikan sebagai permasalahan untuk menentukan suatu lokasi guna membangun fasilitas yang melayani beberapa customer. Dalam skripsi ini, diasumsikan terdapat beberapa lokasi untuk membangun beberapa fasilitas dengan biaya tertentu dan setiap fasilitas memiliki biaya-biaya tersendiri dalam melayani customer. Dalam skripsi ini juga dibahas bahwa fasilitas yang dibangun tidak mempunyai batasan jumlah dalam melayani customer. Masalah ini dinamakan Uncapacitated Facility Location Problem.
untuk melayani customer menyajikan data biaya bagi setiap fasilitas untuk melayani customer. Sesuai dengan tujuan penyelesaian UFLP yaitu meminimumkan biaya, maka pada Tabel 4.2 dipilih biaya pelayanan customer paling minimum, dengan syarat fasilitas tersebut dibangun.
Tabel 4.1 Biaya untuk Membangun Fasilitas
Lokasi 1 Lokasi 2 Lokasi 3 ... Lokasi n
Biaya fc1 fc2 fc3 ... fcn
Tabel 4.2 Biaya untuk Melayani Customer
Fasilitas 1 Fasilitas 2 Fasilitas 3 ... Fasilitas n
Customer 1 c11 c12 c13 … c1n
Customer 2 c21 c22 c23 … c2n
Customer 3 c31 c32 c33 … c3n
… … … … … …
Customer m cm1 cm2 cm3 … cmn
Keterangan:
n = banyaknya lokasi yang akan dibangun fasilitas
fci = biaya yang dibutuhkan untuk membangun fasilitas i pada lokasi ke-i. m = banyaknya customer
cij = biaya untuk melayani customer ke-j pada fasilitas ke- i. i = 1, 2, ..., n
j = 1, 2, ..., m
Adapun prosedur penyelesaian Uncapacitated Facility Location Problem dengan Algoritma PSO-LS akan dijelaskan pada subbab selanjutnya.
IV.2 Particle Swarm Optimization
Algoritma Particle Swarm Optimization (PSO) merupakan salah satu teknik pencarian solusi yang diadopsi dari perilaku sosial binatang. Partikel-partikel sebagai kandidat solusi PSO dianalogikan sebagai burung atau ikan yang mencari makan bersama dalam suatu gerombolan besar (swarm). Partikel sebagai penyelesaian dari UFLP mempunyai tiga komponen inti, yaitu vektor posisi, vektor kecepatan, dan vektor open facility. Terdapat tiga prosedur pokok dalam Algoritma PSO, yaitu: inisialisasi komponen partikel, evaluasi nilai fitness partikel, dan update komponen partikel.
Inisialisasi komponen partikel meliputi pembangkitan posisi dan kecepatan partikel serta penghitungan vektor open facility. Setelah prosedur inisialisasi selesai, dilakukan evaluasi terhadap masing-masing partikel. Proses evaluasi meliputi penghitungan biaya membangun fasilitas dan biaya pelayanan customer. Besarnya biaya pembangunan fasilitas bergantung pada banyaknya fasilitas yang dibangun. Setiap fasilitas yang dibangun diasumsikan dapat melayani setiap customer, hanya saja dipilih biaya pelayanan paling minimum. Jumlahan dari biaya pembangunan fasilitas dan biaya pelayanan customer inilah yang menjadi nilai fitness tiap partikel. Nilai fitness ini kemudian menjadi dasar untuk menetapkan vektor-vektor Personal Best dan vektor Global Best, makin kecil nilai fitness, semakin besar pula kesempatan partikel itu untuk menjadi vektor Personal Best dan Global Best. Partikel sebagai vektor global best nantinya dipilih sebagai solusi untuk Algoritma PSO.
menggunakan persamaan (2.5), selanjutnya menempatkan posisi partikel sebagaimana persamaan (2.6) dan terakhir menghitung vektor open facility dengan persamaan (2.4). Berikut Algoritma Particle Swarm Optimization (PSO) berdasarkan Sevkli dan Guner(2006) dengan sedikit perubahan.
Algoritma
Begin
Initialize particles positions ( ) Initialize particles velocities ( ) for each particle
Find open facility vector ( ) Evaluate
Find the personal best ( ) and the global best ( ) Do {
Update velocity and position vectors Update open facility vector
Evaluate
Find the personal best ( ) and the global best ( ) } while (Termination)
End End
IV.3 Local Search
Algoritma Local Search (LS) diaplikasikan dalam Algoritma PSO untuk meningkatkan kualitas solusi, yaitu dengan mencari solusi pada daerah sekitar Global Best. Vektor Global Best yang didapatkan pada tiap iterasi PSO kemudian diambil sebagai Initial solution (solusi awal) bagi Algoritma Local Search. Dalam Algoritma Local Search, adalah posisi Global Best partikel, adalah solusi awal Algoritma Local Search, adalah hasil modifikasi , η dan κ adalah bilangan random integer sebagai operator yang berfungsi untuk menutup fasilitas yang terbuka atau sebaliknya, t adalah banyaknya iterasi, serta f( ) adalah nilai
fitness . Berikut Algoritma Local Search (LS) berdasarkan Sevkli dan Guner (2006) dengan sedikit perubahan.
Algoritma
Begin
;
Modify based on η and κ; for t 0 to max_iter do
Apply Flip to and get ; if ( f( ) ≤ f( ) ) do
else
t = t+1; end
end
if f( ) ≤ f( ) do ; end
End
IV.4 Particle Swarm Optimization dengan Local Search
Algoritma
Begin
Initialize particles positions ( ); Initialize particles velocities ( ); for each particle
Find open facility vector ( ); Evaluate;
Find the personal best ( ) and the global best ( ); Do {
Update velocity and position vectors; Update open facility vector;
Proses pengerjaan algoritma pertama kali adalah pengisian parameter. Parameter yang digunakan diantaranya: sw_size adalah jumlah partikel dalam satu swarm, dan adalah konstanta tingkat pengalaman partikel atau disebut juga koefisien sosial dan kognitif, PSOLSIter adalah jumlah iterasi maksimum yang ditetapkan untuk Algoritma PSO-LS, dan LSIter adalah jumlah iterasi untuk Algoritma Local Search. Di bawah ini adalah algoritma pengisian parameter.
Algoritma
Begin
Swarm size: sw_size;
The social and cognitive variables: and ; Number of PSO-LS iteration: PSOLSIter; Number of LS iteration: LSIter;
End
IV.4.2 Generate Posisi
Himpunan vektor posisi ( ) terdiri dari sejumlah n.m komponen posisi ( ), dimana n adalah jumlah partikel dan m adalah jumlah lokasi. Algoritma untuk membangkitkan komponen vektor posisi ( ) diberikan di bawah ini.
Algoritma
Begin
for i1 to n
for j1 to m
random number in range [-10,10];
end
end
End
IV.4.3 Generate Kecepatan
Himpunan vektor kecepatan ( ) terdiri dari sejumlah n.m komponen, dimana n adalah jumlah partikel dan m adalah jumlah lokasi, serta adalah komponen Algoritma untuk membangkitkan diberikan di bawah ini.
Algoritma
Begin
for i 1 to n
for j 1 to m
random number in range [-4,4];
end
end
IV.4.4 Mendapatkan open facility
Himpunan vektor open facility ( ) terdiri dari sejumlah n.m komponen open facility( ). Berdasarkan persamaan (2.4), komponen Open Facility partikel ( )
berasal dari sisa hasil bagi dua untuk bilangan bulat terbesar komponen
posisi partikel ( ). Algoritma untuk mendapatkan diberikan di bawah ini.
Algoritma
Begin
for i1 to n
for j1 to m
Compute ⌊ ⌋ ;
end
end
End
IV.4.5 Evaluasi
Pada saat proses evaluasi, semua partikel dihitung nilai fungsi tujuannya. Adapun nilai fungsi tujuan masing-masing partikel (nilai Z) disebut juga sebagai nilai fitness ( ). Berikut algoritma untuk menghitung nilai fungsi tujuan (evaluasi) partikel.
Algoritma
Begin
for particle 1 to sw_size;
∑ ∑ ∑
Set fitness(particle) value ; end
End
IV.4.6 Penentuan Personal Best ( )
Personal Best adalah vektor posisi partikel ke-i ( ) dengan nilai fitness terbaik pada iterasi tertentu. Nilai fitness personal best pada partikel ke-i dinotasikan dengan , dengan * + dan adalah nilai fitness partikel ke-i pada saatiterasi ke-t. Berikut algoritma penentuan personal best.
Algoritma
Begin
for t 1 to max_iter for i 1 to sw_size
{ };
position vektor when ; end
end End
IV.4.7 Penentuan Global Best
Global Best adalah vektor posisi partikel dalam satu swarm dengan nilai fitness terbaik. Nilai fitness global best pada swarm dinotasikan dengan , dimana
{ } , dengan adalah nilai fitness personal best pada partikel ke-i. Dengan demikian, adalah vektor posisi dimana nilai fitness partikel adalah nilai fitness terbaik dalam swarm ( ). Berikut algoritma penentuan global best.
Algoritma
Begin
for t 1 to max_iter for i 1 to sw_size
{ };
position vektor when ; end
IV.4.8 Update Kecepatan
Setelah mendapatkan vektor-vektor Personal Best dan vektor Global Best, dapat dilakukan proses update kecepatan partikel. ( ) adalah komponen kecepatan untuk partikel ke-i pada iterasi ke-t, w adalah bobot inersia, dan adalah koefisien social dan kognitif, dan adalah bilangan yang dibangkitkan secara random, ( ) adalah komponen vektor posisi personal best pada iterasi ke-t, ( )adalah komponen vektor posisi pada iterasi ke-t, ( )adalah komponen vektor posisi global best pada iterasi ke-t. Algoritma untuk meng-update kecepatan diberikan di bawah ini.
Algoritma
Begin
for t 1 to max_iter for i 1 to n for k 1 to m
( ) ( ) ( ( ) ( )) ( ( ) ( ))
end end end
End
IV.4.9 Update Posisi
Setelah sebelumnya dilakukan proses update kecepatan, maka selanjutnya dilakukan proses update posisi. Komponen vektor posisi pada iterasi ke-(t+1) yang dinotasikan sebagai ( ), adalah jumlahan komponen vektor posisi pada iterasi ke-t ( ) dengan komponen vektor kecepatan pada iterasi ke-(t+1) ( ( )). Proses update posisi dilakukan dengan Algoritma berikut ini.
Algoritma
Begin
for t1 to max_iter for i1 to n for k1 to m
( ) ( ) ( ) end
end end
End
Setelah didapat vektor posisi baru, dilakukan update vektor open facility. Kemudian dilakukan evaluasi tiap partikel baru, kemudian ditentukan Personal Best dan Global best baru. Global best adalah solusi untuk algoritma PSO. Vektor posisi Global best inilah yang kemudian menjadi solusi awal bagi Algoritma Local Search.
IV.4.10 Modifikasi Solusi Awal Algoritma Local Search
Solusi awal untuk algoritma local search ( ) adalah vektor posisi baru yang merupakan vektor posisi global best ( ). kemudian dimodifikasi berdasarkan dua bilangan random integer dan yang berfungsi untuk memilih fasilitas mana yang akan dibuka atau ditutup. yang telah dimodifikasi ini kemudian menjadi solusi baru ( ). Algoritma untuk modifikasi menjadi adalah berikut ini.
Algoritma
Begin
while ( or ) do
Modify by formulation:
{ end
IV.4.11 Mengaplikasikan operator flip ke dan Mendapatkan
Aplikasi operator flip pada vektor posisi berfungsi untuk membuka atau menutup fasilitas berdasarkan bilangan random . Awalnya bilangan random dibangkitkan, kemudian dipilih formulasi flip yang sesuai dengan . Algoritma untuk mengaplikasikan operator flip adalah berikut ini.
Algoritma
Begin
Generate random number while i1 to n
Flip s by formulation:
{
end
after flip; End
Dengan , - dan [ ( )].
Setelah operasi flip telah dilakukan, langkah selanjutnya adalah membandingkan nilai fitness dan . Jika ( ) ( ), maka diganti dengan
. Jika tidak, maka ulangi hingga max_iter. Setelah iterasi selesai, langkah terakhir adalah membandingkan nilai fitness dan . Jika ( ) ( ), maka gantilah dengan . Solusi dari Algoritma PSO-LS adalah .
IV.5 Program
Berdasarkan prosedur yang telah dijelaskan sebelumnya, dibuat program untuk menyelesaikan uncapacitated facility location problem dengan menggunakan Java seperti pada Lampiran 3. Program ini dibuat untuk
mempermudah perhitungan dalam menentukan total biaya minimum atau fungsi tujuan UFLP dengan Algoritma PSO-LS.
IV.6 Data
Data Uncapacitated Facility Location Problem (UFLP) yang digunakan pada skripsi ini terdiri dari dua jenis data, yaitu:
1. Data dengan 10 lokasi dan 15 customer yang diakses dari Beasley (2005a)
dengan sedikit modifikasi yaitu dengan mengurangi jumlah lokasi dan jumlah customer untuk memudahkan perhitungan secara manual (Lampiran 1). 2. Data 50 lokasi dan 50 customer yang diambil dari situs Beasley (2005b)
(Lampiran 2).
IV.7 Contoh Uncapacitated Facility Location Problem (UFLP) dengan
Menggunakan Data 10 Lokasi dan 15 Customer yang Diselesaikan secara
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:
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
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
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
Tabel 4.8 Vektor kecepatan setelah di-update
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
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
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
customer Nilai fungsi tujuan
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
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
IV.8 Implementasi Program Pada Contoh Kasus Uncapacitated facility
location problem
Program dari algoritma PSO-LS yang telah dibuat (Lampiran 3), digunakan untuk menyelesaikan Uncapacitated Facility Location Problem dengan data pada Lampiran 1 dan Lampiran 2.
IV.8.1 Menggunakan Data pada Lampiran 1
Hasil running program dengan parameter: sw_size =10, ,
dan , didapat nilai fungsi tujuan (Z) sebesar 151.558,725. Hasil selengkapnya pada Lampiran 4.
Berdasarkan perhitungan manual pada Data Lampiran 1, diperoleh Nilai fungsi tujuan sebesar 168.545,79. Di sisi lain, perhitungan data Lampiran 1 menggunakan program yang telah dibuat menghasilkan nilai fungsi tujuan sebesar 151.558,725. Hal ini menunjukkan bahwa dengan menggunakan program, didapatkan nilai fungsi tujuan yang lebih baik.
IV.8.2 Menggunakan Data pada Lampiran 2
Dalam mengaplikasikan program untuk menyelesaikan uncapacitated facility location problem untuk data Lampiran 2 dengan menggunakan parameter-parameter: sw_size =10, , dan diperoleh hasil partikel dengan fitness terbaik seperti pada Lampiran 5.
IV.8.3 Perbandingan Hasil Perhitungan dengan Parameter Berbeda Pada
Algoritma PSO-LS menggunakan Data pada Lampiran 1
Dalam mengaplikasikan program untuk menyelesaikan uncapacitated facility location problem dengan data Lampiran 1 menggunakan ukuran partikel sejumlah lokasi yaitu 10, iterasi PSO dan iterasi LS sebanyak 10 kali. Dalam hal ini, digunakan ukuran swarm (sw_size) sebanyak 10, 30, dan 50 partikel, dengan koefisien sosial dan kognitif ( dan ) masing-masing merupakan kombinasi dari 1, 3, dan 5 sehingga diperoleh hasil seperti pada Tabel 4.14.
Tabel 4.14 Hasil perbandingan perhitungan nilai fungsi tujuan (Z) pada data Lampiran 1
Ukuran swarm Z
IV.8.4 Perbandingan Hasil Perhitungan dengan Parameter Berbeda Pada
Algoritma PSO-LS menggunakan Data pada Lampiran 2
Dalam mengaplikasikan program penyelesaian uncapacitated facility location problem dengan data Lampiran 2 dengan variabel input ukuran partikel sejumlah lokasi yaitu 50, iterasi PSO dan iterasi LS sebanyak 10 kali. Dalam hal ini, digunakan ukuran swarm (sw_size) sebanyak 10, 30, dan 50, dan koefisien sosial dan kognitif ( dan ) masing-masing adalah kombinasi 1, 3, dan 5, sehingga diperoleh hasil seperti pada Tabel 4.15.
Tabel 4.15 Hasil Perbandingan perhitungan nilaifungsi tujuan pada data Lampiran 2
Ukuran swarm Z
10 1
1 793.439,5625 3 793.439,5625 5 793.439,5625