Методи розв’язування одновимірних та багатовимірних нелінійних оптимізаційних задач та задач лінійного цілочислового програмування

Міністерство освіти і науки України

Полтавський національний технічний університет імені Юрія Кондратюка

Факультет інформаційно-телекомунікаційних технологій та систем

Кафедра прикладної математики, інформатики і математичного моделювання


КУРСОВА РОБОТА

з дисципліни «Методи оптимізації і дослідження операцій»

на тему: «Методи розв’язування одновимірних та багатовимірних нелінійних оптимізаційних задач та задач лінійного цілочислового програмування»

301-ЕІ. 20 06165 КР

Керівник роботи

кандидат фіз.-мат. Наук Радченко Г.О.

Розробила

студентка гр. 301-ЕІ Клюєва А.Ю.

Полтава 2009


Зміст

1. Методи розв’язування одновимірних оптимізаційних задач

2. Визначення найменшого значення функції на заданому відрізку за допомогою методів одновимірної оптимізації

3. Розв’язання задачі мінімізації за допомогою методу Ньютона і методу найшвидшого спуску

4. Розв’язання задачі умовної оптимізації за допомогою методу Франка-Вулфа і методу штрафних функції

5. Розв’язання задачі цілочислового програмування

6. Вихідний код програм

Список використаної літератури


1. Методи розв’язування одновимірних оптимізаційних задач

Розглянемо детально методи розв’язування одновимірних задач, а саме: метод дихотомії, метод золотого перерізу і метод Фібоніччі.

Одновимірна оптимізація полягає в знаходженні точки , в якій цільова функція приймає максимальне або мінімальне значення. Часто в постановках задач може бути заданий відрізок , в якому знаходиться оптимальне рішення.

Функція має локальний мінімум в точці , якщо при довільному  існує окіл  такий, що для всіх значень  в цьому околі . Функція  має глобальний мінімум в точці , якщо для всіх х справедлива рівність .

Відповідно функція має локальний максимум в точці , якщо при довільному  існує окіл  такий, що для всіх значень  в цьому околі . Функція  має глобальний мінімум в точці , якщо для всіх х справедлива рівність .

Класичний підхід до задачі знаходження екстремумів функції полягає в пошуку умов, яким вони повинні задовольняти. Необхідною умовою екстремуму в точці  являється рівність нулю першої похідної (теорема Ферма), тобто вимагається розв’язати рівняння: . Даному рівнянню задовольняють як локальні та глобальні екстремуми, так і точки перегину функції, тому приведена умова є лише необхідною умовою, але не достатньою.

З метою отримання достатніх умов вимагається обчислення значень других похідних в точках, що задовольняють рівняння . При цьому доведено, що мінімуму функції відповідає додатне значення другої похідної, тобто , а максимуму – від’ємне, тобто . Однак, якщо друга похідна дорівнює 0, ситуація залишається невизначеною і необхідно досліджувати вищі похідні. При цьому якщо перша вища похідна не рівна нулю має парний порядок, то екстремум існує, в іншому випадку – ні.

Дамо визначення унімодальної функції при пошуку мінімуму.

Неперервна функція  називається унімодальною на відрізку  якщо:

· точка  локального мінімуму функції належить відрізку ;

· для довільних двох точок відрізка х1 і х2, взятих по одну сторону від точки мінімуму, точці х1 більш близькій до точки мінімуму відповідає менше значення функції, тобто при  або при  справедлива нерівність .

Достатня умова унімодальності функції  на відрізку  ґрунтується на наступній теоремі:

Якщо функція  двічі диференційована на відрізку  і  в будь-якій точці цього відрізка, то - унімодальна функція на відрізку .

Відмітимо, що умова  визначає множину точок, на якій функція являється опуклою вниз. Умова ж  визначає опуклу вгору функцію, яка на відрізку  має максимум і також являється унімодальною.

Метод половинного ділення, який також називається методом дихотомії, являється процедурою послідовного пошуку мінімуму фунуції. Нехай визначено відрізок , якому належить точка локального мінімуму х, і функція  являється унімодальною на цьому відрізку. Далі для звуження проміжку унімодальності використовуються дві точки  і , розташовані симетрично на відстані  від середини відрізка:

;

.

Константа  повинна бути меншою допустимої кінцевої довжини відрізка, Δk= bk- ak> 0.

