Monday, January 12, 2015

MATLAB : PENERAPAN PARTICLE SWARM OPTIMIZATION (PSO) UNTUK MENCARI NILAI MINIMUM SEBUAH FUNGSI

Beberapa waktu yang lalu saya sudah share penerapan algoritma GA (Genetic Algoritma), sekarang saya ingin share adiknya GA :D yaitu Particle Swarm Optimization atau PSO.
Langsung aja kali yah.. Oh ya, bagi yang butuh informasi lebih mengenai PSO, bisa buka http://en.wikipedia.org/wiki/Particle_swarm_optimization.

Fungsi/Permsalahan:
 

Definisi:
Dalam contoh kali ini, ada beberapa term yang harus diketahui, yaitu:
  1.   Partikel, partikel adalah representasi dari kandidat solusi pada PSO. Pada contoh kali ini, kita menggunakan 100 partikel.
  2.  Lokasi Partikel, jumlah decision variable ada dua, yaitu dan y. Kita merepresentasikan dua variabel ini sebagai lokasi partikel. Sehingga lokasi partikel terdiri dari dua buah komponen, yaitu x dan y. Untuk nilai awal (inisialisai) nilai x dan y adalah random. Sedangkan range untuk variabel ini bergantung pada konstrain dari fungsi atau permasalahan. Range untuk variabel x adalah 1-(-1) = 2 dan range untuk variabel y adalah 3-0 = 3.
  3. Particle Best (pBest)pBest adalah solusi terbaik pada setiap partikel (lokal optima). Kita mengevaluasi/update nilai dari pBest pada setiap generasi/iterasi. Kita mengupdate nilai dari pBest jika nilai fitness nya lebih baik (untuk kasus ini lebih kecil, karena fungsi minimisasi) dari fitness pBest iterasi sebelumnya.
  4. Global Best (gBest)gBest adalah solusi terbaik di antara semua pBest (global optima). Kita mengevaluasi atau mengupdate nilai gBest pada setiap generasi/iterasi. Kita mengupdate nilai dari gBest jika nilai fitness nya lebih baik (untuk kasus ini lebih kecil, karena fungsi minimisasi) dari fitness gBest iterasi sebelumnya.


Tuning Parameter
Untuk mendapatkan hasil yang lebih bagus, kita perlu melakukan tuning parameter. banyak cara untuk tune parameter, kali ini kita pilih yang Constriction factor untuk mengupdate nilai kecepatan (v).




Constraint handling
Untuk constraint handling, kita menggunakan adhere strategi. Adhere strategi ini maksudnya adalah jika ada partikle yang nilainya melebihi konstraint, maka kita ubah nilai partikel tersebut ke nilai batas dari konstraint. Adhere strategi dapat diilustrasikann dengan gambar berikut:


Source Code Program
 
 

No comments:

Post a Comment