
Холмская экзамен / Моделювання систем
.pdf
О-бл/3
2. Q2(x ) = ( x i , x 2 )
|
|
-бл/3 |
О Vx 2 7 |
|
|
|
|
|
> |
|
|
ЧХ2У |
- 1 2 > / З х ,х 7 < 0 ; |
|
|
|
|
||
3.Q1(x) = ( x 1, x 2 ) |
^18 |
0У Хіч |
||
О |
6 |
|
||
|
|
V X 2 J |
||
= ( 1 8 x j |
6х 2) |
= 18xj + 6x 2 > 0; |
||
|
Vx 2 7 |
|
|
|
4- Q1( x ) = ( x 1, x 2 ) |
|
|
|
|
|
|
|
|
V X 2 J |
= ( - ! 8xi |
- 6x 2) |
|
-18xj2 - 6x 2 < 0; |
|
|
Vx 2 7 |
|
|
(згідно з визначенням ми не враховуємо точку (0; 0) при знаходженні знаку квадратичної форми у випадках 3 та 4). Як випливає з наведених вище даних,
матриця Гессе є невизначеною у точках X і та X2, додатно визначеною у точці
X3 і від'ємно визначеною у точці X4.
Необхідна умова локального екстремуму. Нехай функція f(X) задана на
Rn і д в і ч і диференційована у певному околі точки Y є R N. Якщо у цій точці f(X) має локальний мінімум (максимум), то матриця Гессе H(Y) є недодатно
(невід'ємно) визначеною.
Достатня умова екстремуму. Нехай функція f(X) задана на RN і має кри тичну точку Y, в якій усі другі частинні похідні існують і є неперервними. Як що матриця Гессе H(Y) у цій точці є додатно (від'ємно) визначеною, то Y є точ кою локального мінімуму (максимуму) f(X). Якщо H(Y) є невизначеною, то ек стремуму у точці Y немає. Зокрема, для функції f(X) = х^ + x 2xj - 27xj, матриця
Гессе якої розглядалася вище, точки X і та X2 не є точками екстремумів, точка
X3 є точкою локального мінімуму, а X4 —локального максимуму.
6.2. Чисельні методи оптимізації
Одновимірна оптимізація. Задача одновимірної оптимізації передбачає знаходження найменшого або найбільшого значення функції f(x) на заданому відрізку [а;Ь]. їх існування для будь-якої неперервної на [a;b] функції випли ває з відомої із курсу математичного аналізу теореми Вейєрштрасса.
Функція f(x) може досягати своїх найменшого та найбільшого значень на відрізку [a;b] у крайніх точках відрізка, а також у точках локальних мінімуму та максимуму.
Найпростішим методом пошуку екстремуму унімодальної функції f(x) є
метод сканування. У цьому разі весь відрізок поділяють на п (п = 10...20) рів них частин, отримуючи точки х І5 х 2, ..., хп_| такі, що:
Х1хо = Х2 хі = - = хі “ хі_і = х„ - Х„-1 =hj = ^ - А |
(6.14) |
п |
|
де х 0 = a,xn = b .
Після цього знаходимо точку х^, якій відповідає найменша із величин f(a ), f(x j) ,..., f ( x n_1), f(b ). Якщо xk ^ a,b , то внаслідок унімодальності f(x)
ми маємо зробити висновок, що точка екстремуму належить відрізку [xk_l5xk+1] .
У випадках, коли хк = а або хк = b , вона знаходиться, відповідно, на відрізках
[a,Xj] або [хпЧ,Ь].
Якщо довжина отриманого відрізка перевищує задану допустиму похибку є, то необхідно уточнити значення точки екстремуму. Для цього розбиваємо знайдений відрізок на п нових частин. Позначаємо їх крайні точки як х 0, х І5 ..., хпі знов знаходимо точку Х|., якій відповідає найменша із величин f(a ), f (х ,), ..., f (х n_|), f (b). Після цього визначаємо новий інтервал локаліза
ції точки екстремуму. Цю процедуру продовжуємо, доки не буде виконана умо ва xk+1 - хк_, < є . Після цього беремо точку Х|. за точку екстремуму. У разі, коли на всіх кроках ітерацій найменшим (найбільшим) постійно виявляється значен ня функції у точці а або точці Ь, точкою екстремуму після закінчення ітерацій-
ної процедури доцільно обрати саме цю точку.
Метод золотого перерізу дає можливість зменшити кількість обчислень без істотного ускладнення алгоритму. У цьому випадку на відрізку [а,Ь] оби рають дві внутрішні точки хі та х2, які задовольняють умови:
Ь - х , |
х , - а х 7- а Ь - х 7 |
||
-----b - a- |
= —---- |
; —---- = |
------ (6.15) |
b - Xj |
b - а |
х 2 - а |
Звідси маємо:
b - x L = b - x i = - 1 + V ? ^ o 6 18 |
( б і б ) |
||
Ь - а |
х 2 - а |
2 |
|
Цю величину називають золотим перерізом, що й дало назву методу.
Розв’язуючи рівняння (6.16), одержуємо:
х 1« а + -—— (b - a ); х 2 « а - - —— (b - a ) . |
(6.17) |
Далі ітераційну процедуру будують так. Спочатку знаходять значення функції у точках а, хІ5 х2, Ь. Потім вихідний відрізок звужують, відкидаючи точку а у разі, коли найменшим значенням є f(x2) чи f(b), або точку b в інших випадках. Потім за вказаною процедурою на новому відрізку знов визначають дві внутрішні точки. При цьому, завдяки властивостям золотого перерізу, одна з них збігатиметься з точкою хі або х2, отриманою на попередньому кроці іте рацій. Тому на кожному кроці, крім першого, необхідно розраховувати лише
одну нову точку та відповідне значення функції. Ітерації продовжують, доки не буде виконано умову A1'* < є , де А1'1 —довжина відрізка локалізації точки екст ремуму після і-го кроку. Як значення точки екстремуму можна взяти середину цього відрізка.
Багатовиміна оптимізація. Чисельні методи багатовимірної оптимізації використовують різноманітні ітераційні процедури. При цьому наступне на ближення отримують з попереднього за рекурентною формулою:
x k+1 = Хк + tk+1Sk, |
(6.18) |
де вектор S визначає напрям пошуку, а скалярний параметр t —відстань між то чками X та X у цьому напрямі.
У всіх методах необхідно задати умову зупинення ітерацій. Зазвичай ви користовують такі умови:
Xk+1- X k < Єі; |f(x k+1) - f ( x k)|< s2; |
d f(x k+1) |
(6.19) |
< s. |
||
|
<9х- |
|
де бі5 s2, s3 є достатньо малими додатними числами.
Методи, що розглядаються нижче, є методами мінімізації функції. Якщо потрібно знайти максимум, то необхідно внести відповідні зміни до алгоритмів,
або увести допоміжну функцію, мінімум якої збігається з максимумом вихідної функції (наприклад, помножити вихідну функцію на - 1), а потім використати наведені алгоритми.
Метод найшвидшого спуску (градієнтного спуску). Цей метод ґрунту ється на тому, що градієнт функції у точці має напрям, у якому функція найш видше зростає. Тому обирають Sk = -gradf ( x 'j , тобто формула (6.18) набуває
вигляду:
X k+1 = X k - tk+1 gradf ( x k). |
(6.20) |
Параметр tk+1 визначають із умови, що він відповідає мінімуму f(X) на промені Х к - tk+l gradf ( Xі j . Тоді його можна знайти, розглядаючи f(X) як фун кцію однієї змінної:
Ф(tk+1) = f (xk - tk+1gradf (X k)) |
(6.21) |
і записуючи умову мінімуму у вигляді:
% = 0 . |
(6.22) |
dt
Достатньо простим та універсальним є такий спосіб визначення tk+1, що ґрунтується на апроксимації похідної в (6 .22) її різницевим поданням з наступ ним застосуванням розкладу у ряд Тейлора по tk+1:
d<p(tl+1) |
f(x k- t k+1gradf(xl)) - f(x l) |
|
dtk+1 ” |
tk+1 |
” |
= -gradf(xk)-gradTf ( x k) + |
(6.23) |
+- 1k+1 gradf (Xk) • H(Xk) • gradT f (Xk) = 0.
2
Звідси маємо:
(l+1 = 2 gradf (xk) •gradT f (xk) grad f (X k) • H (X k) • gradT f (X k)
Якщо на певному кроці ітерацій не вдається знайти корінь рівняння
(6 .22), то як чергове значення параметра t можна взяти будь-яке число, для яко
го f(x k+1)< f(x k).
Метод покоординатного спуску (релаксації). У цьому разі як черговий напрям пошуку мінімуму обираємо напрям координатної вісі, вздовж якої фун кція у точці поточного наближення змінюється найшвидше. Для цього обчис-
d f(x k)
люємо компоненти вектора градієнта |
та обираємо номер і тієї з них, що |
|
<9х- |
є максимальною за модулем.
Нове наближення шукаємо на промені:
х к + tk+1x k = х к - tk+1 |
df(xk) |
(6.25) |
0,0,...,0,— ^— ^-,0,...,0 |
<9х-
Для знаходження tk+1 можна використати метод, аналогічний розглянуто му у методі найшвидшого спуску. Тоді отримаємо:
tk+i = _ 2(tf |
(6.26) |
a2f ( x k) ’ 1 |
ах; |
К ) ’ 5х- |
|
Метод Ньютона —Рафсона. При знаходженні критичних точок отриму
ємо систему рівнянь ф (х) = — -—- = 0 . Нехай f(X) є двічі диференційованою
5Х;
функцією з невиродженою матрицею Гессе. Тоді ср(Х) можна розкласти у ряд Тейлора в околі точки X :
cp(x) = cp(xk) + grad(p(xk)5x + 0(5x). |
(6.27) |
Приймаючи, що в одержуваній точтті X виконується умова ср(х) = 0,
отримаємо:
cp(xk) + gradcp(xk)5x = 0 |
(6.28) |
або
d f(x k) |
N |
5 2f ( X k ) |
(6.29) |
4 ^ |
+ І ^ |
У ( х , - х ^ ) = 0. |
Цю систему можна записати в матричній формі у вигляді:
H (x k)5x = -grad(xk). |
(6.30) |
При невиродженій матриці Гессе її розв'язком, відомим з курсу алгебри,
є:
5Х = -H _1( x k)- gradf (Х к). |
(6.31) |
Звідси для наступного наближення маємо:
Х к+1 = Х к - Н' 1( х к) • gradf ( х к) . |
(6.32) |
Зазначимо, що на відміну від методу найшвидшого спуску градієнт у фо рмулі (6.32) помножується на матрицю, а не на скаляр, тому напрям Х к+1 - Х к не збігається з напрямом антиградієнта.
Метод спряжених напрямів. У цьому методі черговий напрям пошуку
Sk обирається таким, щоб він був спряженим з усіма попередніми.
Два ненульових вектори Zi та Z2 називають спряженими стосовно дода тно визначеної симетричної матриці А, якщо скалярний добуток ( AZl'jZ 2 = 0.
Систему відмінних від нуля векторів Z|. (k = 1, 2, К) називають взаємно спряженою стосовно матриці А, якщо (AZ^ ^Z- = 0 при 0 < і, j < К , і ^ j .
У методі спряжених напрямів обирають:
S °= -g ra d f(x °); v ’
Sk= -grad f(x k) + pk“1Sk_1.
Параметр
і _ H^S"-1)' -gradf(xk)
Pk_1 = |
V / . .Гт |
-чк-1 |
7 |
|
4 |
|
|
|
|
-Sk~l |
|
(6.33)
(6.34)
забезпечує спряженість напрямів Sk та Sk 1 стосовно додатно визначеної симет ричної матриці Н порядку N х N . Крок у напрямі Sk для одержання наступного наближення розраховують за формулою:
t ^ - ^ d f ^ H s ; ) 1 . |
(6.35) |
sk-H-(sk)
Як правило, за напрями, що спрягаються, обирають градієнти функції у точках чергових наближень. Тоді замість формул (6.34, 6.35) застосовують ви рази:
. |
l2 |
|
a f ( x k) |
, |
t41 |
|
Pk“! = J |
gradf(xk) |
tk+1 = |
^k+i |
'(s |
) |
(6.36) |
1 |
------ a |
^ -------- |
. |
|||
hdf(xM) |
|
?**(х м |
|
|||
|
|
|
a(t“ |
) |
^ ’ |
|
Відповідний метод називають методом спряжених градієнтів.
6.3.Задача лінійного програмування
Узагальному вигляді задачу лінійного програмування (ЗЛП) формулю
ють так: знайти значення вектора керованих змінних X = (xj,x 2,...,xN), що від повідає екстремальному значенню цільової функції
f ( X )= сіхі + с2х 2 +... + cNx i |
(6.37) |
і задовольняє систему М лінійних обмежень: |
|
а п х і + а і2х 2 + ... + a1NxN |
5 —)bl5 |
|
(6.38) |
|
'м- |
Цю задачу зазвичай записують у канонічному вигляді: знайти не від’ємні значення змінних х; (і = 1,2,..., N ), за яких цільова функція (6.37) має мінімум або максимум, і які задовольняють систему лінійних обмежень: