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
Dr. Miswanto, M.Si NIP. 19680204 199303 1 002
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.
2. Kementerian Agama RI, khususnya Direktorat Pendidikan Diniyah dan Pondok Pesantren RI, Pak Roni, Pak Ruchman, Pak Imam, Pak Fuad, Bu lilik, Bu Nyoman, serta pihak-pihak lain sebagai wakil KEMENAG yang telah
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.
Kata Kunci: Algoritma Particle Swarm Optimization (PSO), Algoritma Local
Search (LS), Masalah Lokasi, Uncapacitated Facility Location Problem.
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
2.3.5. Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) ... 14
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
V.1 Kesimpulan ... 49 V.2 Saran ... 50 DAFTAR PUSTAKA ... 51 LAMPIRAN
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.
Particle Swarm Optimization (PSO) adalah salah satu teknik pencarian metaheuristik yang dikenalkan pertama kali pada tahun 1995 oleh Russell Eberhart dan James Kennedy berdasarkan pada perilaku interaksi sosial dan komunikasi pada segerombolan binatang, diantaranya sekawanan burung yang terbang di angkasa dan sekelompok ikan. Solusi-solusi potensial, yang disebut dengan partikel, bergerak mengelilingi sebuah ruang pencarian dengan suatu kecepatan, yang diperbaharui secara konstan oleh pengalaman partikel itu sendiri dan pengalaman dari anggota swarm yang lain atau pengalaman dari keseluruhan swarm. Tiga vektor kunci partikel solusi UFLP dalam PSO adalah vektor posisi ( ), vektor kecepatan ( ) dan vektor open facility ( ). dan pertama kali
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
Batasan masalah dalam skripsi ini yaitu pada saat proses inisialisasi, posisi ( ) dibangkitkan secara random pada interval [-10,10], sedangkan kecepatan ( ) dibangkitkan secara random pada interval [-4,4].
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 )
Pada model di atas, persamaan (2.1) menunjukkan biaya total untuk mendirikan fasilitas dan memenuhi permintaan dari costumer. Kendala persamaan (2.2) digunakan untuk memastikan bahwa permintaan dari tiap costumer hanya dilayani oleh satu fasilitas. Kendala persamaan (2.3) untuk memastikan costumer j hanya bisa dilayani oleh fasilitas i jika fasilitas tersebut dibangun pada lokasi i dan menunjukkan bahwa variabel keputusan adalah variabel biner 0 dan 1.
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)
Particle Swarm Optimization (PSO) merupakan salah satu teknik komputasi evolusioner yang mempunyai kesamaan dengan Genetic Algorithm, yaitu dimulai dengan membangkitkan populasi secara random. Namun PSO tidak memiliki operator evolusi, yaitu crossover dan mutasi. Hal lain yang berbeda dengan Genetic Algorithm atau teknik komputasi evolusioner lainnya adalah setiap partikel di dalam PSO juga berhubungan dengan suatu kecepatan. Partikel-partikel tersebut bergerak melalui penelusuran ruang dengan kecepatan yang dinamis berdasarkan perilaku historisnya. Oleh karena itu, partikel-partikel mempunyai kecenderungan untuk bergerak ke ruang penelusuran yang lebih baik setelah melewati proses penelusuran sebelumnya.
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:
( ) ( ) dengan: adalah bobot inersia yang dibangkitkan secara random pada interval [ ], dan adalah parameter sosial dan kognitif yang nilainya
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
Untuk menyelesaikan UFLP, operator flip dipekerjakan sebagai sebuah struktur sekitar. Fungsi operator flip ini adalah untuk membuka atau menutup sebuah fasilitas. Awalnya sebuah bilangan random ( ) dibangkitkan untuk menentukan formulasi flip yang akan dipakai, kemudian untuk [ ], dan [ ], komponen di-update menggunakan persamaan 2.8 sebagai berikut:
{
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.
Penyajian data di dalam Uncapacitated Facility Location Problem dibagi menjadi dua tabel yaitu tabel biaya untuk membangun fasilitas dan tabel biaya untuk melayani customer yang masing-masing dapat dilihat pada Tabel 4.1 dan Tabel 4.2. Tabel biaya untuk membangun fasilitas menyajikan biaya-biaya yang dikeluarkan jika sebuah fasilitas dibangun pada lokasi i, sedangkan tabel biaya
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.
Setelah ditetapkan vektor-vektor Personal Best dan vektor Global Best, dilakukan update komponen partikel. Kecepatan partikel di-update pertama kali
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 Particle Swarm Optimization dengan Local Search (PSO-LS) merupakan gabungan algoritma PSO dengan algoritma LS. Pada awalnya dilakukan proses inisialisasi awal komponen partikel, evaluasi awal dan penetapan personal best dan global best awal. Kemudian pada saat iterasi, dilakukan update komponen partikel, evaluasi lagi hingga didapat personal best dan global best baru. Global best inilah yang menjadi solusi awal algoritma LS. Proses algoritma LS dimulai dengan memodifikasi solusi awal, melakukan operasi flip, dan menentukan solusi baru jika nilai fitness solusi awal tidak lebih baik. Berikut Algoritma Particle Swarm Optimization dengan Local Search (PSO-LS) 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 ( ); Apply Local Search Algorithm;
} while (Termination) End
End
IV.4.1 Pengisian Parameter
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 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
end 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 modification; 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:
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