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

3. Приклади задач динамічного програмування

Задача про наймання працівників.

Приступимося до розгляду питань застосування методів динамічного програмування в конкретних економіко-математичних моделях. Окремо відзначимо, що дані обчислювальні схеми, загалом кажучи, досить часто використовуються для рішення деяких задач. Це, насамперед, задача про ранець, задача про найкоротший шлях, задачі транспортного типу.

Одним з найважливіших класів задач, для яких застосування динамічного програмування виявляється плідним, є задачі послідовного прийняття рішень. Їхньою особливістю є те, що шукані змінні х1, x2, .., хk ,... повинні визначатися в строгій тимчасовій послідовності й не повинні мінятися місцями. Як приклад опишемо так звану задачу про наймання працівників (задачу про використання робочої сили).

У даній задачі розглядається деякий економічний об'єкт (фірма, магазин, завод і т.п.), що функціонує протягом кінцевого числа періодів, позначуваних номерами k (k ∊ l:n). Кожний період k характеризується нормативною потребою в певній кількості однотипних працівників mk. Той же обсяг робіт може бути виконаний іншою кількістю співробітників ξk, що, однак, тягне додаткові витрати або за рахунок нераціонального використання робочої сили, або через підвищення оплати за інтенсивну працю. Розміри цих додаткових витрат описуються функціями gk k - mk), де (ξk - mk) - відхилення фактичної чисельності працюючих ξk , від планово необхідної mk , причому gk (0)=0. Управлінське рішення на кроці k полягає у виборі величини зміни числа співробітників хkZ, що однозначно визначає кількість працюючих протягом наступного періоду: ξk+1 = ξk+хk. Витрати по зміні кількості працівників (найманню й звільненню) при переході від періоду k до періоду (k+1) задаються функцією uk (хk) , де також uk (0)=0. Тоді сумарні витрати, викликані прийнятим на кроці k рішенням, характеризуються значенням функції

План задачі (стратегія керування) х = (x1, ..., хn-1, 0) полягає у виборі поетапних змін кількості працівників, а його сумарна ефективність описується адитивною функцією

На основі сформульованої моделі ставиться задача мінімізації цільової функції (витрат) (5.15). Додамо, що постановка задачі не буде коректною, якщо не задати початкову умову на кількість працівників.

Існують дві модифікації даної задачі, обумовлені типом початкової умови: у першому випадку задається вихідне значення на першому етапі m1, а в другому - необхідну кількість в n-му періоді mn .

Розглянемо перший випадок. Оскільки фіксованим є початкова кількість працівників і, навпроти, нічого не відомо про те, якої ця кількість повинне бути на останньому етапі, то розгляд процесу прийняття рішень зручніше почати з кінця. Оптимальне керування на останньому етапі п за умовою дорівнюють х*n = n(ξ)=0, тому мінімальні витрати повністю визначаються кількістю працівників в останньому періоді:

Для інших попередніх кроків основне рекурентне співвідношення прийме вид

де Λk(ξ) - мінімальні витрати з k-го по п-й періоди, у припущенні, що кількість працівників в k-й період дорівнює ξ. Точки л(ξ), у яких досягаються мінімуми (5.17), визначають умовне оптимальне керування на кожному кроці.

Послідовно визначаючи л(ξ) і дійшовши до етапу 1, ми зможемо знайти безумовне оптимальне керування x1* з тої умови, що на початок першого періоду чисельність працівників повинна становити ξ1* = m1 , a саме

Інші компоненти оптимального плану хk* і стану ξk*, що утворять оптимальну траєкторію, послідовно перебувають за рекурентними формулами

після чого легко обчислити оптимальне значення цільової функції (5.15).

Зупинимося тепер на другому випадку, коли задане фінальний стан керованого об'єкта, тобто бажана кількість працівників на останньому періоді ξn*= mn. Очевидно, що в даній ситуації варто надійти з точністю «до навпаки» і розглянути процес прийняття рішень від початку до кінця. Найкраще умовне керування на першому кроці 1(ξ) буде знайдено в процесі обчислення функції

