Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MMIO Laboratornye_Raboty.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.54 Mб
Скачать

Загальні вказівки

Програма оптимізації функції багатьох змінних градієнтним методом включає: основну програму; підпрограму-функцію MODEL, у якій обчислюється значення критерію ефективності f(X); процедуру GRAD, у ній обчислюється градієнт функції, що мінімізується; процедуру OPGRAD, що здійснює мінімізацію.

Обчислення градієнту функції на еом

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

(14)

де fi+ = f( x1, …, xi-1, xi + ai, xi+1, …, xn );

f = f( x1, …, xi-1, xi - ai, xi+1, …, xn );

ai – досить мала додатна константа, що застосована для приблизного обчислення градієнта.

Реалізація цього алгоритму представлена у вигляді процедури GRAD.

PROCEDURE GRAD(N:INTEGER;E:REAL;X:artype;

var G:artype;F:FUNOP);

VAR I :INTEGER; FP,FO :REAL;

BEGIN

FOR I:=1 TO N DO

BEGIN

X[I]:=X[I]+E; FP:=F(X);

X[I]:=X[I]-2*E; FO:=F(X);

X[I]:=X[I]+E;

G[I]:=(FP-FO)/2/E;

END;

END;

У заголовок цієї процедури винесені такі формальні параметри:

N – значення вимірності вектора параметрів, що оптимізуються X=(x1,...,xn);

E - додатна константа, яка входить в формулу (14) для приблизного обчислення градієнта;

X - вхідний масив розмірності N типу ARTYPE, який містить значення xi вектора параметрів, що оптимізуються точки Х, в якій обчислюється градієнт;

G - вихідний масив розмірності N типу ARTYPE – вектор-градієнт функції f = ( 1, 2,...,n);

F - цільова функція, що оптимізується типу FUNOP.

Алгоритм оптимізації методом найшвидшого спуску

Обчислювальний алгоритм для i-го компонента вектора параметрів, що оптимізуються, має вигляд:

xik+1 = xik - kif(Xk) / ||f(Xk)||, (15)

де k – величина оптимального кроку k-ої ітерації, визначається за допомогою одновимірної мінімізації цільової функції уздовж антиградієнтного напрямку; компоненти if(Xk) вектора-градієнта обчислюються в процедурі GRAD;

||f(Xk)|| = - норма вектор-градієнта.

Алгоритм методу передбачає наступні етапи.

Етап 1. Задати початкову точку X0, кількість ітерацій k покласти рівною нулю.

Етап 2. Обчислити градієнт функції f(Xk).

Етап 3. Знайти одним з методів одновимірної мінімізації оптимальний крок k уздовж антиградієнтного напрямку. Наприклад, у підпрограмі OPGRAD оптимальний крок k визначається в результаті розв’язання задачі одновимірної мінімізації функції f(X) по уздовж антиградієнтного напрямку методом сканування з уточненням.

Етап 4. Перевірити умови припинення пошуку. Пошук мінімуму припиняється при виконанні однієї з умов:

1) ||f(Xk)|| < min;

2) k < min;

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

Якщо хоча б одна з умов припинення пошуку виконуються, то перейти на етап 7, інакше – на етап 5.

Етап 5. Обчислити координати нової точки

Xk+1=Xk-kf(k)/ ||f(Xk)||.

Етап 6. Покласти k=k+1 і перейти на етап 2.

Етап 7. Покласти X*=Xk, f*=f(X*).

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