Випадковий пошук

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Випадковий пошук — група методів числової оптимізації, які не вимагають обчислення градієнту для розв'язання задач оптимізації; отже, випадковий пошук можна використовувати для функцій, що не є неперервними або диференційованими. Подібні методи оптимізації також називаються методами прямого пошуку, методами «чорної скриньки» або методами без використання похідної.

Авторство назви методу — випадковий пошук — приписують Растригіну[1], який зробив перші кроки в розвитку цих методів з прив'язкою до базового математичного аналізу. Випадковий пошук працює шляхом ітеративного просування між кращими позиціями у просторі пошуку. Кращі позиції обираються з гіперсфери з центром у поточній позиції.

Описаний тут алгоритм є типом локального випадкового пошуку, коли кожна ітерація залежить від кандидата на рішення, знайденого на попередній ітерації. Існують інші методи випадкового пошуку, які беруть вибірку з усього простору пошуку (наприклад, повністю випадковий пошук або рівномірний глобальний випадковий пошук), але вони не описані в цій статті.

Загальний алгоритм

Нехай f:n — це функція втрат яку потрібно мінімізувати. Позначимо через 𝐱n точку (позицію) або можливий варіант розв'язку у просторі пошуку. Тоді базовий алгоритм випадкового пошуку можна описати так:

  1. Ініціювати х випадковою точкою у просторі пошуку.
  2. Допоки критерію переривання пошуку не досягнуто (наприклад, виконано максимальну кількість ітерацій або досягнуто необхідне наближення) повторювати таке:
    1. Вибрати нову позицію у з рівномірно розподілених точок на гіперсфері заданого радіусу Шаблон:Math з центром у поточній точці х. Для цього потрібно зробити такі кроки:
      1. Згенерувати Шаблон:Math-вимірний гаусівський вектор з мат. сподіванням в точці 0 і довільною дисперсією: 𝐱=(x1,x2,...,xn).
      2. Обрахувати радіус цього вектору (відстань від початку координат): r=x12+x22+...+xn2. Тоді рівномірно розподілений вектор заданого радіусу Шаблон:Math знаходиться як dr𝐱.
    2. Якщо Шаблон:Math — переходити на нову позицію заданням Шаблон:Math.

Адаптивний вибір кроку

Адаптивний алгоритм випадкового пошуку (Schumer and Steiglitz[2]) — одна з найчастіше вживаних модифікацій алгоритму — використовує змінний крок пошуку залежно від досягненого успіху на попередніх кроках. Якщо дві послідовних ітерації дають покращення цільової функції, крок збільшується в Шаблон:Math разів; якщо Шаблон:Math послідовних ітерацій не дають покращення, крок зменшується в Шаблон:Math разів. У загальному алгоритмі величина кроку d обчислюється таким чином:

  1. Ініціювати довільне Шаблон:Math, наприклад, d=1 та лічильник невдалих ітерацій m=0.
  2. Якщо нова позиція у є кращою за позицію х, збільшити Шаблон:Math в Шаблон:Math разів: d=asd
  3. Якщо нова позиція у є гіршою за позицію х, збільшити лічильник на одиницю: m=m+1. Якщо виконується умова mM, зменшити Шаблон:Math в Шаблон:Math разів: d=afd та обнулити лічильник: m=0.

Допустимими є, наприклад, параметри as=1.618,af=0.618,M=3n, де Шаблон:Math — розмірність пошукового простору[3].

Використання алгоритму випадкового пошуку з адаптивним вибором кроку можливо в найнесподіваніших ситуаціях — наприклад, при виборі оптимального розміщення туристів в автобусі[4].

Варіанти

В літературі існує декілька варіантів випадкового пошуку:

  • Випадковий пошук із фіксованим кроком — базовий алгоритм Растригіна, який обирає нові позиції на гіперсфері із заданим фіксованим радіусом.
  • Випадковий пошук з оптимальним кроком (Schumer and Steiglitz[2]) — теоретичні міркування з визначення оптимального радіуса гіперсфери для пришвидшеної збіжності до оптимуму. Використання цього методу вимагає апроксимації оптимального радіуса шляхом багаторазової дискретизації, тому потребує занадто багато обчислювальних ресурсів, через що немає практичного застосування.
  • Випадковий пошук з адаптивним кроком (Schumer and Steiglitz[2]) — алгоритм, який евристично адаптує радіус гіперсфери. На кожному кроці створюються два нових рішення-кандидати, одне з поточним розміром кроку, а інше з більшим розміром кроку. Новий розмір кроку обирається тоді, і тільки тоді, коли відбувається більше покращення. Якщо за декілька ітерацій не відбувається покращення, то тоді крок зменшується.
  • Випадковий пошук з оптимізованим відносним кроком (Schrack and Choit[5]) апроксимує оптимальний розмір кроку шляхом простого експоненціального зменшення. Проте, формула для обчислення коефіцієнту зменшення дещо ускладнена.

Див. також

Примітки

Шаблон:Reflist

  1. Rastrigin, L.A. (1963). «The convergence of the random search method in the extremal control of a many parameter system». Automation and Remote Control 24 (10): 1337—1342.
  2. 2,0 2,1 2,2 Schumer, M.A.; Steiglitz, K. (1968). «Adaptive step size random search». IEEE Transactions on Automatic Control 13 (3): 270—276.
  3. Шаблон:Cite web
  4. Шаблон:Cite web
  5. Schrack, G.; Choit, M. (1976). «Optimized relative step size random searches». Mathematical Programming 10 (1): 230—244.