Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга_8.doc
Скачиваний:
6
Добавлен:
05.05.2019
Размер:
655.36 Кб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]