Algoritma MSO (Multi Swarm Optimization) 6


Algoritma MSO (Multi Swarm Optimization) adalah salah satu algoritma optimasi yang dapat digunakan untuk pengambilan keputusan, tetapi bisa juga digunakan untuk pencarian jalur. Contoh yang dibahas kali ini adalah mengenai pencarian posisi dengan pengembalian nilai fungsi minimal. .
Multi Swarm Optimization berdasarkan pada Algoritma PSO (Particle Swarm Optimization), dengan perbedaan adalah penggunaan beberapa sub-swarm dibandingkan dengan cara normal yang hanya 1 swarm. Setiap swarm nantinya berfokus pada daerah sendiri-sendiri dan tetap dipengaruhi oleh variabel tertentu yang hanya mempengaruhi tiap swarm. Algoritma ini cocok digunakan untuk optimasi solusi yang memiliki lebih dari 1 solusi pada daerah yang tidak berdekatan.



Diasumsikan ada sebaran titik 3 dimensi, yaitu dimensi x, y, z
Masing-masing dimensi memiliki sebuah konstanta dan batas rentang titik yang dapat digunakan
Contoh data pada masing-masing dimensi adalah sebagai berikut

Dimensi konstanta batas minimal batas maksimal
x 3.2 10 50
y 3 30 80
z 2.5 50 150

Contoh data awal adalah sebagai berikut:

Nilai fungsi yang diketahui adalah dengan rumus f(x, y, z) = (kx * x^2) + (ky * y^2) + (kz * z^2)
Tentukan posisi dimana fungsi tersebut mengembalikan nilai minimal
Dengan batasan nilai bahwa x + y + z harus bernilai 210



Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan dimensi permasalahan
Diasumsikan dalam kasus ini, dimensi bernilai 3 karena ada 3 dimensi yang akan dicari solusinya

* Tentukan jumlah partikel yang digunakan dalam perhitungan
Diasumsikan dalam kasus ini, jumlah partikel yang digunakan adalah 4 partikel

* Tentukan jumlah swarm yang digunakan dalam perhitungan
Diasumsikan dalam kasus ini, jumlah swarm yang digunakan adalah 3 swarm

* Tentukan jumlah iterasi yang digunakan oleh setiap partikel untuk melakukan proses
Diasumsikan dalam kasus ini, jumlah iterasi yang digunakan adalah 50 kali

* Tentukan total posisi yang harus dicapai
Semua solusi yang ditemukan oleh masing-masing individu harus berjumlah sebanyak variabel ini
Diasumsikan dalam kasus ini, total nilai yang harus dicapai adalah 210

* Tentukan batas kecepatan untuk perpindahan posisi partikel dalam setiap proses
Diasumsikan dalam kasus ini nilai minimal dan nilai maksimal adalah 10% dari masing-masing batas nilai pada tiap-tiap dimensi
Sebagai contoh kasus, apabila nilai minimal dan maksimal dari sebuah dimensi adalah 10 dan 50,
Maka nilai minimalnya adalah -(50-10)/10 = -4, dan nilai maksimalnya adalah (50-10)/10 = 4


Langkah-langkah penggunaan algoritma ini adalah

1. Inisialisasi semua komponen yang dibutuhkan dalam perhitungan, yaitu partikel, swarm, dan multiswarm
Buat matriks Multiswarm sebanyak variabel jumlahSwarm
Buat matriks Swarm sebanyak variabel jumlahPartikel, dan masukkan masing-masing Swarm ke dalam matriks MultiSwarm
Buat partikel sebanyak variabel jumlahSwarm * jumlahPartikel, dan masukkan masing-masing Partikel ke dalam matriks Swarm
Beri nilai posisi partikel awal dengan posisi acak
Kemudian cari nilai fitness nya
Ambil posisi terbaik sementara berdasarkan nilai fitness tertinggi sementara
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

* Agar dapat menjalankan skrip diatas, maka diperlukan beberapa Class, yaitu Class Multiswarm, Class Swarm, dan Class Partikel.
Class Partikel berisi data posisi, kecepatan, dan nilai fitness partikel tersebut
Class Swarm berisi data partikel beserta posisi dan nilai fitness terbaik pada swarm tersebut
Class MultiSwarm berisi data swarm beserta posisi dan nilai fitness terbaik pada swarm tersebut
Deklarasi masing-masing Class adalah sebagai berikut:

* Gunakan fungsi ini untuk menghitung nilai fitness pada masing-masing partikel
Rumus yang digunakan adalah sesuai dengan rumus yang sudah ditentukan, yaitu
f(x, y, z) = (kx * x^2) + (ky * y^2) + (kz * z^2)

2. Lakukan proses pencarian posisi terbaik sebanyak jumlah perulangan
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini (poin 2a – 2d)

