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

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

Математично задачу пошуку оптимального значення Х* вектора Х, який доставляє екстремум функції 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.

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