Метод роя частиц для задачи глобальной оптимизации
snegovick — Чт, 30/09/2010 - 17:49
Метод оптимизации с помощью роя частиц (Particle Swarm Optimization, далее PSO), базирующийся на моделировании поведения популяции частиц в пространстве параметров задачи оптимизации, был предложен в работе [1].
Предлагаемый метод привлекателен простотой реализации и тем, что в процессе вычисления не используется градиент. Метод может использоваться для решения многих задач, включая обучение нейросетей, задачи поиска минимума функции, а также задач, типичных для генетических алгоритмов.
PSO, как и все алгоритмы, принадлежащие к семейству эволюционных алгоритмов, является стохастическим, не требующим вычисления градиента, что позволяет использовать PSO в случаях, где вычисление градиента невозможно, либо имеет высокую вычислительную сложность.
Описание алгоритма PSO
Алгоритм PSO использует для решения рой частиц, где каждая частица представляет собой возможное решение задачи оптимизации. Пусть
xi - положение частицы
vi - скорость частицы
yi - личное наилучшее положение частицы
Личное наилучшее положение частицы - положение частицы с наилучшим значением оценочной функции, которое когда-либо посещала частица. Пусть

























Существует две версии базового алгоритма PSO, называемые gbest и lbest. Разница заключается в том, с какими набором частиц взаимодействует каждая частица. Обозначим символом








































Данное выражение говорит о том, что

Стохастическая составляющая алгоритма представлена двумя случайными параметрами















.png)
.png)


.png)





.png)


.png)









.png)



Таким образом,






Подготовительная часть алгоритма заключается в следующем :
- Присвоить координатам
xi случайные значения в пределахj
для всех−xmax
xmax
i и1
s
j ,1
n
- Инициализировать векторы скоростей нулями,
- Присвоить
yi значенияxi .
Пример решения задачи оптимизации с помощью алгоритма PSO на maxima
Пусть задана функция.



Необходимо найти минимум этой функции на промежутке x2
−10
10
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | f(x1 , x2):= x1 ^ 2 + x2 ^ 2; ll: -10; ul: 10; numpart: 20; numdims: 2; wc: 0 . 9; c1: 1 . 8; c2: 1 . 9; xv: ematrix (numpart , numdims , 0 , 1 , 1); vv: ematrix (numpart , numdims , 0 , 1 , 1); fitgbest: 2000; fitlbest: ematrix (numpart , 1 , 0 , 1 , 1); fitlbest: fitlbest + fitgbest; xlbest: ematrix (numpart , numdims , 0 , 1 , 1); xgbest: ematrix (1 , numdims , 0 , 1 , 1); fitx: ematrix (numpart , 1 , 0 , 1 , 1); for i : 1 step 1 thru numpart do ( for j : 1 step 1 thru numdims do ( xv[i][j]: ll + random ((ul - ll)) ) )$ min : 0$ minind: 0$ display (xv); globalbest : []; for i : 1 step 1 thru 20 do ( for j : 1 step 1 thru numpart do ( fitx[j][1]: f(xv[j][1], xv[j][2]), if fitx[j][1] < fitlbest[j][1] then ( fitlbest[j][1] = fitx[j][1], for k : 1 step 1 thru numdims do ( xlbest[j][k]: xv[j][k] ) ) ), min : fitx[1][1], minind: 1, for j : 1 step 1 thru numpart do ( if fitx[j][1]< ; min then ( minind: j, min : fitx[j][1] ) ), dispm: addcol (xv , fitx), display (dispm), if min < ; fitgbest then ( fitgbest: min , for j : 1 step 1 thru numdims do ( xgbest[1][j]: xv[minind][j] ) ), display (fitgbest), globalbest : append (globalbest, [[i , fitgbest]]), for j : 1 step 1 thru numpart do ( for k : 1 step 1 thru numdims do ( r1: ( random (1000))/1000, r2: ( random (1000))/1000, vv[j][k]: wc * vv[j][k]+c1 * r1*(xlbest[j][k]-xv[j][k])+c2 * r2*(xgbest[1][k]-xv[j][k]), xv[j][k]: xv[j][k]+vv[j][k] ) ) )$ display (globalbest); plot2d ([discrete, globalbest], [y , 0 , 50], [psfile, "globalbest.eps" ]); |
На рисунке изображена зависимость величины параметра y
с 2, 5, 10, 20 частицами. Очевидно, что увеличение количества частиц
до определенного порога позволяет существенно увеличить скорость
получения результа.
Список литературы:
[1] J. Kennedy, R.C. Eberhart, Proceedings of IEEE International Conference on Neural
Networks,volume IV, pages 1942-1948, Perth, Australia, IEEE
Service Center, Piscataway, NJ, 1995
[2] Y. Shi, R. C. Eberhart
A modified Particle Swarm Optimizer. IEEE International
Conference of Evolutionary Computation, Anchorage, Alaska, 1998

Отправить комментарий