2a. Tentukan bobot inertia (w), bobot kognitif (c1), bobot sosial (c2), dan bobot global (c3)
Nilai acuan untuk masing-masing variabel dapat dilihat di http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=00870279
Diasumsikan dalam kasus ini, nilai bobot tersebut akan mengikuti nilai acuan yang sudah ada

2b. Tentukan probabilitas sebuah partikel akan dibuang dan dibuat ulang
Diasumsikan dalam kasus ini, nilai probabilitas tersebut adalah 0.005

2c. Tentukan probabilitas sebuah partikel akan bertukar dengan partikel acak dalam swarm acak
Diasumsikan dalam kasus ini, nilai probabilitas tersebut adalah 0.005

2d. Lakukan proses pencarian posisi terbaik sebanyak jumlah perulangan (poin 2d1 – 2d9)

2d1. Lakukan perulangan untuk setiap partikel
Cari angka acak antara 0 sampai dengan 1
Jika angka acak termasuk dalam probabilitas pembuangan partikel, maka lakukan pembuangan dan buat ulang partikel tersebut

2d2. Cari angka acak antara 0 sampai dengan 1
Jika angka acak termasuk dalam probabilitas pertukaran partikel, maka lakukan pertukaran partikel
Partikel akan ditukar dengan partikel acak dalam swarm acak

2d3. Cari kecepatan perpindahan posisi yang baru dengan rumus:
v baru = (w * v skrg) + (c1 * r1 * (posisi partikel terbaik – posisi partikel skrg)) + (c2 * r2 * (posisi swarm terbaik – posisi partikel skrg) + (c3 * r3 * (posisi multiswarm terbaik – posisi partikel skrg))
Jika kecepatan yang baru ternyata diluar batas variabel minKecepatan dan maksKecepatan (-1 s/d 1), maka kembalikan kecepatan agar masuk dalam batas

2d4. Lakukan update posisi yang baru dengan cara posisi lama + kecepatan baru
Jika posisi yang baru ternyata diluar batas variabel minX dan maksX (0 – 5), maka kembalikan posisinya agar masuk dalam batas

2d5. Sama seperti perhitungan sebelumnya, jumlah posisi yang baru belum tentu sesuai dengan parameter totalPosisi
Oleh karena itu, lakukan penyesuaian posisi agar jumlah posisi selalu bernilai sama dengan parameter totalPosisi

2d6. Hitung nilai fitness untuk posisi yang baru

2d7. Jika nilai fitness baru lebih baik dari nilai fitness yang diperoleh partikel tersebut sebelumnya, maka ambil posisi yang baru sebagai posisi terbaik partikel tersebut

2d8. Jika nilai fitness baru ternyata lebih baik dari nilai fitness swarm partikel tersebut, maka ambil posisi yang baru sebagai posisi terbaik swarm partikel tersebut

2d9. Jika nilai fitness baru ternyata lebih baik dari nilai fitness umum, maka ambil posisi yang baru sebagai posisi terbaik secara umum


Hasil akhir adalah: (klik untuk perbesar gambar)

cmd35a


Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.


Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

6 pemikiran di “Algoritma MSO (Multi Swarm Optimization)

    • pip Penulis

      File yang saya bagikan adalah skrip bertipe konsol. Setelah anda menjalankan Visual Studio, silahkan membuat proyek baru dengan tipe “Console Application”, kemudian salin isi skrip pada file yang disediakan atau anda bisa menimpa langsung modul kosong pada proyek tersebut.

  • athir

    malam min
    pada contoh kasus admin diatas menggunakan satu fungsi yaitu f(x, y, z) = (kx * x^2) + (ky * y^2) + (kz * z^2)

    jika kasusnya ada tiga variable [v f a]
    LB[130 0.151.5]
    UB[140 0.2 2.0]

    fungsinya ada 4
    VB = 0.166 + 0.017 v + 0.135 f + 0.015 a
    tc = 94.1 – 0.32 v – 14 f – 5.06 a
    Ra = – 3.98 + 0.0228 v + 8.65 f + 0.745 a
    VMR = 24 – 13.2 v – 16 f + 77.4 a

    mohon pencerahannya min
    bagaimana cara menghitung ke empat fungsi tersebut sekalian

    • pip Penulis

      Jika perhitungan fungsi menggunakan lebih dari 1 fungsi, maka harus diketahui tujuan apakah yang ingin anda cari pada permasalahan tersebut. Apakah dari keempat fungsi tersebut terhubung satu sama lain, ataukah ada urutan prioritas, ataukah ada fungsi yang bergantung dan tidak bergantung pada fungsi lainnya, ataukah ada kondisi tambahan lainnya sehubungan dengan keempat fungsi tersebut. Silahkan coba diceritakan secara lebih lanjut.