- •6.1. Основні властивості задач динамічного програмування та недоліки методу
- •6.2. Загальна математична модель
- •6.3. Розв’язування дискретних задач
- •Рекурентне співвідношення
- •6.3.2. Таблиця оптимальних розв’язків
- •6.3.3. Приклад
- •6.4. Випадок двосторонніх обмежень на змінні
- •6.5. Задачі з багатьма видами ресурсів
- •6.6. Неперервні моделі
- •6.7. Задача управління запасами
- •Висновки
- •Контрольні запитання
- •7.1. Класифікація задач дискретного програмування
- •7.2. Лінійні цілочислові задачі
- •7.2.1. Метод відтинання. Додаткове обмеження
- •7.2.2. Перший алгоритм Гоморі
- •Приклад
- •7.3. Задачі з бульовими змінними
- •7.3.1. Задача про призначення
- •7.3.2. Угорський метод
- •7.3.3. Приклад
- •7.3.4. Задача про кільцевий маршрут
- •Метод розгалужень і меж
- •Початкова матриця
- •7.3.6. Приклад
- •Висновки
- •Контрольні запитання
6.2. Загальна математична модель
Розглянемо загальну постановку задачі повного розподілу одного типу ресурсів у термінах динамічного програмування.
Нехай
задана загальна кількість ресурсів
,
яку треба розподілити між п
відтинками часу протягом заданого
періоду часу. Міра використання ресурсів
кожним
-м
відтинком часу задана функціями
ефективності кожного окремого кроку.
Треба знайти варіант розподілу ресурсів
протягом заданого періоду часу так, щоб
загальна цільова функція використання
ресурсів
досягла екстремального значення.
Якщо
позначити через
кількість розподілених ресурсів для
-го
відтинку часу, то обмеження задачі, яке
відображує повний розподіл ресурсів
між п
відтинками
часу матиме вигляд
.
Цільова функція цього процесу складається з мір використання ресурсів на всіх п відтинках часу:
де
– функція ефективності використання
ресурсів на
-му
кроці; ця функція може бути будь-якого
виду (лінійна, цілочислова, неформалізована
тощо), крім того, на різних кроках
оптимізації її можна задавати по-різному.
Загальний вид математичної моделі дискретної задачі розподілу ресурсів у термінах динамічного програмування такий:
знайти цільову функцію
при обмеженнях
де всі – дискретні величини або змінюються із заданим кроком.
Розв’язування такої задачі методом динамічного програмування виконується в два етапи:
Е
тап
умовної оптимізації, на якому знаходяться
всі допустимі стани об’єкта на кожному
кроці оптимізації; після проходження
усіх кроків оптимізації і повного
розподілу заданих ресурсів складається
таблиця оптимальних розв’язків;
2. Етап безумовної оптимізації, на
якому за таблицею оптимальних
розв’язків
знаходяться значення
усіх
змінних
та цільової функції
оптимального
варіанта розв’язку.
Геометричне
розв’язування за-
Рис.6.2 дачі методом динамічного програ-
мування можна зобразити сукупностями траєкторій, які показують ефективність того чи іншого варіанта розв’язку задачі. Причому весь відтинок часу зобразиться сіткою можливих станів об’єкта задачі. З цієї множини траєкторій вибирається така, яка відповідає екстремальному значенню .
Процес розв’язування задачі методом динамічного програмування ілюструє рис. 6.2.
6.3. Розв’язування дискретних задач
Рекурентне співвідношення
Знайдемо вид функціонального рівняння, за допомогою якого треба вести розв’язування задачі.
Нехай задана така математична модель задачі:
знайти
при обмеженнях
та
умові
і цілочисловості змінних .
На
кожному кроці оптимізації розглядаються
всі допустимі значення поточних ресурсів
у
діапазоні
,
а потім у діапазоні
– усі допустимі значення змінних із
заданим кроком їх зміни (часто – це
точність розв’язування
за
умовами задачі). Якщо є додаткове
обмеження на змінні
,
то діапазон
корегується цими доповненнями.
При
такому „двоступовому” задані діапазонів
на кожному кроці оптимізації знаходяться
дві величини від поточного стану
:
значення
та ефективність використання ресурсів
.
Кожний процес планування має такий крок розрахунку, на якому загальна мета збігається з метою цього кроку оптимізації. Таким кроком є останній п-й крок. На ньому знаходиться такий розв’язок, який дає загальну ефективність згідно з принципом оптимальності, тобто з умов останнього кроку без подальшого наслідку.
Тому
проаналізуємо розв’язування задачі з
останнього кроку оптимізації. Згідно
з можливими значеннями
,
де
,
знаходиться множина значень
.
Тоді для решти змінних
,
тобто для
обмеження на ресурси має вигляд
,
де
– поточний залишок ресурсів.
Цільова
функція для змінних
має вигляд
.
Ця
величина залежить від залишків ресурсів
,
тому можна
записати
.
Тоді загальний вид цільової функції буде такий
,
(6.1)
тобто
з множини
значень
та
для всіх
можливих
вибирається сумарне екстремальне
значення
цільової функції.
Отже,
для всіх можливих значень змінної
у заданому діапазоні
знаходиться оптимум
за умовами, що
всі значення
для залишків ресурсів (
)
відомі. У цьому випадку розв’язування
зводиться до пошуку тільки однієї
змінної
на п-му
кроці.
На жаль, на п-му кроці невідома друга складова (6.1). Тому аналогічно розглядається передостанній - й крок, але для залишків ресурсів. Тоді
,
де
змінна
задається у діапазоні
,
а залишки ресурсів для (п-2)
кроків дорівнює
.
За аналогією, для будь-якого -го кроку цільова функція має вигляд
а
для першого кроку
.
Таким чином, послідовно переходячи від останнього до першого кроку процес знаходження загальної цільової функції має вигляд:
Оскільки
друга складова
невідома, то знаходження оптимального
розв’язку задачі практично здійснюється
так.
Із
заданим дискретним кроком
для усіх значень
знаходяться величини першого кроку:
(6.2)
На другому кроці розрахунок ведеться за формулою
,
де
–
величина попереднього кроку, яка вже
знайдена за (6.2).
За
аналогією для будь-якого
-го
кроку
,
а на останньому кроці
.
(6.3)
Після
проходження усіх кроків оптимізації
та повного розподілу ресурсів, тобто
при
оптимальне значення цільової функції
дорівнює
.
Рівняння
(6.3) називається рекурентним співвідношенням,
або
функціональним
рівнянням, за яким ведеться розрахунок
оптимального розв’язку.
Рекурентною (від латинського слова
recurreus
–
повертаючий) називається будь-яка
формула, за допомогою якої можна записати
п-й
член послідовності через попередній.
За таким процесом розв’язування
достатньо знайти початкове значення
,
щоб решту
величин
знайти однозначно.
Перевага рекурентного підходу – його пристосування до розрахунків на ЕОМ, тобто процес розв’язування є ітераційним.
У задачах динамічного програмування цільову функцію можна виразити не сумою виграшів на усіх кроках оптимізації, а у вигляді добутку, тобто
.
Така цільова функція має властивість мультиплікативності.
Задачі,
які мають таку цільову функцію, можна
звести до адитивного виду. Для цього
треба взяти логарифм
.
Але в цьому немає потреби, тому що задачу
з мультиплікативною цільовою функцією
можна записати таким рекурентним
співвідношенням:
.
При цьому процедура розрахунків і всі положення є такими самими, як і при адитивній цільовій функції.
Треба зауважити, що мультиплікативна цільова функція, взагалі кажучи, зустрічається у задачах попиту продукції, задачах підвищення якості товарів, задачах про черги та інші, тобто задачі, які мають імовірний характер.
