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): у нього додатково включаються доданки, зв’язані з другими частковими похідними.