- •Лабораторний практикум
- •Краматорськ 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.
Загальні вказівки
Математично задачу пошуку оптимального значення Х* вектора Х, який доставляє екстремум функції f(Х), записують в такому вигляді:
f(Х*)
=
f(Х),
де символ ext може означати максимум (max) або мінімум (min). Задача пошуку максимуму будь-якої функції f(Х) легко зводиться до пошуку мінімуму заміною функції f(Х) на функцію -f(Х). Тому, не звужуючи узагальнення, будемо говорити тільки про мінімізацію функції f(Х) і задачу пошуку оптимального значення вектора Х*, який доставляє мінімум функції f(Х), можна записати так:
f(Х*)
=
f(Х).
Методи одновимірної оптимізації. Знаходження глобального екстремуму функції методом послідовного рівномірного перебору (сканування)
Покажемо застосування методу сканування на наступному прикладі.
Знайти найменше значення функції
y=a exp(–bx) sin( x+ )
і значення аргументу, при якому воно отримане, в інтервалі L = [x0, xk] зміни x з кроком h.
Пошук найменшого значення функції y=f(x) треба виконати в циклі, в якому будемо обчислювати поточне значення функції і порівнювати його з найменшим із усіх попередніх її значень. Якщо поточне значення функції виявиться менше найменшого з попередніх, то його будемо вважати новим найменшим значенням. Інакше найменше значення залишиться попереднім. Пошук найменшого значення функції можна описати математичною формулою так:
(1)
Після виконання першого циклу обчислюємо y1 і порівнюємо з початковим значенням ymin. За початкове значення ymin вибирають довільне дуже велике число, наприклад 1020, щоб напевне виконалася умова y1<ymin. Після порівняння нове ymin прийме значення y1. Тоді після виконання другого циклу обчислення буде знайдено найменше з перших двох значень функції y1, y2. Цей процес повторюють послідовно для нових значень xi , збільшуючи в кожному циклі аргумент на величину h, і отримують значення ymin, яке буде найменшим з усіх обчислених значень функції.
Схема алгоритму розв’язання цієї задачі представлена на рисунку 1. Блок 3 задає перед циклом початкове значення ymin=1020. Блок 5 обчислює поточне значення функції, блоки 6 і 7 реалізують формулу (1).
Знаходження екстремуму унімодальної функції
З теорії відомо, якщо деяка функція унімодальна (опукла чи увігнута), то вона має один екстремум: мінімум або максимум. Тоді затрати машинного часу для визначення екстремуму функції можна зменшити, використавши інший алгоритм. Розглянемо такий приклад.
Знайти екстремальні значення функції
y=|a|exp(bx-cx2)
і аргументу на інтервалі L = [x0, xk] зміни x з кроком h.
З теорії відомо, що така функція має один екстремум-максимум. Тому, обчислюючи її значення при наближенні до максимуму y*, завжди будемо отримувати кожне наступне значення функції, більше найбільшого з усіх попередніх (рисунок 2), тобто yi>ymax, де ymax= max(y1, y2, …, yi…)
Після досягнення максимуму y* функція почне зменшуватися, отже, умову yi ymax можна застосувати для виходу з циклу. Цей процес можна описати формулою:
(2)
Алгоритм у цьому випадку буде відрізнятися від показаного на рис. 1 тим, що якщо умова yi > ymax не виконується, то перехід здійснюється не до останнього оператора циклу (блок4), а до оператора, що стоїть за циклом (блок 8). При цьому кількість обчислень функції можна визначити за формулою:
n = [(xk– x0)/h] +1,
де вираз в квадратних дужках - ціла частина числа.
Слід зазначити, що вихід з циклу може відбутися, коли цикл буде виконано для всіх значень аргументу x. У цьому випадку максимальне значення функції досягається на останньому кроці при значенні x*= xk.