де стан ξ ≥0 є можливою кількістю працівників на початковому кроці. Відповідно, основне рекурентне співвідношення виразить мінімальні витрати аж до k-го періоду через такі для попередніх періодів (з першого по ( k-1)-й) за умови, що чисельність працівників в k-й період буде дорівнює ξ:

Будуть знайдені також функції k(ξ), k∊2:n, що визначають умовні оптимальні керування. На останньому періоді, у силу початкової умови, ξn*= mn. Звідси шляхом послідовного рішення рекурентних рівнянь можуть бути знайдені оптимальні чисельності працівників ξ*k і безумовні оптимальні керування:

На закінчення, як і в першому випадку, підраховується мінімальна величина витрат.

Узагальнюючи викладені схеми рішення, можна дійти висновку:

При використанні алгоритмів динамічного програмування, якщо задано початковий стан керованої системи, то задача вирішується у зворотному напрямку, а якщо кінцеве, тo - у прямому. Нарешті, якщо задані як початкове, так і кінцеве стану, то задача суттєво ускладнюється. (Як компроміс у цьому випадку можна відмовитися від оптимізації на першому або останньому етапі.)

Динамічні задачі керування запасами.

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

При математичній формалізації процесів керування запасами дуже часто доводиться використовувати стрибкоподібні, недиференційовані й кусково-безперервні функції. Як правило, це обумовлюється необхідністю обліку ефектів концентрації, фіксованих витрат і плати за замовлення. У зв'язку із цим одержувані задачі із трудом піддаються аналітичному вирішенню класичними методами, однак можуть бути успішно вирішені за допомогою апарата динамічного програмування.

Розглянемо досить типову задачу, що виникає в процесі планування діяльності системи постачання, - так звану динамічну задачу керування запасами.

Нехай є деяка система постачання (склад, оптова база й т.п.), що планує свою роботу на п періодів. Її діяльність зводиться до забезпечення попиту кінцевих споживачів на деякий продукт, для чого вона здійснює замовлення виробникові даного продукту. Попит клієнтів (кінцевих споживачів) у даній моделі розглядається як деяка інтегрована величина, що приймає задані значення для кожного з періодів, і він повинен завжди задовольнятися (тобто не допускаються заборгованості й відмови). Також передбачається, що замовлення, що посилається виробникові, задовольняється їм повністю, і часом між замовленням і його виконанням можна зневажити (тобто розглядається система з миттєвим виконанням замовлення). Уведемо позначення:

yk - остача запасу після ( k-1)-го періоду;

dk - заздалегідь відомий сумарний попит в k-м періоді;

хk - замовлення (поставка від виробника) в k-м періоді;

сk (хk) -витрати на виконання замовлення об'єму xk в k-м періоді;

skk) - витрати на зберігання запасу об'єму ξk в k-м періоді.

Після одержання поставки й задоволення попиту об'єм товару, що підлягає зберіганню в період k, складе ξk = yk + хk - dk.

Розглядаючи параметр yk , можна записати співвідношення:

Витрати на одержання й зберігання товару в період k описуються функцією

Планом задачі можна вважати вектор х = (х1, х2, ..., хn), компонентами якого є послідовні замовлення протягом розглянутого проміжку часу. Співвідношення між запасами (5.24) у сполученні з деякою початковою умовою зв'язує стану системи з обраним планом і дозволяє виразити сумарні витрати за всі п періодів функціонування керованої системи постачання у формі адитивної цільової функції:

В рамках сформульованої моделі представляється задача знаходження послідовності оптимальних керувань (замовлень) x*k і пов'язаних з ними оптимальних станів (запасів) ξ*k, які перетворюють у мінімум (5.25). Як початкова умова використовуємо вимогу про збереження після завершення керування заданої кількості товару yn+1 , а саме

При вирішенні поставленої задачі методом динамічного програмування як функцію стану керованої системи Λk(ξ) логічно взяти мінімальний об'єм витрат, що виникають за перші k періодів за умови, що в k-й період є запас ξ . Тоді можна записати основне рекурентне співвідношення

оскільки