Потім обчислюють значення функції в цих точках y1=f(x1) і y2=f(x2) і в залежності від їх співвідношення нові межі відрізка унімодальності (a1, 1) будуть наступні:

y1 < y2, a1=a0 і 1=x2 ;

y1 > y2, a1=x1 і 1=0 ;

y1 = y2, a1=x1 і 1= x2 .

В цьому звуженому проміжку (a1, 1) знову розраховуються дві точки х1(1) іх2(1), симетричні відносно його середини і значення функції в цих точках. Процедура буде продовжуватись до тих пір, поки не буде виконуватись умова Δk = bk-ak ε, де ε – точність пошуку, і тоді в якості точки локального мінімуму можна наближено прийняти середину відрізку .

Назва методу половинного ділення мотивована тим, що якщо величина εдостатньо мала, то довжина відрізка унімодальності (a) зменшується майже вдвічі.

Наступним методом знаходження екстремуму для задач одновимірної оптимізації є метод золотого перерізу.

Термін “золотий переріз” ввів Леорандо да Вінчі. Точка х1 являється золотим перерізом відрізка , якщо відношення довжини -a всього відрізка до довжини -х1 більшої частини дорівнює відношенню довжини більшої до довжини х1-а меншої частини, тобто х1 – золотий переріз, якщо справедлива рівність: . Аналогічно, точка х2 симетрична точці х1 відносно середини відрізка , являється другим золотим перерізом цього відрізка.

Відмітимо властивість золотого перерізу: точка х1 одночасно являється золотим перерізом відрізка , а друга точка х2 – золотим перерізом відрізка .

Суть методу золотого перерізу заклечається в наступному. Спочатку на вихідному відрізку  знаходяться точки х1 і х2 по наступним формулам:

 - коефіцієнт зжимання.

Потім обчислюють значення функції в точках х1 і х2, тобто . При цьому можливі два випадки:

1. , в цьому випадку новий відрізок буде рівним  і . На цьому відрізку знову обираються дві точки

2. , тоді новий відрізок будуть становити: . На новому відрізку також обираються дві точки

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

Розглянемо також метод Фібоначчі для розв’язування одновимірних задач . Цей метод названий так зважаючи на появу при пошуку проміжків унімрдальності чисел Фібоначчі і використовується, якщо кількість ітерації обмежена . Суть методу в тому, що на кожному кроці точка наступного обчислення обирається симетрично відносно середини відрізка локалізації до точки, що лежить всередині цього відрізку, уже проведеного обчислення. Тобто в процесі пошуку інтервалу (x1; x3) з точкою х2, вже лежачою в цьому інтервалі, наступна точка х4 завжди вибирається так, що х3–х4 = х2–х1 або х4-х1 = х3-x2, тобто x4=х1-х2+х3.

Алгоритм методу Фібоначчі поляга в наступному:

1) задаються початкові границі відрізку і , точність обчислень .

2) розраховуються початкові точки ділення:

 - це число із послідовності Фібоначчі, яке знаходиться з умови , Таким чином визначається також число ітерацій . В точках  знаходять значення цільової функції: .

3) покладають . Тоді

· якщо , то , .

· інакше , .

4) якщо =1, то  і зупиняються. Значення цільової функції в цій точці і буде мінімумом функції. Інакше повертаються до 3-го кроку.

Відмітимо, що на кожному кроці методу Фібоначчі точка, що лежить середині відрізку локалізації, ділить його у відношенні двох послідовних чисел Фібоначчі.

2. Визначення найменшого значення функції на заданому відрізку за допомогою методів одновимірної оптимізації

Визначимо найменше значення функції  на відрізку  з точністю , використовуючи

· метод дихотомії:

Розіб’ємо відрізок  навпіл і візьмемо дві симетричні відносно центру точки  такі, що , де  і відкинемо ту з точок, до якої ближче виявилась одна з двох знову поставлених точок з максимальним значенням.

Обчислюємо значення функції  в цих точках:

Оскільки , то нові межі відрізка  і . В цьому звуженому проміжку знову розраховуємо дві точки, симетричні відносно його середини і значення функції в цих точках. Процедура буде продовжуватись до тих пір, поки не буде виконуватись умова .

В нашому випадку . Тому знову розраховуємо дві точки:

