1. Лекція 4. Методи одновимірної безумовної оптимізації без
використання інформації про похідну
Задача безумовної оптимізації полягає у знаходженні мінімуму або
максимуму функції при відсутності будь-яких обмежень.
Функція ( )f x , визначена на відрізку [ ], ,a b називається унімодальною,
якщо існує єдина точка *
,x в якій ( )f x набуває екстремального значення. Для
визначеності визнаємо, що мова йде про мінімум функції ( )f x на відрізку
[ ],a b . Зазначимо, що унімодальна функція не повинна бути гладкою або навіть
безперервною. З визначення унімодальності випливає, що якщо *
1 2x x x〈 〈 , то
1 2( ) ( )f x f x〉 . Також, якщо *
1 2x x x≤ 〈 , то 1 2( ) ( )f x f x〈 . Задача складається з
побудови такої послідовності { }kx , щоб при деякому i мінімальне значення
функції досягалося на інтервалі *
1i ix x x− ≤ 〈 . Цей інтервал називається
інтервалом невизначеності. У подальшому будемо розуміти під інтервалом
невизначеності відрізок [ ], ,a b якому належить точка мінімуму, однак її точне
значення невідоме.
В основі багатьох методів лежить процедура виключення з інтервалу
[ ], ,a b якої-небудь його частки, яка не містить мінімуму.
Мінімізація строго унімодальної функції однієї змінної не потребує
розрахунків похідної. Для розрахунків таких задач оптимізації існують наступні
методи: рівномірний пошук; дихотомічний пошук; метод золотого перетину;
метод Фібоначчі.
З використанням інформації про похідну функції, яка мінімізується,
існують методи ділення пополам і Ньютона.
Для зменшення інтервалу невизначеності з допомогою розрахунків
значень функції у двох належних інтервалу точках існує теорема 2.1.
ТЕОРЕМА 2.1. Нехай 1
:f X R→ строго унімодальна на інтервалі [ ],a b .
Нехай [ ]1 2, ,x x a b∈ такі, що 1 2x x〈 . Якщо 1 2( ) ( )f x f x〉 , то 3 2( ) ( )f x f x≥ для усіх
[ )3 1,x a x∈ . Якщо 1 2( ) ( ),f x f x≤ то 3 1( ) ( )f x f x≥ для усіх ( ]3 2,x x b∈ .
Як випливає із теореми 2.1 при 1 2( ) ( )f x f x〉 новим інтервалом
невизначеності є [ ]1,x b . З іншого боку, якщо 1 2( ) ( ),f x f x≤ то новим інтервалом
невизначеності буде [ ]2,a x (рис. 2.1).
2. Розглянемо більш детальнішо зазначені методи розв’язання задач
одновимірної оптимізації.
Рівномірний пошук
Інтервал невизначеності [ ],a b поділяється на підінтервали сіткою з точок
a k+ δ для 1,2,...,k n= , де ( 1)b a n= + + δ (див. рис. 2.2). Функція f
розраховується у кожній з n точок сітки. Нехай x - точка сітки з найменшим
значенням f . Якщо функція f строго унімодальна, то точка її мінімуму
належить інтервалу ,x x − δ + δ .
Після n – розрахунків f інтервал невизначеності зменшено до розмірів 2δ .
Оскільки ( )[ ]/ 1n b a= − δ − , то для подальшого зменшення інтервалу
невизначеності необхідно збільшити число розрахунків функції f . Для
зменшення числа розрахунків спочатку будують сітку з крупною коміркою і
потім переходять до сітки з малим розміром комірки.
Дихотомічний пошук
Розглянемо строго унімодальну функцію 1
:f X R→ , яку потрібно мінімізувати
на інтервалі [ ],a b . Найменше число розрахунків значень функції для зменшення
інтервалу невизначеності рівне двом. Визначимо дві точки 1 2,x x . На рис. 2.3а
1 1 1 2( ) ( )f x f x〈 і, отже, за теоремою 2.1 новим інтервалом невизначеності буде
3. [ ]2,a x . Для 2f він буде [ ]1,x b . Таким чином, залежности від функції довжина
нового інтервалу невизначеності рівна 2x a− або 1b x− . Раніше було не відомо
чи буде 1 2( ) ( )f x f x〈 чи 1 2( ) ( )f x f x〉 . Оптимальна стратегія вибору точок 1x і
2x полягає в мінімізації максимуму з 2x a− і 1b x− . Це може бути досягнуто
вибором в якості 1x і 2x середини інтервалу [ ],a b . Проте у цьому випадку
будемо мати тільки одну точку і далі не зможемо зменшити інтервал
невизначеності. При цьому 1x і 2x вибираємо симетрично на відстані 0ε〉 від
середини інтервалу (рис. 2.3b). Число ε має
настільки малим, щоб довжина нового інтервалу невизначеності ( ) / 2b aε + −
була достатньо близькою до теоретично оптимального значення ( ) / 2b a− і в
той же час такою, щоб значення 1( )f x і 2( )f x були розпізнавальними.
Алгоритм дихотомічного пошуку
Початковий етап. Вибрати константу 2 0ε〉 і кінцеву допустиму довжину
інтервалу невизначеності 0l〉 . Визначаємо [ ],a b і 1k = та переходимо до
основного етапу.
Основний етап.
Крок1. Якщо k kb a l− 〈 , то стоп; точка мінімуму належить інтервалу [ ],a b .
В іншому випадку розраховуємо
1 2,
2 2
k k k ka b a b
x x
+ +
= − ε = + ε
і переходимо до кроку 2.
Крок 2. Якщо 1 2( ) ( )f x f x〈 , то приймаємо 1k ka a+ = і 1 2kb x+ = . В іншому
випадку приймаємо 1 1ka x+ = і 1k kb b+ = . Замінимо k на 1k + і перейти до кроку
1.
4. Довжина інтервалу невизначеності на початку ( 1)k + - ї ітерації рівна
1 1
1 1
( ) ( ) 2 (1 )
2 2
k k i ik k
b a b a+ +− = − + ε − .
Ця формула може бути використана для визначення числа ітерацій, необхідних
для досягнення бажаної точності. Оскільки кожна ітерація потребує двох
вимірів, то ця формула може бути використана для визначення числа
розрахунків функції f .
Метод золотого перетину
Нехай на k - й ітерації методу золотого перетину інтервал невизначеності
рівний [ ],k ka b . Новий інтервал [ ]1 1,k ka b+ + згідно з теоремою 2.1 рівний [ ]1, kx b ,
якщо 1 2( ) ( )f x f x〉 , і [ ]2,ka x , якщо 1 2( ) ( )f x f x〈 . Точки 1x і 2x вибираються з
наступного:
1. Довжина інтервалу 1 1k kb a+ +− не залежить від результату на k - ї
ітерації, тобто чи виконується лі обмеження 1 2( ) ( )f x f x〉 або 2 1( ) ( )f x f x≥ .
Крім того, має виконуватися рівняння 1 2k kb x x a− = − .
Таким чином, якщо
1 (1 )( )k k kx a b a= + − α − , (2.1.1)
де (0,1)α∈ , то для 2x повинне бути
2 ( )k k kx a b a= + α − , (2.1.2)
отже 1 1 ( )k k k kb a b a+ +− = α − .
2. Для нової ітерації 1x і 2x вибираються так, що або 1( 1)kx + нової ітерації
збігається з 2( )kx попередньої ітерації, або 2( 1)kx + нової ітерації збігається з 1( )kx
попередньої ітерації. Якщо цього досягти, то на 1k + -ї ітерації потрібний буде
тільки один новий розрахунок функції. Це випливає з рис. 2.4.
Випадок 1. 1( ) 2( )( ) ( )k kf x f x〉 . У цьому випадку 1 1( )k ka x+ = і 1k kb b+ = .
Використаємо рівняння (2.1) з заміною k на 1k + . При 1( 1)kx + 1k + -ї ітерації
маємо 2( ) 1( 1) 1 1 1 1( ) 1(1 )( ) (1 )( )k k k k k k kx x a b a x b x+ + + += = + + α − = + − α − .
Підставляємо вираз для 1( )kx і 2( )kx із (2.1) і (2.2) у це рівняння, одержимо
α2
+ α + 1 = 0.
ак х1(к) х2(к) вк
випадок 1: ак+1 х1(к+1) х2(к+1) вк+1
випадок 2: ак+1 х1(к+1) х2(к+1) вк+1
Рис. 2.4
5. 2. Випадок 2. 1( ) 2( )( ) ( )k kf x f x≤ . У цьому випадку 1k ka a+ = і 1 2( )k kb x+ = .
Використаємо рівняння (2.2.) з заміною k на 1k + . При 2( 1) 1( )k kx x+ = маємо
1( ) 2( 1) 1 1 1 2( )( ) ( )k k k k k k k kx x a b a a x a+ + + += = + α − = + α − .
Підставляючи (2.1.) і (2.2.) у цій вираз, одержимо 2
1 0α + α + = .
Коренями рівняння 2
1 0α + α + = є α1 ≅ 0,618. Таким чином, якщо на k –й
ітерації 1( )kx і 2( )kx вибрано по (2.1.) і (2.2.), де α1 ≅ 0,618, то 1k + - й інтервал
стискається з коефіцієнтом 0,618. На перший ітерації необхідно здійснювати
два розрахунку функції в точках 1x і 2x , але в наступних ітераціях
потребується тільки один розрахунок, оскільки 1( 1) 2( )k kx x+ = або 2( 1) 1( )k kx x+ = .
Приклад. Розглянемо наступну задачу:
мінімізувати 2
2x x+
при умовах 3 5.x− ≤ ≤
Як видно, мінімізуєма функція строго унімодальна і початкова довжина
інтервалу невизначеності рівняє восьми. Будемо зменшувати довжину
інтервалу не більше як 0,2. Перші дві точки розраховуються наступним чином:
1
2
3 0,382 8 0,056
3 0,618 8 1,944.
x
x
= − + × =
= − + × =
Оскільки 1 2( ) ( )f x f x〈 , то новий інтервал невизначеності рівний [-3;
1,944]. Результати наведені в табл. 2.1
Таблиця 2.1
Розрахунки за методом золотого перетину
к ак вк х1 х2 f(x1`) f(x2)
1 -3,000 5,000 0,056 1,944 0,115 7,667
2 -3,000 1,944 -1,112 0,056 -0,987 0,115
3 -3,000 0,056 -1,832 -1,112 -0,308 -0,987
4 -1,832 0,056 -1,112 -0,664 -0,987 -0,887
5 -1,832 -0,664 -1,384 -1,112 -0,853 -0,987
6 -1,384 -0,664 -1,112 -0,936 -0,987 -0,996
7 -1,384 -0,936 -1,208 -1,112 -0,957 -0,987
8 -1,208 -0,936 -1,112 -1,032 -0,987 -0,999
9 -1,112 -0,936
Після восьми ітерацій, які містять дев’ять розрахунків функції, інтервал
невизначеності рівний [-1,112, -0,936], так що у якості точки мінімуму може
бути взята, наприклад, середина інтервалу –1,024. Точкою точного мінімуму є –
1,0.
На рис. 2.5 наведено алгоритм методу золотого перетину.
6. ПОЧАТОК
, , ,а в l α
1
2
(1 )( )
( )
x a b a
x a b a
= + − α −
= + α −
1 1
2 2
( )
( )
y f x
y f x
=
=
1 2y y〈
ні так
1
1 2
2 ( )
a x
x x
x a b a
=
=
= + α −
2
2 1
1 (1 )( )
b x
x x
x a b a
=
=
= + − α −
1 2
2 2( )
y y
y f x
=
=
2 1
1 1( )
y y
y f x
=
=
b a l− ≤
ні
*
( ) / 2x a b= +
друк
*
x
кінець
Рис. 2.5.
7. Метод Фібоначчі
Подібно методу золотого перетину процедура пошуку Фібоначчі
потребує два розрахунки функції на першій ітерації, а на наступних – тільки по
одному. Однак ця процедура відрізняється від методу золотого перетину тим,
що зменшення інтервалу невизначеності змінюється від ітерації до ітерації.
Процедура основана на послідовності Фібоначчі { }Fν , в якої кожне
наступне число визначається як сума двох попередніх:
1 1, 1,2,...,F F Fν+ ν ν−= + ν = (2.3)
0 1 1.F F= =
Така послідовність має від 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... На k - й ітерації
інтервал невизначеності рівний [ ],k ka b . Дві точки 1( )kx і 2( )kx визначаються
наступним чином:
1
1( )
1
( ), 1,2,...,n k
k k k k
n k
F
x a b a k n
F
− −
− +
= + − = , (2.4)
2( )
1
( ), 1,2,...,n k
k k k k
n k
F
x a b a k n
F
−
− +
= + − = , (2.5)
де n ―задане загальне число розрахунків функції.
За теоремою (2.1) новий інтервал невизначеності [ ]1 1,k ka b+ + рівний
1( ),k kx b , якщо 1( ) 2( )( ) ( )k kf x f x〉 , i 2( ),k ka x , якщо 1( ) 2( )( ) ( )k kf x f x≤ . У першому
випадку, враховуючи вирез (2.4) і вважаючи n kν = − в (2.3), отримуємо
1
1 1 1( )
1 1
( ) ( )n k n k
k k k k k k k k k k
n k n k
F F
b a b x b a b a b a
F F
− − −
+ +
− + − +
− = − = − − − = − . (2.6)
У другому випадку, враховуючи (2.5), маємо
1 1 2( )
1
( )n k
k k k k k k
n k
F
b a x a b a
F
−
+ +
− +
− = − = − . (2.7)
Таким чином, в обох випадках довжина інтервалу невизначеності
зменшується з однаковим коефіцієнтом 1/n k n kF F− − + .
Якщо 1( ) 2( )( ) ( )k kf x f x〉 , то за теоремою 2.1 1 1( )k ka x+ = і 1k kb b+ = . Таким
чином, застосовуючи (2.4) з заміною k на 1k + , отримуємо
2 2
1( 1) 1 1 1 1( ) 1( )( ) ( ).n k n k
k k k k k k k
n k n k
F F
x a b a x b x
F F
− − − −
+ + + +
− −
= + − = + −
Підставляючи вираз для 1( )kx із (2.4), отримуємо
1 2 1
1( 1)
1 1
( ) (1 )( ).n k n k n k
k k k k k k
n k n k n k
F F F
x a b a b a
F F F
− − − − − −
+
− + − − +
= + − + − −
Якщо підставити n kν = − у вираз (2.3), то можна отримати
1 1 11 ( / ) /n k n k n k n kF F F F− − − + − − +− = . Підставляючи це рівнянні у вираз для 1( 1),kx +
отримуємо
1 2
1( 1)
1
( )( )n k n k
k k k k
n k
F F
x a b a
F
− − − −
+
− +
−
= + − .
8. Якщо підставити у рівняння (2.3) 1n kν = − − та врахувати (2.5), то
можна отримати
1( 1) 2( )
1
( )n k
k k k k k
n k
F
x a b a x
F
−
+
− +
= + − = .
Також, якщо 1( ) 2( )( ) ( )k kf x f x≤ , то 2( 1) 1( )k kx x+ = . Таким чином, на ( 1)k + -й
ітерації або 1( 1) 2( )k kx x+ = , або 2( 1) 1( )k kx x+ = , тобто потрібно лише один
розрахунок функції.
Щоб забезпечити подальше зменшення інтервалу невизначеності, точку
останнього розрахунку злегка перемішуємо праворуч або ліворуч від середньої
точки 1( 1) 2( 1)n nx x− −= так, щоб 1 11/ 2( )n nb a− −− була довжиною кінцевого
інтервалу невизначеності [ ],n na b .
Загальне число n розрахунків функції має бути визначене заздалегідь. Це
пояснюється тим, що точки, в яких здійснюються розрахунки, визначаються за
формулами (2.4) і (2.5) і, отже, залежать від n . Із формул (2.7) і (2.6) видно, що
довжина інтервалу невизначеності зменшується на k -й ітерації з коефіцієнтом
1/n k n kF F− − + . Отже, після 1n − -й ітерації, де n – задане загальне число
розрахунків функції, довжина інтервалу зменшиться від 1 1b a− до
1 1( ) /n n nb a b a F− = − . Звідси n має бути вибране так, щоб величина
1 1( ) / nb a F− узгоджувалася з заданою точністю.
Алгоритм методу Фібоначчі
Початковий етап. Вибираємо допустиму кінцеву довжину інтервалу
невизначеності 0l〉 і точність розрахунку 0ε〉 . Задаємо початковий інтервал
невизначеності [ ]1 1,a b і вибираємо число n розрахунків функції так, щоб
1 1( ) /nF b a l〉 − . Покладемо 1 1 2 1 1 2 1 1 1 1( / )( ), ( / )( ).n n n nx a F F b a x a F F b a− −= + − = + −
Розрахуємо 1( )f x і 2( )f x , покладемо 1k = і перейдемо до основного етапу.
Основний етап:
Крок 1. Якщо 1( ) 2( )( ) ( )k kf x f x〉 , то перейти до кроку 2, якщо
1( ) 2( )( ) ( )k kf x f x≤ , то до кроку 3.
Крок 2. Покладемо 1 1( )k ka x+ = , 1k kb b+ = . Потім покладемо 1( 1) 2( ),k kx x+ =
2( 1) 1 1 1 1( / )( )k k n k n k k kx a F F b a+ + − − − + += + − . Якщо 2k n= − , то перейти до кроку 5; у
іншому випадку розраховуємо 2( 1)( )kf x + і переходимо до кроку 4.
Крок 3. Покладемо 1k ka a+ = , 1 2( )k kb x+ = , 2( 1) 1( ),k kx x+ =
1( 1) 1 2 1 1( / )( )k k n k n k k kx a F F b a+ + − − + + += + − . Якщо 2k n= − , то перейдемо до кроку 5;
у іншому випадку розраховуємо 2( 1)( )kf x + і переходимо до кроку 4.
Крок 4. Замінимо k на 1k + і перейдемо до кроку 1.
Крок 5. Покладемо 1( ) 1( 1)n nx x −= і 2( ) 1( ) .n nx x= + ε Якщо 1( ) 2( )( ) ( )n nf x f x〉 , то
покладемо 1( )n na x= і 1n nb b −= . В іншому випадку, тобто якщо 1( ) 2( )( ) ( )n nf x f x≤ ,
9. то покладемо 1n na a −= і 1( )n nb x= . Стоп; оптимальне рішення в інтервалі
[ ],n na b .
Приклад. Розглянемо попередню задачу. Встановимо, щоб довжина
кінцевого інтервалу невизначеності не перевищувала 0,2. Отже, 8 / 0,2 40nF 〉 = ,
так що 9n = . Виберемо 0,01ε = . Два перших розрахунків значень функції
проводимо в точках
7
1(1)
9
3 (8) 0,054545;
F
x
F
= − + = 8
2(1)
9
3 (8) 1,945454.
F
x
F
= − + =
Зазначимо, що 1(1) 2(1)( ) ( )f x f x〈 . Отже, новий інтервал невизначеності
рівний [ ]3,000000,1,945454− . Процедура повторюється, результати розрахунків
наведені в табл. 2.2. Зазначимо, що при 8k = маємо 1( ) 2( ) 1( 1)k k kx x x −= = , отже, на
цьому етапі не має необхідності розраховувати функцію. Для 9k = маємо
1( ) 1( 1) 0,963636k kx x −= = − і 2( ) 1( ) 0,953636.k kx x= + ε = −
Оскільки 2( ) 1( )( ) ( )k kf x f x〉 , кінцевий інтервал невизначеності [ ]9 9,a b
рівний [-1,109091, -0,963636], довжина якого 0,145455l = . За наближене
значення точки мінімуму візьмемо середину цього відрізка –1,036364.
Таблиця 2.2
Результати обчислень за методом Фібоначчі
к ак вк х1(к) х2(к) f(x1(k)) f(x2(k))
1 -3,000000 5,000000 0,054545 1,945454 0,112065 7,675699
2 -3,000000 1,945454 -1,109091 0,054545 -0,988099 0,112065
3 -3,000000 0,054545 -1,836363 -1,109091 -0,300497 -0,988099
4 -1,836363 0,054545 -1,109091 -0,672727 -0,988099 -0,892892
5 -1,836363 -0,672727 -1,399999 -1,109091 -0,840001 -0,988099
6 -1,399999 -0,672727 -1,109091 -0,963636 -0,988099 -0,998677
7 -1,109091 -0,672727 -0,963636 -0,818182 -0,998677 -0,966942
8 -1,109091 -0,818182 -0,963636 -0,963636 -0,998677 -0,998677
9 -1,109091 -0,963636 -0,963636 -0,953636 -0,998677 -0,997850
Нагадаємо, що у попередньому прикладі після числа розрахунків функції 9n =
маємо довжину інтервалу невизначеності рівну 0,176.
Порівняння методів лінійного пошуку без розрахунків похідної
При заданій унімодальній на інтервалі [ ]1 1,a b функції f кожен із
розглянутих методів дає за кінцеве число кроків точку x , що *
x x l− ≤ , де l ―
довжина кінцевого інтервалу невизначеності, а *
x ― точка мінімуму на
заданому інтервалі. При заданій довжині кінцевого інтервалу невизначеності,
яка задовольняє потребуємому ступеню точності, необхідне число розрахунків
функції n може бути визначене як найменше додатне ціле, що задовольняє
наступним співвідношенням:
10. метод рівномірного пошуку 1 12( )
1;
b a
n
l
−
≥ −
дихотомічний пошук
2
1 1
1
;
2
т
l
b a
≥ −
метод золотого перетину 1
1 1
(0,618) ;n l
b a
−
≥
−
метод Фібоначчі 1 1
.n
b a
F
l
−
≥
З наведених виразів видно, що потрібне число розрахунків є функцією
відношення ( )1 1 /b a l− . Для фіксованого значення ( )1 1 /b a l− найменше число
потрібних розрахунків функції відповідає більш ефективному алгоритму. З цієї
точки зору найбільш ефективним алгоритмом є метод Фібоначчі, далі – метод
золотого перетину, дихотомічного пошуку і метод рівномірного пошуку.
Зазначимо, що для досить великих n значення 1/ nF наближається до
( ) 1
0,618
n−
, тому методи Фібоначчі і золотого перетину є майже ідентичні.