Particle Swarm Optimization (PSO) adalah metode komputasi yang berupaya mengoptimalkan masalah dengan mencoba secara iteratif untuk meningkatkan solusi kandidat ke ukuran kualitas tertentu.
PSO adalah teknik AI yang dapat mendekati solusi untuk masalah pemaksimalan dan peminimalan yang sangat sulit atau tidak mungkin yang melibatkan angka. Dengan menelusuri seluruh ruang dari masalah dimensi tinggi, PSO ternyata merupakan algoritme pengoptimalan yang baik. Selain itu, ini adalah metode pengoptimalan stokastik yang kuat berdasarkan pada bagaimana kawanan bergerak dan seberapa pintar mereka.
Prosedur
PSO menentukan cara memecahkan masalah dengan membuat sekelompok kemungkinan solusi, yang disebut “partikel”, dan memindahkannya melalui ruang pencarian berdasarkan rumus matematika sederhana untuk posisi dan kecepatannya. Tentu saja, secara lokal, gerak setiap partikel dipengaruhi oleh posisinya yang paling terkenal. Namun itu juga diarahkan ke peran yang lebih menonjol di ruang pencarian, yang berubah saat partikel lain menemukan pekerjaan yang lebih baik. Ini harus memindahkan Swarm ke jawaban terbaik.
Ini adalah metaheuristik karena tidak membuat banyak asumsi tentang masalah yang coba dipecahkan dan dapat menjangkau ruang besar dari kemungkinan solusi. Selain itu, PSO tidak menggunakan gradien masalah untuk dioptimalkan. Ini berarti bahwa tidak seperti metode penurunan gradien dan kuasi-Newton, PSO tidak memerlukan masalah optimisasi untuk dapat diselesaikan dengan lebih dari satu cara.
Algoritma
Versi sederhana dari Algoritma PSO bekerja dengan memiliki sekelompok solusi yang mungkin disebut “swarm” (partikel). Beberapa rumus sederhana memindahkan partikel-partikel ini melalui ruang pencarian. Partikel-partikel bergerak sesuai dengan posisinya yang paling terkenal di ruang pencarian dan posisi paling terkenal dari seluruh gerombolan. Saat posisi yang lebih baik ditemukan, mereka akan memandu pergerakan Swarm. Diharapkan, tetapi tidak dijamin, solusi yang baik akan ditemukan dengan melakukan ini berulang kali.
Step1: Randomly initialize Swarm population of N particles Xi ( i=1, 2, …, n) Step2: Select hyperparameter values w, c1 and c2 Step 3: For Iter in range(max_iter): # loop max_iter times For i in range(N): # for each particle: a. Compute the new velocity of ith particle swarm[i].velocity = w*swarm[i].velocity + r1*c1*(swarm[i].bestPos - swarm[i].position) + r2*c2*( best_pos_swarm - swarm[i].position) b. If velocity is not in the range [minx, max], then clip it if Swarm [i].velocity < minx: swarm[i].velocity = minx elif swarm[i].velocity[k] > maxx: swarm[i].velocity[k] = maxx c. Compute the new position of the ith particle using its new velocity swarm[i].position += swarm[i].velocity d. Update the new best of this particle and the new best of Swarm if swaInsensitive to scaling of design variables.rm[i].fitness < swarm[i].bestFitness: swarm[i].bestFitness = swarm[i].fitness swarm[i].bestPos = swarm[i].position if swarm[i].fitness < best_fitness_swarm best_fitness_swarm = swarm[i].fitness best_pos_swarm = swarm[i].position End-for End -for Step 4: Return the best particle of the Swarm
Sumber algoritma: OSP – ikhtisar
Meskipun hasil bervariasi untuk varian PSO tertentu, kinerja optimal diperoleh dengan kumpulan 70-500 partikel untuk sebagian besar algoritme PSO yang diperiksa, menunjukkan bahwa opsi konvensional seringkali terlalu kecil.
Kesimpulan
Tidak ada perbedaan yang signifikan antara dua proses skala kecil. Hanya solusi yang mendekati ideal yang dapat dihasilkan menggunakan algoritme genetika pada ukuran sedang dan besar. Pendekatan PSO mudah diterapkan dan memberikan perhitungan yang akurat.
Selain itu, algoritma PSO memiliki kekurangan yaitu tunduk pada optima lokal dalam ruang berdimensi tinggi dan memiliki tingkat konvergensi yang rendah selama fase iteratif.
“Ninja internet yang tak tersembuhkan. Ahli daging. Sangat introvert. Analis. Pakar musik. Pendukung zombie.”