Algoritma FPAO (Flower Pollination Algorithm Optimization) adalah salah satu algoritma optimasi yang dapat digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah mengenai pencarian posisi dengan pengembalian nilai fungsi maksimal.
Algoritma ini meniru tingkah laku dari penyerbukan bunga oleh serangga yang ada di alam semesta. Serangga akan berpindah dari bunga ke bunga lain untuk membantu penyerbukan bunga. Tentu saja bunga yang berpenampilan lebih baik akan dipilih oleh sebuah serangga untuk dihinggapi daripada bunga yang berpenampilan kurang baik.
Diasumsikan ada sebaran titik 2 dimensi antara -2 sampai dengan 2
Fungsi yang diketahui adalah fungsi Himmelblau, dengan rumus f(x, y) = (x^2+y-11)^2 + (x+y^2-7)^2
Tentukan posisi dimana fungsi tersebut mengembalikan nilai maksimal
Fungsi Himmelblau adalah salah satu fungsi yang dapat digunakan untuk mengoptimasi suatu permasalahan. Fungsi ini memiliki sebuah nilai maksimum pada x = -0.270845, and y = -0.923039 dengan nilai fungsi sebesar f(x,y) = 181.617, dengan asumsi bahwa rentang minimal dan maksimal dari sebaran titik adalah -2 sampai dengan 2
Grafik fungsi Himmelblau yang normal, atau untuk sebaran titik tak terbatas adalah sebagai berikut.
Sedangkan Grafik fungsi Himmelblau untuk sebaran titik dengan rentang minimal -2 dan maksimal 2 adalah sebagai berikut.
Dapat dilihat bahwa pada gambar tersebut, didapatkan area dengan titik tertinggi (berwarna merah) berada pada area x = -0, and y = -1, dimana titik tersebut mengembalikan nilai fungsi tertinggi. Oleh sebab itu digunakan algoritma ini untuk mencari titik di area berwarna merah tersebut.
Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan jumlah serangga yang digunakan
Nilai yang direkomendasikan adalah 10 sampai dengan 25
Diasumsikan dalam kasus ini, hanya digunakan 10 serangga untuk mempercepat perhitungan
jumlahSerangga = 10;
* Tentukan probabilitas serangga berpindah ke bunga (titik) yang lain
Diasumsikan dalam kasus ini nilai probabilitas berpindah adalah 0.8
Sehingga serangga hanya memiliki kemungkinan 20% untuk berpindah ke bunga yang baru
probPindah = 0.8;
* Tentukan jumlah maksimal iterasi yang digunakan
Diasumsikan dalam kasus ini, jumlah maksimal iterasi adalah 500 kali
jumlahIterasi = 500;
* Tentukan jumlah dimensi yang digunakan
Diasumsikan dalam kasus ini, jumlah dimensi adalah 2 karena posisi bunga hanya ditentukan dari 2 sumbu yaitu sumbu x dan y
jumlahDimensi = 2;
* Tentukan posisi minimal dan maksimal dari fungsi yang akan dihitung
Jika tidak ada batasan posisi, tentu saja posisi yang mendekati tak terhingga akan terpilih karena akan mengembalikan nilai fungsi yang sangat besar
Diasumsikan dalam kasus ini, posisi minimal adalah -2, dan posisi maksimal adalah +2
minPosisi = -2; maksPosisi = 2;
* Tentukan matriks batas bawah dan batas atas posisi pada masing-masing dimensi yang sudah ditentukan sebelumnya
Matriks ini akan digunakan untuk mengecek apakah posisi serangga yang baru masih berada dalam batas yang diperbolehkan
Lb = minPosisi * ones(1,jumlahDimensi); Ub = maksPosisi * ones(1,jumlahDimensi);
Langkah-langkah penggunaan algoritma ini adalah
* Lakukan proses perhitungan dengan metode FPAO (Flower Pollination Algorithm Optimization)
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 1 – 3)
[posisiSeranggaTerbaik, nilaiFungsiTerbaik] = FPAO(jumlahSerangga, probPindah, jumlahIterasi, jumlahDimensi, Lb, Ub);
Memasuki perhitungan pada fungsi FPAO
1. Lakukan inisialisasi serangga pada posisi acak,
Kemudian hitung nilai fungsi pada posisi tersebut
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini
for i = 1:n, daftarSerangga(i,:) = Lb + (Ub-Lb).* rand(1,jumlahDimensi); nilaiFungsi(i) = HitungNilaiFungsi(daftarSerangga(i,:)); end
* Gunakan fungsi ini untuk menghitung nilai fungsi dengan rumus:
f(x, y) = (x ^ 2 + y – 11) ^ 2 + (x + y ^ 2 – 7) ^ 2
function z=HitungNilaiFungsi(u) z=(u(1)^2 + u(2) - 11) ^ 2 + (u(1) + u(2)^2 - 7) ^ 2;
2. Catat posisi terbaik dengan nilai fungsi tertinggi sementara
[nilaiFungsiTerbaik,I] = min(nilaiFungsi); posisiSeranggaTerbaik = daftarSerangga(I,:); daftarSeranggaTerbaik = daftarSerangga;
3. Lakukan perhitungan sebanyak jumlah iterasi
Kemudian pada masing-masing iterasi, lakukan perhitungan pada masing-masing serangga (poin 3a – 3e)
for iterasi = 1:jumlahIterasi, for i = 1:n, . . .
3a. Tentukan nilai acak antara 0 sampai dengan 1
Kemudian bandingkan apakah nilai nya lebih dari probabilitas serangga berpindah
Jika benar, maka serangga ini siap melakukan proses penyerbukan bunga ke tempat yang lain (poin 3a1 – 3a3)
if rand > p, . . .
3a1. Hitung jarak terbang yang harus ditempuh serangga tersebut dengan menggunakan fungsi Levy
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini
L = Levy(jumlahDimensi);
* Gunakan fungsi ini untuk menghitung jarak terbang serangga
Rumus yang digunakan adalah:
x_i ^ {t+1} = x_i ^ t + L(x_i ^ t-gbest)
function L=Levy(d) beta=3/2; sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta); u=randn(1,d)*sigma; v=randn(1,d); step=u./abs(v).^(1/beta); L=0.01*step;
3a2. Setelah menentukan jarak terbang, maka lakukan perhitungan posisi yang baru
Kemudian catat posisi terbaik untuk serangga tersebut
dS=L.*(daftarSerangga(i,:)-posisiSeranggaTerbaik); daftarSeranggaTerbaik(i,:)=daftarSerangga(i,:)+dS;
3a3. Lakukan pengecekan apakah posisi serangga yang baru masih berada dalam batas yang diperbolehkan
Jika posisi yang baru ternyata diluar batas yang diperbolehkan,
maka kembalikan posisinya agar masuk dalam batas tersebut
tmpPosisi=daftarSeranggaTerbaik(i,:); I=tmpPosisiUb; tmpPosisi(J)=Ub(J); daftarSeranggaTerbaik(i,:)=tmpPosisi;
3b. Jika nilai acak sebelumnya kurang dari probabilitas serangga berpindah
maka serangga hanya melakukan perpindahan ke bunga disekitar bunga awal (poin 3b1 – 3b4)
. . . else . . .
3b1. Tentukan epsilon, yaitu nilai yang sangat kecil antara 0 sampai dengan 1
epsilon=rand;
3b2. Tentukan 2 indeks serangga acak untuk digunakan pada perhitungan berikutnya
Perhitungan ini bisa saja mengembalikan indeks serangga diri sendiri
JK=randperm(n);
3b3. Hitung posisi serangga yang baru dengan rumus
x_i ^ {t+1} + epsilon * (x_j ^ t – x_k ^ t)
daftarSeranggaTerbaik(i,:)=daftarSeranggaTerbaik(i,:)+epsilon*(daftarSerangga(JK(1),:)-daftarSerangga(JK(2),:));
3b4. Sama seperti perhitungan sebelumnya,
lakukan pengecekan apakah posisi serangga yang baru masih berada dalam batas yang diperbolehkan
Jika posisi yang baru ternyata diluar batas yang diperbolehkan,
maka kembalikan posisinya agar masuk dalam batas tersebut
tmpPosisi=daftarSeranggaTerbaik(i,:); I=tmpPosisiUb; tmpPosisi(J)=Ub(J); daftarSeranggaTerbaik(i,:)=tmpPosisi;
3c. Hitung nilai fungsi pada posisi yang baru
nilaiFungsiBaru = HitungNilaiFungsi(daftarSeranggaTerbaik(i,:));
3d. Jika nilai fungsi baru lebih baik dari nilai fungsi terbaik serangga tersebut,
maka ambil posisi yang baru sebagai posisi terbaik serangga tersebut
if (nilaiFungsiBaru > nilaiFungsi(i)), daftarSerangga(i,:) = daftarSeranggaTerbaik(i,:); nilaiFungsi(i) = nilaiFungsiBaru; end
3e. Jika nilai fungsi baru lebih baik dari nilai fungsi terbaik secara umum,
maka ambil posisi yang baru sebagai posisi yang terbaik
if nilaiFungsiBaru > nilaiFungsiTerbaik, posisiSeranggaTerbaik = daftarSeranggaTerbaik(i,:) ; nilaiFungsiTerbaik = nilaiFungsiBaru ; disp(['Iterasi: ', num2str(iterasi), ... ', Serangga: ', num2str(i), ... ', Posisi terbaik: ', num2str(posisiSeranggaTerbaik), ... ', Nilai Fungsi terbaik: ', num2str(nilaiFungsiTerbaik)]); end
Hasil akhir adalah:
Algoritma FPAO (Flower Pollination Algorithm Optimization) Contoh: Mencari posisi dengan pengembalian nilai fungsi maksimal Diasumsikan ada sebaran titik 2 dimensi antara -2 sampai dengan 2 Fungsi yang diketahui adalah fungsi Himmelblau, dengan rumus f(x, y) = (x^2+y-11)^2 + (x+y^2-7)^2 Tentukan posisi dimana fungsi tersebut mengembalikan nilai maksimal Jumlah Serangga = 10 Probabilitas berpindah ke bunga lain = 0.8 Jumlah maksimal iterasi = 500 Jumlah dimensi = 2 Batas minimal posisi bunga = -2 Batas maksimal posisi bunga = 2 Iterasi: 1, Serangga: 1, Posisi terbaik: 1.2577 1.74, Nilai Fungsi terbaik: 66.3237 Iterasi: 1, Serangga: 2, Posisi terbaik: -1.6134 1.6655, Nilai Fungsi terbaik: 79.4133 Iterasi: 1, Serangga: 3, Posisi terbaik: -0.2121 -0.093823, Nilai Fungsi terbaik: 173.9643 Iterasi: 10, Serangga: 6, Posisi terbaik: 0.29824 -1.1436, Nilai Fungsi terbaik: 174.4092 Iterasi: 11, Serangga: 9, Posisi terbaik: -0.40943 -0.37694, Nilai Fungsi terbaik: 178.4629 Iterasi: 17, Serangga: 5, Posisi terbaik: -0.34098 -1.4178, Nilai Fungsi terbaik: 179.7455 Iterasi: 27, Serangga: 8, Posisi terbaik: -0.38114 -1.3224, Nilai Fungsi terbaik: 180.0067 Iterasi: 27, Serangga: 10, Posisi terbaik: -0.1215 -0.68, Nilai Fungsi terbaik: 180.4214 Iterasi: 28, Serangga: 10, Posisi terbaik: -0.23042 -1.0621, Nilai Fungsi terbaik: 181.4551 Iterasi: 36, Serangga: 10, Posisi terbaik: -0.26656 -0.9765, Nilai Fungsi terbaik: 181.5937 Iterasi: 65, Serangga: 10, Posisi terbaik: -0.27131 -0.96148, Nilai Fungsi terbaik: 181.6042 Iterasi: 76, Serangga: 9, Posisi terbaik: -0.27441 -0.95798, Nilai Fungsi terbaik: 181.6055 Iterasi: 79, Serangga: 9, Posisi terbaik: -0.273 -0.94917, Nilai Fungsi terbaik: 181.6105 Iterasi: 81, Serangga: 9, Posisi terbaik: -0.26911 -0.94614, Nilai Fungsi terbaik: 181.6122 Iterasi: 105, Serangga: 2, Posisi terbaik: -0.27301 -0.94051, Nilai Fungsi terbaik: 181.6137 Iterasi: 106, Serangga: 7, Posisi terbaik: -0.27053 -0.93975, Nilai Fungsi terbaik: 181.6142 Iterasi: 106, Serangga: 8, Posisi terbaik: -0.27533 -0.93301, Nilai Fungsi terbaik: 181.615 Iterasi: 114, Serangga: 8, Posisi terbaik: -0.27252 -0.93161, Nilai Fungsi terbaik: 181.6158 Iterasi: 116, Serangga: 9, Posisi terbaik: -0.2733 -0.93036, Nilai Fungsi terbaik: 181.6158 Iterasi: 117, Serangga: 6, Posisi terbaik: -0.27339 -0.91949, Nilai Fungsi terbaik: 181.6163 Iterasi: 118, Serangga: 10, Posisi terbaik: -0.27111 -0.92229, Nilai Fungsi terbaik: 181.6165 Iterasi: 152, Serangga: 10, Posisi terbaik: -0.27063 -0.92242, Nilai Fungsi terbaik: 181.6165 Iterasi: 164, Serangga: 10, Posisi terbaik: -0.271 -0.92297, Nilai Fungsi terbaik: 181.6165 Iterasi: 214, Serangga: 10, Posisi terbaik: -0.27075 -0.92287, Nilai Fungsi terbaik: 181.6165 Iterasi: 215, Serangga: 6, Posisi terbaik: -0.2709 -0.92292, Nilai Fungsi terbaik: 181.6165 Iterasi: 215, Serangga: 10, Posisi terbaik: -0.27083 -0.92298, Nilai Fungsi terbaik: 181.6165 Iterasi: 242, Serangga: 10, Posisi terbaik: -0.27086 -0.92298, Nilai Fungsi terbaik: 181.6165 Iterasi: 266, Serangga: 10, Posisi terbaik: -0.27082 -0.92301, Nilai Fungsi terbaik: 181.6165 Iterasi: 270, Serangga: 10, Posisi terbaik: -0.27083 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 279, Serangga: 6, Posisi terbaik: -0.27084 -0.92302, Nilai Fungsi terbaik: 181.6165 Iterasi: 284, Serangga: 7, Posisi terbaik: -0.27083 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 296, Serangga: 2, Posisi terbaik: -0.27084 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 306, Serangga: 2, Posisi terbaik: -0.27084 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 368, Serangga: 2, Posisi terbaik: -0.27084 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 391, Serangga: 3, Posisi terbaik: -0.27084 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 403, Serangga: 2, Posisi terbaik: -0.27084 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 425, Serangga: 5, Posisi terbaik: -0.27084 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 443, Serangga: 5, Posisi terbaik: -0.27084 -0.92304, Nilai Fungsi terbaik: 181.6165 Iterasi: 465, Serangga: 8, Posisi terbaik: -0.27084 -0.92304, Nilai Fungsi terbaik: 181.6165 Posisi Terbaik: -0.27084 -0.92304 Nilai Fungsi Terbaik =181.6165
Contoh modul / source code menggunakan Matlab 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.
1. iterasi itu untuk apa ya? agar dpt hasil paling optimum?
2. jadi pencarian titik yg di dapat, adalah titik yg berada pada area merah?
3. jika FPA digunakan untuk implementasi lokasi BTS, yg berperan sebagai radius antar titik, fungsi yg mana ya?
mohon penjelasannya ^^ terima kasih
1. Iterasi adalah jumlah perulangan, jadi sebanyak berapa kali proses perhitungan dijalankan untuk mendapatkan hasil optimal dari suatu kasus
2. Lebih tepatnya adalah tujuan proses perhitungan optimasi adalah untuk mencapai area merah pada grafik
3. Dengan informasi anda yang masih terlalu minimal, saya masih belum dapat memahami maksud dari pertanyaan anda. Biasanya apabila anda menggunakan jurnal teori sebagai acuan, maka dalam jurnal tersebut sudah dijelaskan bagaimanakah cara perhitungan fungsi yang dibutuhkan dalam proses optimasi tersebut. Selanjutnya adalah tinggal mengganti fungsi
function z=HitungNilaiFungsi(u)
z=(u(1)^2 + u(2) - 11) ^ 2 + (u(1) + u(2)^2 - 7) ^ 2;
sesuai dengan fungsi yang dijelaskan pada jurnal tersebut
terima kasih atas tanggapannyaa ^^ berikut akan saya berikan informasi lebih lanjut mengenai pertnyaan no.3
.
saya ingin menggunakan FPA sbg metode pada studi kasus optimasi lokasi BTS / yg biasa dikenal di masyarakat adalah tower pemancar sinyal, nah otomatis sy membutuhkan lokasi bbrp titik yg optimal pada suatu area tertentu, atau mksd piptools adalah fungsi diasumsikan sbg luas area?
terimakasih
Jika melihat kasus tersebut, berarti saya dapat asumsikan bahwa luas daerah / sebaran titik yang digunakan adalah berupa lokasi / koordinat dari masing-masing BTS, dan luas area / radius BTS digunakan sebagai salah satu batasan dalam proses optimasi. Fungsi bisa dihitung dari luas daerah dikurangi dengan banyak luas area yang tercover oleh BTS dan dioptimasi untuk dicari lokasi BTS mana saja yang paling banyak mencover sinyal dalam luas daerah tersebut.
“radius BTS digunakan sebagai salah satu batasan dalam proses optimasi” apakah yg dimaksud adalah nilai Ub dan Lb? atau menggunakan radius yg sama antar BTS?
mohon dijelaskan lebih detil mengenai kalimat terakhir karena yg sy tangkap adalah menentukan lokasi BTS utk area yg tdk trcover oleh BTS lain
Ub dan Lb merupakan batasan dari sebaran titik, yang menurut asumsi saya berarti adalah luas daerah.
Dan benar, memang maksud saya adalah menentukan lokasi BTS untuk area yang tidak tercover oleh BTS lain. Hal ini saya sebut sebagai batasan karena masing-masing kasus memiliki cara implementasi sendiri-sendiri, dan belum tentu batasan pada kasus anda adalah menggunakan batasan ini.
jika studi kasus sy adalah menentukan lokasi optimum BTS, apakah bisa jika mmg output hanya satu titik optimum lantas titik2 lain (lokasi BTS lain) menyesuaikan titik optimum tsb menggunakan radius antar titik? atau mungkin piptools punya pandangan lain?
Kalau sepemahaman saya, optimasi titiknya tidak dilihat dari 1 BTS kemudian disusun satu per satu untuk BTS lain, tetapi langsung semua BTS diletakkan pada suatu area dan radiusnya dihitung yang manakah yang mengcover paling banyak.
berarti maksudnya adalah input BTS disini sbg input jumlah serangga kemudian outputnya adalah posisi terbaik dari setiap titik? jadi kita baru tau ukuran radius ketika sudah dapat titik ya?
Ya betul. Kira-kira prosesnya seperti itu.
okeee, kalau begitu ukuran radius pada FPA ini bisa dihitung melalui apa ya? karena kan ukuran radius setiap titik berbeda
kemudian untuk bentuk fungsi apakah bisa menggunakan fungsi optimasi apapun? yang tidak bergantung pada studi kasus
Radius dari masing-masing BTS ditentukan sendiri tergantung dari cara kerja sistem tersebut. Biasanya sudah dijelaskan dalam jurnal apabila radius antar BTS ukurannya tidak sama.
Fungsi optimasi bisa menggunakan rumus apapun tetapi biasanya menyesuaikan kasus yang anda miliki, sehingga tidak bisa rumus dipilih secara acak dan dimasukkan dalam sistem. Sekali lagi biasanya rumus-rumus yang digunakan sudah tertulis pada jurnal sehingga selanjutnya adalah tinggal melakukan implementasi saja.
maaf tanya lagi ? apakah inisialisasi populasi di awal itu selalu range [0,1] atau boleh dimodif? begitu pula untuk nilai switch probability apakah harus pada range nilai [0,1]? hal ini terkait dgn implementasi pada studi kasus saya
Mengenai inisialisasi populasi dan nilai probabilitas tentu saja tergantung dari masing-masing kasus, sehingga rentang nilainya bisa berbeda tergantung kebutuhan. Jika anda sudah memiliki panduan tersendiri, maka silahkan menggunakan nilai-nilai pada jurnal tersebut sebagai acuan.
untuk implementasi pada optimasi BTS, mana ya yg merupakan interpretasi dari radius atau coverage area dari FPA?
Dalam contoh skrip ini tidak ada konstrain seperti itu karena memang dalam contoh ini tidak diperlukan pengecekan radius atau semacamnya. Dalam kasus anda, pengecekan radius dapat dilakukan setelah menghitung Levy dan melakukan perpindahan posisi dari masing-masing serangga. Sehingga anda perlu membuat 1 fungsi baru untuk melakukan pengecekan apakah radius pada semua posisi serangga yang baru sudah tidak tumpang tindih atau setidaknya tumpang tindih dengan sangat minimal.
selanjutnya untuk validasi dari algoritma ini, menggunakan apa ya?
Saya masih belum memahami validasi apakah yang anda maksud. Coba dijelaskan secara lebih detail bagian manakah yang anda maksud.
maksud saya validasi apa yang digunakan untuk membuktikan bahwa posisi titik yang dihasilkan dengan metode FPA merupakan hasil yang optimal
Hal ini merupakan teknik perhitungan yang sudah spesifik (bukan permasalahan secara umum), sehingga dalam referensi jurnal yang anda gunakan biasanya sudah dijelaskan mengenai cara validasi posisi tersebut. Selanjutnya anda hanya tinggal mengimplementasikan teknik validasi apakah yang sudah tertulis pada jurnal tersebut.
gan, ada link jurnal yang bahas FPA ini.?
Saya tidak memiliki referensi jurnal terhadap algoritma ini.
mau tanya,,
untuk yg ini
Jumlah Serangga = 10
Probabilitas berpindah ke bunga lain = 0.8
Jumlah maksimal iterasi = 500
Jumlah dimensi = 2
Batas minimal posisi bunga = -2
Batas maksimal posisi bunga = 2
apakah kita bebas menentukan atau ada aturannya?
trs untuk mendapatkan posisi terbaik x,y itu bagaimana caranya?
fungsinya diturunkan atau bagaimana?
misalnya ini
Iterasi: 1, Serangga: 1, Posisi terbaik: 1.2577 1.74,
Angka2 tersebut hanyalah angka yang saya dapatkan dari referensi skrip yang saya pelajari. Tentu saja jika anda memiliki referensi yang lebih baik dan referensi tersebut menggunakan nilai parameter yang berbeda maka sebaiknya mengikuti nilai2 pada jurnal tersebut.
Untuk mendapatkan posisi terbaik, maka anda harus mengetahui tujuan yang ingin anda capai. Tujuan tersebut dihitung menggunakan fungsi obyektif, yang dalam kasus diatas dihitung dengan menggunakan fungsi HitungNilaiFungsi
function z=HitungNilaiFungsi(u)
z=(u(1)^2 + u(2) - 11) ^ 2 + (u(1) + u(2)^2 - 7) ^ 2;
untuk x itu parameter apa? y parameter apa?
dan bisa minta tolong utk dijelaskan cara mendapatkan
Posisi terbaik: x = 1.2577 ; y = 1.74
utk iterasi 1 seangga 1.
Dalam kasus yang saya bahas diatas, topik yang saya gunakan adalah mencari posisi dengan nilai fungsi terendah. Variabel x dan y adalah posisi yang menentukan apakah sebuah solusi berada pada nilai fungsi terendah atau tidak, dan fungsi yang saya gunakan adalah fungsi Himmelblau dimana hanya memerlukan 2 buah variabel saja. Tentu saja dalam dunia nyata, kasus yang tersedia tidak hanya menggunakan dua kriteria saja, tetapi dapat menggunakan 3, 4, atau lebih. Cara perhitungan nilai fungsi pun juga bergantung dari banyak kriteria yang dipakai (x, y, z, dan seterusnya).
Cara untuk mendapatkan nilai solusi serangga sudah dijelaskan pada keseluruhan poin nomor 3. Proses tersebut akan diulang sebanyak jumlah iterasi dan solusi terbaik akan selalu disimpan setiap kali ditemukan dan ditampilkan pada layar. Hasil pencatatan dapat dilihat pada bagian “Hasil Akhir”
Selamat malam min. Saya tugas akhirnya juga menggunakan algoritma ini. tapi masih agak bingung untuk menentukan populasi (x), distribusi Levy (L) dan g*. Penelitian saya ttg optimasi turbin angin dengan mppt menggunakan metode fpa. Jadi saya ingin mengetahui pengaruh perubahan kecepatan angin terhadap daya maksimum yang dapat dihasilkan. Matur Nuwun
Populasi sebenarnya dibentuk dari kumpulan solusi2 awal (x) yang didapatkan secara acak. Setelah mendapatkan nilai acak maka akan diolah dan dihitung nilai fungsinya untuk menentukan solusi manakah yang lebih baik daripada lainnya.
Sedangkan Levy menurut pemahaman saya adalah sebuah fungsi untuk menghitung jarak terbang serangga sehingga hanya cukup mengikuti rumus yang digunakan saja.
Dalam skrip ini saya tidak menemukan sesuatu yang mirip atau mendekati g*. Mungkin ini adalah parameter khusus yang anda gunakan dalam sistem turbin angin tersebut. Jika ini adalah sebuah input maka sama seperti x, nilai awalnya dapat ditentukan secara acak, tetapi selanjutnya dihitung dengan menggunakan rumus tertentu yang telah tersedia.
maaf tanya lagi,,
function L=Levy(d)
…
u=randn(1,d)*sigma;
v=randn(1,d);
step=u./abs(v).^(1/beta);
L=0.01*step;
mohon penjelasan fungsi levy.
u,v itu random apa?
bedanya apa u dgn v, kok yg v tdk dikali sigma?
u dan v adalah bilangan acak yang diambil menggunakan sistem distribusi normal
Mengenai perbedaan antara u dan v, hal tersebut adalah bagian dari rumus yang sudah diriset oleh peneliti sehingga menghasilkan rumus seperti itu. Pertanyaan anda mirip seperti “mengapa 1 + 2 = 3? Mengapa angka 2 tidak dikalikan angka lain agar hasil perhitungan rumus tersebut adalah angka 3?”
Tanya lagi ya min..
pada langkah 3a apa ada dasar pengambilan acak antara 0 sampai 1? knp ga antara -2 sampai 2?
Pengambilan bilangan acak yang paling umum adalah diantara 0 sampai dengan 1, dan dalam kasus ini nilai acak tersebut digunakan untuk probabilitas. Berdasarkan pengetahuan umum maka umumnya probabilitas akan memiliki nilai terendah 0% dan tertinggi 100%. Jika pengacakan dilakukan dari -2 sampai dengan 2 itu artinya nilai probabilitas terendah dapat mencapai nilai minus -200% dan yang tertinggi adalah 200% dimana hal tersebut merupakan hal yang tidak lazim.
min,, apa itu fungsi levy? apa bisa diganti fungsi distribusi yg lain? klo bs mk apa syaratnya agar bisa menggantikn fungsi levy?
Fungsi levy adalah fungsi yang digunakan untuk memindahkan pollen dari sebuah bunga menuju bunga lainnya. Menurut beberapa jurnal tertulis rumus ini adalah rumus yang dipakai untuk melakukan perhitungan tersebut, tetapi menurut saya pribadi sebenarnya bisa diubah dengan menggunakan rumus lainnya. Tidak ada syarat khusus dalam mengganti fungsi tersebut asalkan cara perhitungannya tertulis dengan baik pada jurnal.
Min mau tanya, setau saya pakek rumus levy flight ketika randp.apakah ada jurnal flower yang mengatakan bahwa levy flight berlaku ketika rand>p?
Hal tersebut tentu saja dapat disesuaikan dengan jurnal yang anda gunakan. Algoritma ini sudah tersedia sejak beberapa tahun yang lalu dan tentu saja sudah banyak versi pengembangan untuk meningkatkan performa daripada versi orisinilnya. Saya tidak mengetahui versi apakah yang anda gunakan, tetapi terlepas dari itu implementasi algoritma dapat dilakukan secara fleksibel; jika tidak membutuhkan pengecekan rand>p maka bagian ini dapat dihapus sehingga semua serangga akan dihitung dengan menggunakan Levy (bagian else dan seterusnya dihapus)
maaf min, mau tanya lagi, itu yang populasi yg dimaksud fpa itu populasi bunganya atau populasi serangganya? kok klo di jurnal2 itu populasi n flower ya min?
Menurut pemahaman saya (bukan berdasarkan jurnal tertentu), bunga adalah obyek pada sistem ini, sedangkan serangga adalah subyeknya. Perpindahan serbuk sari tidak dapat dilakukan tanpa bantuan serangga, sehingga saya mempercayai bahwa populasi yang sebenarnya adalah populasi serangga dalam menemukan bunga terbaik.
Tetapi jika bunga dianggap sebagai populasi maka masih masuk akal. Dengan kata lain perpindahan serbuk sari dilakukan oleh variabel yang tidak diperhitungkan keterlibatannya, misalnya seperti angin.
Mau menanyakan min, apakah bisa algoritma FPA ini untuk optimasi membership function fuzzy logic control? Mohon pencerahannya..
Karena algoritma ini adalah salah satu algoritma optimasi maka secara teori dapat digunakan untuk mengatasi permasalahan optimasi apapun, termasuk optimasi membership function dalam fuzzy logic.
Maaf min, mau bertanya. Saya telah menggunakan FPA dalam penelitian saya terkait pencarian nilai kapasitas optimal dan lokasi optimal untu pembangkit listrik. Disini saya melakukan simulasi berulang kali agar dapat memvalidasi tingkat konsistensi hasil dari solusi yang ditemukan. Pada kasus ini untuk kapasitas nya sudah ditemukan nilai yang hampir sama untuk setiap simulasi yang dilakukan, namun untuk lokasi penempatan nya masih sangat signifikan variasi solusi yang dihasilkan. Kira kira apa yang harus saya lakukan ? atau memang seperti itu karakteristik FPA ? mohon pencerahannya.
Menurut pemahaman saya (bukan berdasarkan jurnal tertentu), sebenarnya untuk permasalahan optimasi secara umum, solusi yang memiliki variansi signifikan bukanlah sesuatu yang perlu dikhawatirkan selama solusi tersebut masih valid dalam memenuhi batasan-batasan yang tersedia. Adalah sangat mungkin apabila beberapa solusi terbaik ditemukan dalam masing-masing studi kasus.
Lalu bagaimana saya bisa menyimpulkan manakah yang menjadi solusi terbaik dari variasi penempatan yang signifikan tadi min ?
Jika semua solusi tersebut menghasilkan nilai fungsi yang sama baiknya, maka solusi manapun yang diambil adalah solusi terbaik. Anda dapat menarik kesimpulan bahwa dalam studi kasus tersebut ditemukan beberapa solusi yang sama baiknya.
Halo mau tanya, kebetulan skripsi saya pake FPA.
untuk formula ini
x_i ^ {t+1} = x_i ^ t + L(x_i ^ t-gbest)
bentuk coding nya gimana ya? makasih..
Bagian yang anda sampaikan adalah bagian perpindahan posisi setelah mengetahui nilai Levy. Hasil implementasi dapat ada lihat pada poin 3a2 pada penjabaran diatas.
terimaksih, maaf mau tanya lagi.
u=randn(1,d)*sigma;
v=randn(1,d);
step=u./abs(v).^(1/beta);
L=0.01*step;
untuk randn(1,d) itu artinya apa ya?
dan abs disitu maksudnya apa?
terimakasih
randn dan abs adalah fungsi yang disediakan oleh matlab sehingga penjelasan fungsinya dapat anda lihat secara detail pada halaman bantuan pada situs matlab. randn adalah fungsi untuk membangkitkan bilangan acak dalam sebaran distribusi normal sedangkan abs adalah fungsi untuk mendapatkan bilangan positif dari sebuah nilai.