- •Лабораторний практикум
- •Краматорськ 2009
- •Загальні вказівки
- •Методи одновимірної оптимізації. Знаходження глобального екстремуму функції методом послідовного рівномірного перебору (сканування)
- •Знаходження екстремуму унімодальної функції
- •Знаходження екстремуму функції методом послідовного рівномірного перебору з уточненням
- •Пошук всіх екстремумів функції
- •Завдання до лабораторної роботи
- •Метод дихотомії
- •Метод золотого перетину
- •Завдання до лабораторної роботи
- •Методика оптимізації функції методом найшвидшого спуску
- •Приклад мінімізації функції методом найшвидшого спуску
- •Завдання до лабораторної роботи
- •Загальні вказівки
- •Обчислення градієнту функції на еом
- •Алгоритм оптимізації методом найшвидшого спуску
- •Програмна реалізація методу найшвидшого спуску
- •Завдання до лабораторної роботи
- •Лабораторна робота 5
- •Багатовимірних задач оптимізації
- •Порядок виконання роботи
- •Загальні вказівки
- •Алгоритм методу прямого пошуку
- •Програмна реалізація методу прямого пошуку
- •Завдання до лабораторної роботи
- •Лабораторна робота 6
- •Багатовимірних задач оптимізації
- •Порядок виконання роботи
- •Загальні вказівки
- •Алгоритм методу випадкового пошуку з перерахунком
- •Програмна реалізації методу випадкового пошуку
- •Завдання до лабораторної роботи
- •Лабораторна робота 7
- •Програмування графічним методом
- •Порядок виконання роботи
- •Загальні вказівки
- •Методика розв’язання задачі лінійного програмування графічним методом
- •Приклади розв’язання задач лінійного програмування графічним методом
- •Завдання до лабораторної роботи
- •Продовження таблиці 15
- •Лабораторна робота 8
- •З використанням симплексних таблиць
- •Порядок виконання роботи
- •Загальні вказівки
- •Алгоритм симплексного методу
- •Приклад розв’язання лп-задачі симплексним методом
- •Завдання до лабораторної роботи
- •Лабораторна робота 9
- •Порядок виконання роботи
- •Загальні вказівки
- •Опис роботи програми simc (intsim)
- •Приклад моделювання та розв’язку лп-задачі за допомогою програми simc
- •Індивідуальні завдання до лабораторної роботи
- •Лабораторна робота 10 моделювання транспортних задач та їх
- •Порядок виконання роботи
- •Загальні вказівки
- •Побудова початкового(вихідного) опорного плану
- •Алгоритм методу потенціалів
- •Приклад моделювання та розв’язку т-задачі методом потенціалів
- •Завдання до лабораторної роботи
- •Лабораторна робота 11
- •Лабораторна робота 12
- •Загальні вказівки
- •Загальна методика розв’язання задачі методом динамічного програмування
- •Методика розв’язання задачі оптимального розподілу коштів на розширення виробництва методом динамічного програмування
- •Приклад розв’язання задачі оптимального розподілу коштів методом динамічного програмування
- •Завдання до лабораторної роботи
- •Продовження таблиці 36
- •Список рекомендованої літератури
- •Додаток а завдання до лабораторної роботи 9 Задача 1
- •Задача 2
- •Задача 3
- •Задача 4
- •Задача 5
- •Задача 6
- •Задача 7
- •Задача 8
- •Задача 9
- •Задача 10
- •Задача 11
- •Задача 12
- •Задача 13
- •Задача 14
- •Задача 15
- •Задача 16
- •Задача 17
- •Задача 18
- •Задача 19
- •Задача 20
- •Задача 21
- •Задача 22
- •Задача 23
- •Задача 24
- •Задача 25
- •84313, М. Краматорськ, вул. Шкадінова, 72.
Загальні вказівки
Програма оптимізації функції багатьох змінних градієнтним методом включає: основну програму; підпрограму-функцію 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*).