Оскільки  то нові межі відрізка  і . Перевіряємо умову зупинки: . Отже продовжуємо процедуру.

 нові межі відрізка , . Перевіряємо умову зупинки: . Отже продовжуємо процедуру.

 нові межі відрізка , . Перевіряємо умову зупинки: . Продовжуємо процедуру.

 нові межі відрізка , . Перевіряємо умову зупинки: . Отже продовжуємо процедуру.

 нові межі відрізка , . Перевіряємо умову зупинки: . Отже продовжуємо процедуру.

 нові межі відрізка , . Перевіряємо умову зупинки: . Отже продовжуємо процедуру.

 нові межі відрізка , . Перевіряємо умову зупинки: . Продовжуємо процедуру.

 нові межі відрізка , . Перевіряємо умову зупинки: . Продовжуємо процедуру.

 нові межі відрізка , . Перевіряємо умову зупинки: . Продовжуємо процедуру.

 нові межі відрізка , .

Перевіряємо умову зупинки: . Отже в якості точки локального мінімуму можна наближено прийняти середину відрізку . Тоді мінімальне значення вихідної функції буде рівним:

.

· метод золотого перерізу

На першій ітерації відрізок  ділимо двома симетричними відносно центра точками за формулами:

Обчислюємо значення функції в цих точках:

Той із кінців відрізка, до якого серед знову поставлених точок ближче опинилась та, значення функції в якій максимальне, відкидаємо. Тобто, оскільки , то покладаємо, що . Тепер обчислюємо значення функції в нових точках:

Так як і в методі дихотомії процедура буде продовжуватись до тих пір, поки не буде виконуватись умова . Отже перевіримо умову зупинки:

. Тому знову аналогічно шукаємо нові межі відрізка. Оскільки  маємо:

 Перевіряємо умову зупинки: , тому продовжуємо процедуру.

Перевіряємо умову зупинки: , тому продовжуємо процедуру.

Знову перевіряємо умову зупинки: , отже продовжуємо процедуру.

Перевіряємо умову зупинки: , тому продовжуємо процедуру.

Перевіряємо умову зупинки: , отже продовжуємо процедуру.

Перевіряємо умову зупинки: , отже продовжуємо процедуру.

 Перевіряємо умову зупинки: , тому продовжуємо процедуру.

 Перевіряємо умову зупинки: , отже продовжуємо процедуру.

 Перевіряємо умову зупинки: , отже продовжуємо процедуру.

 Перевіряємо умову зупинки: , тому продовжуємо процедуру.

 Перевіряємо умову зупинки: , тому продовжуємо процедуру.

 Перевіряємо умову зупинки: , отже продовжуємо процедуру.

 Перевіряємо умову зупинки: , отже продовжуємо процедуру.


 Перевіряємо умову зупинки: , отже продовжуємо процедуру.

 Перевіряємо умову зупинки: . Отже за точку локального мінімуму можна взяти середину відрізку . При цьому мінімальне значення вихідної функції буде рівним:

.

