8.2. Метод опуклих комбінацій
Ідея цього алгоритму полягає в тому, щоб на кроці 2 визначати напрямок за допомогою оптимізаційної задачі лінійного програмування, використовуючи лінійну апроксимацію та лінійні обмеження задачі. Розглянемо допустиму точку, що перевіряється, xk. Якщо виконується умова IV) з розділу 8.1 про часткові похідні функції , значення у точці z, що знаходиться в околиці xk, може бути апроксимовано розкладанням у ряд Тейлора з використанням перших похідних:
(8.4)
Припустимо, що нам удалося знайти допустиму точку z, в якій максимізується вираз
(8.5)
за
умови виконання лінійних обмежень, що
накладаються на перемінні. Нехай це є
точка
і нехай
(8.6)
Тоді
вираз під знаком суми в правій частині
(8.4) строго позитивно. Цілком ймовірно,
не
знаходиться
в безпосередній околиці точки xk,
так
що апроксимація (8.4)
є поганою. Справді,
може бути навіть меншим, ніж
.
Однак
через безперервність
та її часткових похідних існує деяка
опукла
комбінація,
або
середньозважена,
xk
і
,
що дозволяє одержати збільшення
у порівнянні з
.
Іншими словами, існує таке t, 0 < t ≤ 1, що, прийнявши
(8.7)
одержимо
(8.8)
Оскільки всі обмеження лінійні, опукла комбінація xk та z є допустимою для будь-якого t, значення якого знаходиться в межах 0 < t ≤ 1.
Визначимо кожен напрямок у такий спосіб:
(8.9)
тоді (8.7) можна записати в стандартному виді
(8.10)
що читач може перевірити самостійно. [Перетворіть операції підсумовування в (8.6) так, щоб представити ця нерівність у термінах напрямків].
Отже, коротенько повторимо отримані результати. Крок 2 можна детально описати у такий спосіб:
I) Визначимо значення всіх часток похідних dc/dxj у точці, що перевіряється, xk.
II)
Вирішимо задачу лінійного програмування,
описувану цільовою функцією (8.5) і
лінійних обмежень, де у всіх обмеженнях
заміняються
на
.
Визначимо
напрямки dj
відповідно
до (8.8).
III) Якщо нерівність (8.6) не виконується, припинимо розрахунки.
IV)
У противному випадку визначимо таку
довжину кроку tk,
при
якій максимізується значення
при
0
< t
≤
1.
Якщо оптимальне рішення задачі лінійного програмування на ітерації k дозволяє досягти рівності між двома сумами в лівій і правій частинах (8.6), то поточна точка, що перевіряється, xk є відносною стаціонарною точкою. Нерідко це означає, що в безпосередній околиці xk не існує допустимої точки, в якій перевищує . (Однак може случитися, що xk є не більш ніж точка перегину). Разом з тим, зазвичай не існує такої ітерації k, на якій ліва і права частини (8.6) рівні між собою. Проте, для будь-якої довільної вихідної точки, що перевіряється, х0 метод завжди забезпечує збіжність до межі в наступному змісті:
A) Вся послідовність монотонно зростає, прагнучи до деякої межі.
Б)
Принаймні підпослідовність xk
сходиться
до деякої допустимої точки
.
B) Точка є відносною стаціонарною точкою; це значить, що в або всі часткові похідні дорівнюють нулю, або деякі часткові похідні не дорівнюють нулю, однак у допустимій околиці не представляється можливим поліпшити значення .
Розглянемо важливий окремий випадок увігнутості . Нагадаємо визначення: функція багатьох перемінних є увігнутою, якщо для будь-яких двох точок х та у, х у, і для будь-якого р, 0 < р ≤ 1, виконується умова
;
функція є строго увігнутою, якщо для 0 < р < 1 нерівність є строгою.
Якщо
функція
увігнута, точка
завжди
уявляє собою глобальний оптимум, а
дійсно
є максимальним значенням
.
Більш
того, у цьому випадку можна знайти
оптимальну довжину кроку tk,
скориставшись
методом пошуку в одномірному просторі,
що описаний у попередніх розділах.
Слід зазначити деякі важливі особливості методу опуклих комбінацій.
I)
Тільки випадково кожне з напрямків
(8.9) може виявитися рівним відповідній
частковій похідній функції
у точці xk.
У
загальному випадку не обов’язково, щоб
кожне
було рівним напрямку найшвидшого підйому
в точці, що перевіряється.
II)
Оскільки
– оптимальне рішення задачі лінійного
програмування, що має т
обмежень,
у цьому рішенні знаходиться не більш
ніж т
строго
позитивних перемінних. Проте, якщо
,
то
буде
у відповідності з (8.7) відрізнятися від
.
Іншими
словами, при переході до наступної
ітерації можуть змінитися значення
всіх
хj.
III) Якщо система лінійних обмежень має спеціальну структуру, наприклад, якщо вона утворить мережну модель, то на кроці 2 при перебуванні оптимального рішення задачі лінійного програмування цю обставину можна використовувати.
IV) Якщо цільова функція характеризується лише незначною нелінійністю, так що більшість перемінних хj входить до цільової функції лінійно, з коефіцієнтами сj, то в (8.5) коефіцієнти при цих перемінних також дорівнюють сj. Це спрощує обчислення на кроці 2.
V) Якщо увігнута, то на кожній ітерації можна обчислити верхню грань оптимального значення . Це властивість є особливо корисною, оскільки верхню грань можна використовувати для визначення моменту припинення ітерацій у зв’язку з досягненням досить гарного рішення. Розрахунок верхньої грані заснований на тій обставині, що при розкладанні у ряд Тейлора з використанням перших похідних, тобто при розкладанні, аналогічному I), значення росте, якщо ця функція увігнута. Нехай х – оптимальне рішення; тоді
(8.11)
де перша нерівність походить з умови увігнутості, а друга – з факту оптимізації при цільовій функції (8.5). Таким чином, верхня грань являє собою вираз у правій частині (8.11). Оскільки ця грань не обов’язково зменшується на кожній ітерації, варто запам’ятовувати найменше значення верхньої грані, отримане на попередніх ітераціях.
Збіжність алгоритму можна прискорити за допомогою розкладання в ряд Тейлора з використанням других похідних, що на кроці 2 приводить до задачі не лінійного, а квадратичного програмування. Відповідним чином змінюється і нерівність (8.6): у нього додатково включаються доданки, зв’язані з другими частковими похідними.