Система рекурентних співвідношень (5.27)-(5.28) дозволяє знайти послідовність функцій стану Λ1(ξ), Λ2(ξ), …, Λn(ξ) і умовних оптимальних керувань 1(ξ), 2(ξ), …, n(ξ)... На n-м кроці за допомогою початкової умови (5.26) можна визначити х*n = n (yn+1). Інші значення оптимальних керувань x*k визначаються по формулі:

Особливий інтерес представляє окремий випадок задачі (5.24)-(5.25), при якому передбачається, що функції витрат на поповнення запасу сk(хk) є вгнутими по хk, а функції витрат на зберігання skk) є лінійними щодо об'єму збереженого запасу, тобто skk) = skξk . Паралельно помітимо, що обидві передумови є досить реалістичними.

Позначимо функцію витрат протягом k-ro періоду через

або, що те ж саме,

У силу зроблених припущень всі функції витрат fk (xk , yk+1) є вгнутими (як суми вгнутої й лінійної функцій). Дана властивість значно спрощує процес рішення, тому що для пошуку мінімуму вгнутих функцій fk (xk , yk+1) досить розглянути тільки дві крайні точки множини, на якому відшукується мінімум. З урахуванням уведеного позначення задачу (5.24)-(5.25) можна записати у вигляді:

при умовах

Розглянемо процедуру вирішення (5.32)-(5.33). Шукається мінімум суми ввігнутих функцій fk(xk , yk+1), тому рішення буде досягатися на одній із крайніх точок множини, обумовленої умовами (5.33). Загальне число змінних xk і yk у системі (5.33) дорівнює 2п. Однак, зважаючи на те, що в ній тільки п рівнянь, в оптимальному плані буде не більше п ненульових компонентів, причому для кожного періоду k значення xk і yk не можуть дорівнювати нулю одночасно (у силу необхідності задоволення попиту або за рахунок замовлення, або за рахунок запасу). Формально це твердження можна представити у вигляді умови нежорсткісті, що доповнює:

де

З погляду змістовної інтерпретації умови (5.34)-(5.35) означають, що при оптимальному керуванні замовлення постачальника на нову партію не повинно надходити, якщо на початку періоду є ненульовий запас, або розмір замовлення повинен дорівнювати величині попиту за ціле число періодів. Звідси треба, що запас на кінець останнього періоду повинен дорівнювати нулю: в*n+1=0. Останнє дозволяє вирішувати задачу в прямому напрямку, застосовуючи рекурентне співвідношення

де ξ = уk+1= хk + уk - dk .

З огляду на (5.34)-(5.35) і вгнутість fk (xk, ξ), є те, що мінімум (5.36) досягається в одній із крайніх точок xk =0 або xk = ξ + dk тому

тоді для попереднього періоду функція стани може бути виражена як

на oснові чого в загальному виді одержуємо модифіковану форму для рекурентного співвідношення

При подальших припущеннях, що конкретизують, про вид функцій fk (xk , уk+1) можна одержати ще більш компактні форми для рекурентних співвідношень. Однак ці питання носять досить приватний характер, і ми їх розглядати не будемо. Відзначимо лише, що наведені в даному пункті перетворення непогано ілюструють загальні підходи, застосовувані в динамічному програмуванні, а також ті властивості задач, які відкривають можливості, для ефективного й плідного використання відповідних методів.

Контрольні запитання.

1. Для вирішення яких задач призначений метод динамічного програмування?

2. У чому є суть методу динамічного програмування?

3. Яким умовам повинна задовольняти задача, щоб для її вирішення міг бути застосований алгоритм динамічного програмування?

4. Які труднощі пов'язані з обчислювальними алгоритмами динамічного програмування?

5. Що визначає напрямок рішення задачі в алгоритмах динамічного програмування?

6. Сформулюйте математичну модель для задачі про найм працівників.

7. Випишіть основне рекурентне співвідношення, використовуване при вирішенні задачі про найм працівників.

8. З якими особливостями задач керування запасами зв'язане застосування при їхньому рішенні апарата динамічного програмування?

9. Який вид має цільова функція в динамічній задачі керування запасами?

10. Випишіть основне рекурентне співвідношення, використовуване при вирішенні динамічної задачі керування запасами.