Метод дихотомії побудований таким чином, що кожний наступний інтервал невизначеності менше попереднього. Як бачимо, в порівнянні з методом золотого перерізу цей метод сходиться значно швидше (тобто через меншу кількість кроків отримуємо інтервал невизначеності заданої довжини, що містить (в методі дихотомії ми зробили 11 ітерацій, а в методі золотого перерізу - 16). Крім того, метод дихотомії потребує вдвічі менше обчислень, ніж метод золотого перерізу. Однак мінімальне значення функції знайдене обома методами співпадає, тому можемо зробити висновок, що доцільніше використовувати метод дихотомії для зменшення затрат часу на розв’язання задачі.

· метод Фібоначчі

Спочатку згенеруємо послідовність чисел Фібоначчі: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, … . Початкові обрахунки проводяться в точках: , де  - число Фібоначчі, яке обирається з умови , тобто в нашому випадку це 18-те число Фібоначчі: . Ці точки розташовані симетрично відносно середини відрізку . На кожному кроці точка наступного обрахунку обирається симетрично відносно середини відрізка локалізації до точки уже проведеного обрахунку, що лежить на цьому відрізку. В силу властивостей чисел Фібоначчі кількість ітерацій строго обмежена і дорівнює N=18. Отже можемо знайти початкові точки ділення:

. Далі обчислюємо значення функції в цих точках:

Оскільки , то покладаємо, що N=N-1=18-1=17. Нові межі відрізка тепер будуть рівними . Знаходимо нові точки ділення: . Значення функції в цих точках:

Оскільки  N=16, нові межі відрізка -.

Оскільки  N=15, нові межі відрізка -.

Оскільки  N=14, нові межі відрізка -.

Оскільки  N=13, нові межі відрізка -.

Оскільки  N=12, нові межі відрізка -.

Оскільки  N=11, нові межі відрізка -.

Оскільки  N=10, нові межі відрізка -.

Оскільки  N=9, нові межі відрізка -.

Оскільки  N=8, нові межі відрізка -.

Оскільки  N=7, нові межі відрізка -.

Оскільки  N=6, нові межі відрізка -.

Оскільки  N=5, нові межі відрізка -.

Оскільки  N=4, нові межі відрізка -.

Оскільки  N=3, нові межі відрізка -.

Оскільки , то локальний мінімум досягається в точці . При цьому мінімальне значення вихідної функції буде рівним: . Отже мінімальне значення функції, знайдене методом дихотомії, методом золотого перерізу і методом Фібоначчі співпадають. Однак найбільше ітерацій було зроблено при розв’занні задачі методом Фібоначчі.

3. Розв’язання задачі мінімізації за допомогою методу Ньютона і методу найшвидшого спуску

Розв’яжемо задачу мінімізації для функції , використовуючи метод Ньютона. Це метод другого порядку, який використовує похідну першого і другого порядку від цільової функції.

Перш ніж розв’язувати дану задачу, з’ясуємо чи має вона точку локального мінімуму. Для цього побудуємо матрицю Гессе.

Знайдемо частинні похідні першого і другого порядку від функції :

Отже матриця Гессе матиме вигляд:

. А оскільки головні мінори додатні: , то матриця Гессе додатно визначена. Тобто достатні умови існування локального мінімуму виконані.

Так як цільова функція є опуклою, тобто це задача опуклого програмування, а функція  є неперервно диференційованою в Rn , то якщо точка  є точкою локального екстремуму, то вона буде і точкою глобального екстремуму для цієї задачі.

Отже можемо застосувати метод Ньютона. Послідовність точок, яка прямує до точки мінімуму функції  згідно цього методу знаходиться за формулою: , де  - обернена матриця Гессе.

.

Обиремо в допустимій області задачі довільну точку – початкове наближення. Нехай це буде точка .

Знайдемо градієнт цільової функції:і обчислимо його в точці : .

Знайдемо наступне наближення до оптимального розв’язку вихідної задачі:  і обчислимо градієнт цільової функції в цій точці: . Рівність градієнта цільової функції нулю є необхідною умовою існування екстремуму функції багатьох змінних. Тобто оптимальний розв’язок задачі , причому .

Тепер розв’яжемо задачу мінімізації для функції , використовуючи метод найшвидшого спуску. Цей метод відноситься до градієнтних методів.

За даним методом будується послідовність точок , яка прямує до оптимального розв’язку задачі - . Від точки  до точки  рухаються в напрямі градієнта цільової функції, обчисленого в точці .

Широке застосування цього методу обумовлено тим, що в напряму антиградієнту —  похідна функції за напрямом досягає найменшого значення.

Алгоритм методу найшвидшого спуску:

1. Обираємо довільну початкову точку , яка називається початковим наближенням розв’язку задачі , і покладаємо, що  При цьому функція  вважається опуклою і неперервно диференційованою в . Також обираємо точність обчислень .

2. Обчислюємо градієнт цільової функції . Якщо , то покладаємо  і зупиняємо обчислення, інакше - переходимо до кроку 3.

3. Шукаємо наступне наближення за формулою: - для задачі мінімізації, а для задачі максимізації: . Число  - параметр, який називається довжиною кроку в точці . Його обирають довільно, однак зазвичай, параметр  обирається з умови, щоб в точці  спостерігалося максимальне зменшення (збільшення) цільової функції .

4. Перевіряємо умову зупинки, а саме: . Якщо умова виконана, то покладаємо  і зупиняємо обчислення, якщо ні, то переходимо до наступного кроку.

5. Покладаємо, що  і переходимо до кроку 2.

Тепер перейдемо безпосередньо до нашого прикладу.

Оберемо спочатку точність обчислень . За початкове наближення як і в методі Ньютона візьмемо точку . З аналізу, проведеного в методі Ньютона, маємо що цільова функція є опуклою і неперервно диференційованою в Rn, отже даний метод застосовувати можна.

З методу Ньютона маємо, що градієнт цільової функції в точці  буде рівним . Оскільки , то шукаємо наступне наближення розв’язку вихідної задачі:

.

Знайдемо : . Оскільки  обирається з умови, щоб в точці  спостерігалося максимальне зменшення , знайдемо похідну від цільової функції в точці  і прирівняємо її до нуля.

Отже можемо тепер знайти координати точки : . Обчислимо значення цільової функції в цій точці: .

Перевіряємо умову зупинки:

отже шукаємо наступне наближення аналогічним чином.

Отже можемо тепер знайти координати точки : Обчислимо значення цільової функції в цій точці: .

Перевіряємо умову зупинки:

отже шукаємо наступне наближення:

Отже можемо тепер знайти координати точки : .

Обчислимо значення цільової функції в цій точці: Перевіряємо умову зупинки:

отже шукаємо наступне наближення:

Отже можемо тепер знайти координати точки : .

Обчислимо значення цільової функції в цій точці: Перевіряємо умову зупинки:

, тобто умову зупинки виконано. Отже .

Як бачимо, розв’язки задачі, знайдені обома методами майже однакові, але при цьому метод Ньютона дав результат вже на першому кроці ( на відміну від методу найшвидшого спуску, де довелося робити 4 ітерації). Це пов’язано з тим, що цільова функція є квадратичною, а отже напрям спуску  завжди співпадає з напрямом в точку мінімуму . Тобто основна перевага методу Ньютона - швидка збіжність, однак при цьому суттєвим недоліком є залежність збіжності від початкового наближення . Крім того у випадку не квадратичної цільової функції трудомісткість ітерації методом Ньютона може виявитись дуже великою за рахунок необхідності обчислення матриці других похідних мінімізуємої функції, що потребує затрат великої кількості часу.

Розв’язання задачі умовної оптимізації за допомогою методу Франка-Вулфа і методу штрафних функції

4. Розв’яжемо задачу умовної оптимізації

a. методом Франка-Вулфа

Функція  являється вгнутою так як представляє собою суму лінійної функції (її можна розглядати як вгнуту) і квадратичної форми, яка являється від’ємно визначеною і тому також являється вгнутою. Перевіримо завдяки матриці Гессе від’ємну визначеність функції . Для цього спочатку знайдемо частинні похідні першого і другого порядку від функції :

Отже матриця Гессе матиме вигляд:


Головні мінори :оскільки в ряді  знаки чергуються, то дана матриця є від’ємно визначеною, я отже функція  - вгнута.

Система обмежень задачі включає тільки лінійні нерівності, які утворюють опуклу множину, отже дана задача є задачею опуклого програмування.

Задачу такого типу можна розв’язувати методом Франка-Вулфа. Цей метод відноситься до групи градієнтних методів.

Розглянемо задачу:

Алгоритм методу Франка-Вулфа:

1. Спочатку в допустимій області задачі обирають довільну точку . Це можна зробити, наприклад, за допомогою методу штучного базису. Також обирають точність обчислень . Покладають

2. Знаходять в цій точці градієнт цільової функції .

3. Будують функцію  і розв’язують задачу максимізації для функції  в області 2-3, тобто таку задачу:


Нехай  - оптимальний розв’язок задачі 4,2,3.

4. Шукаємо наступне наближення за формулою: , де  - крок в точці. Його обирають довільно, однак краще його вибрати так, щоб  при такому значенні  мала найбільше значення. Для цього з формул 5 знаходять вираз координат вектора  через :  і підставляють цей вираз у функцію . Потім розв’язують систему . За  вибирають найменший з коренів цього рівняння. Якщо цей корінь більше одиниці, то .

5. Перевіряють критерії зупинки: , . Якщо дані умови виконались, то покладають  і зупиняють обчислення, якщо ні, то переходимо до наступного кроку.

6. Покладають, що  і переходять до кроку 2.

Тепер перейдемо безпосередньо до нашої задачі. За початкове наближення до оптимального плану задачі обираємо точку , а обчислення будемо проводити з точністю , . Градієнт цільової функції в точці .

Розв’яжемо за допомогою симплекс методу задачу:

оптимізаційний одновимірний мінімізація дихотомія ньютон


 і Базис Сб В4200

А1

А2

А3

А4

1

А3

0Минимизация функций нескольких переменных. Метод спуска


Модели и методы принятия решений


Определение законов распределения и числовых характеристик случайной величины на основе опытных данных


Последовательность решения задач линейного программирования симплекс-методом


Похідні та диференціали функції багатьох змінних


Актуально: