Метод роя частиц

Материал из testwiki
Перейти к навигации Перейти к поиску
Рой частиц, ищущий глобальный минимум функции

Метод роя частиц (МРЧ) — метод численной оптимизации, для использования которого не требуется знать точного градиента оптимизируемой функции.

МРЧ был изначально предложен Кеннеди, Эберхартом и Ши[1][2] для имитации социального поведения. После упрощения алгоритма, было замечено, что он решает оптимизационную задачу. Книга Кеннеди и Эберхарта[3] описывает многие философские аспекты МРЧ и так называемого роевого интеллекта. Обширное исследование приложений МРЧ сделано Поли[4][5]. МРЧ оптимизирует функцию, поддерживая популяцию возможных решений, называемых частицами, и перемещая эти частицы в пространстве решений согласно простой формуле. Перемещения подчиняются принципу наилучшего найденного в этом пространстве положения, которое постоянно изменяется при нахождении частицами более выгодных положений.

Алгоритм

Пусть f:n — целевая функция, которую требуется минимизировать, S — количество частиц в рое, каждой из которых сопоставлена координата xin в пространстве решений и скорость vin. Пусть также pi — лучшее из известных положений частицы с индексом i, а g — наилучшее известное состояние роя в целом. Тогда общий вид метода роя частиц таков.

  • Для каждой частицы i=1,,S сделать:
    • Сгенерировать начальное положение частицы с помощью случайного вектора xiU(blo,bup), имеющего многомерное равномерное распределение, где blo и bup — нижняя и верхняя границы пространства решений соответственно.
    • Присвоить лучшему известному положению частицы его начальное значение: pixi.
    • Если f(pi)<f(g), то обновить наилучшее известное состояние роя: gpi.
    • Присвоить значение скорости частицы: viU((bupblo),(bupblo)).
  • Пока не выполнен критерий остановки (например, достижение заданного числа итераций или необходимого значения целевой функции), повторять:
    • Для каждой частицы i=1,,S сделать:
      • Сгенерировать случайные векторы rp,rgU(0,1).
      • Обновить скорость частицы: viωvi+ϕprp(pixi)+ϕgrg(gxi), где операция  означает покомпонентное умножение.
      • Обновить положение частицы переносом xi на вектор скорости: xixi+vi. Этот шаг выполняется вне зависимости от улучшения значения целевой функции.
      • Если f(xi)<f(pi), то:
        • Обновить лучшее известное положение частицы: pixi.
        • Если f(pi)<f(g), то обновить лучшее известное состояние роя в целом: gpi.
  • Теперь g содержит лучшее из найденных решений.

Параметры ω, ϕp и ϕg выбираются вычислителем и определяют поведение и эффективность метода в целом. Эти параметры составляют предмет многих исследованийШаблон:Переход.

Подбор параметров

Выбор оптимальных параметров метода роя частиц — тема значительного количества исследовательских работ, см., например, работы Ши и Эберхарта[6][7], Карлайла и Дозера[8], ван ден Берга[9], Клерка и Кеннеди[10], Трелеа[11], Браттона и Блеквэлла[12], а также Эверса[13].

Простой и эффективный путь подбора параметров метода предложен Педерсеном и другими авторами[14][15]. Они же провели численные эксперименты с различными оптимизациоными проблемами и параметрами. Техника выбора этих параметров называется мета-оптимизацией, так как другой оптимизационный алгоритм используется для «настройки» параметров МРЧ. Входные параметры МРЧ с наилучшей производительностью оказались противоречащими основным принципам, описанным в литературе, и часто дают удовлетворительные результаты оптимизации для простых случаев МРЧ. Реализацию их можно найти в открытой библиотеке SwarmOps.

Варианты алгоритма

Постоянно предлагаются новые варианты алгоритма роя частиц для улучшения производительности метода. Существует несколько тенденций в этих исследованиях, одна из которых предлагает создать гибридный оптимизационный метод, использующий МРЧ в комбинации с иными алгоритмами, см. например[16][17]. Другая тенденция предлагает каким-либо образом ускорить работу метода, например, отходом назад или переменой порядка движения частиц (об этом см.[13][18][19]). Также есть попытки адаптировать поведенческие параметры МРЧ в процессе оптимизации[20].

См. также

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Wikibooks

Шаблон:Методы оптимизации

  1. Ошибка цитирования Неверный тег <ref>; для сносок kennedy95particle не указан текст
  2. Ошибка цитирования Неверный тег <ref>; для сносок shi98modified не указан текст
  3. Ошибка цитирования Неверный тег <ref>; для сносок kennedy01swarm не указан текст
  4. Ошибка цитирования Неверный тег <ref>; для сносок poli07analysis не указан текст
  5. Ошибка цитирования Неверный тег <ref>; для сносок poli08analysis не указан текст
  6. Ошибка цитирования Неверный тег <ref>; для сносок shi98parameter не указан текст
  7. Ошибка цитирования Неверный тег <ref>; для сносок eberhart00comparing не указан текст
  8. Ошибка цитирования Неверный тег <ref>; для сносок carlisle01offtheshelf не указан текст
  9. Ошибка цитирования Неверный тег <ref>; для сносок bergh01thesis не указан текст
  10. Ошибка цитирования Неверный тег <ref>; для сносок clerc02explosion не указан текст
  11. Ошибка цитирования Неверный тег <ref>; для сносок trelea03particle не указан текст
  12. Ошибка цитирования Неверный тег <ref>; для сносок bratton08simplified не указан текст
  13. 13,0 13,1 Ошибка цитирования Неверный тег <ref>; для сносок evers09thesis не указан текст
  14. Ошибка цитирования Неверный тег <ref>; для сносок pedersen08thesis не указан текст
  15. Ошибка цитирования Неверный тег <ref>; для сносок pedersen08simplifying не указан текст
  16. Ошибка цитирования Неверный тег <ref>; для сносок lovbjerg02lifecycle не указан текст
  17. Ошибка цитирования Неверный тег <ref>; для сносок niknam10efficient не указан текст
  18. Ошибка цитирования Неверный тег <ref>; для сносок lovbjerg02extending не указан текст
  19. Ошибка цитирования Неверный тег <ref>; для сносок xinchao10perturbed не указан текст
  20. Ошибка цитирования Неверный тег <ref>; для сносок zhan09adaptive не указан текст