Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SHepelenko_O.V.,_Skripnik_S.V._Ekonom.-matemat....doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
4.76 Mб
Скачать

3.3. Динамічне програмування

Всі економічні процеси та явища є динамічними, оскільки вони функціонують і розвиваються не тільки у просторі, але і у часі. Для народного господарства в цілому, його галузей, регіонів чи окремих підприємств з метою їх стабільного функціонування та розвитку необхідно розробляти стратегічні та тактичні плани. Стратегічні плани містять параметри діяльності об’єктів, які характеризують їх віддалене майбутнє. Отже, вони мають розроблятися на основі динамічних моделей, для знаходження розв’язків яких застосовуються методи динамічного програмування.

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

Економічний процес називають керованим процесом, якщо існує можливість впливу на його розвиток.

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

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

До задач динамічного програмування належать такі, що пов’язані з оптимальним розподілом капіталовкладень, розподілом продукції між різними регіонами, визначенням найкоротшого шляху завезення товарів споживачам, задачі щодо заміни обладнання, оптимального управління запасами тощо.

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

Слід зазначити, що оптимальні плани стосовно окремих відрізків планового періоду не завжди є оптимальними для всього інтервалу планування. Наприклад, недостатньо визначити оптимальний план виробництва на один місяць і орієнтуватися на нього протягом тривалого часу. Досить ймовірно, що в наступні місяці виробництво за тим самим планом може стати неоптимальним, оскільки в процесі його розробки можливості дальшого розвитку не враховувались. Доцільніше визначати оптимальні плани на кожен місяць з урахуванням змін у попередніх періодах. Лише тоді річний оптимальний план виробництва буде сумарним результатом оптимальних рішень, що приймалися для кожного місяця.

Етапи процесу розробки алгоритмів динамічного програмування

1. Опис структури оптимального розв’язку.

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

3. Обчислення значення, що відповідає оптимальному розв’язку за допомогою методу висхідного аналізу.

4. Отримання оптимального розв’язку на основі інформації, яку отримано на попередніх кроках.

Етапи 1-3 складають основу методу динамічного програмування. Етап 4 можна пропустити, якщо знайти значення, що відповідає оптимальному розв’язку. На 4 кроці інколи використовується додаткова інформація, що отримана із попереднього, щоб полегшити процес побудови оптимального розв’язку.

Задачі динамічного програмування є багатоетапними. В динамічному програмування розв’язують задачу, розбиваючи її на окремі підзадачі. Підзадачі, на які розбивають задачу динамічного програмування і які розв’язують однаковим алгоритм, є залежними, їхня залежність полягає в тому, що остаточний розв’язок однієї підзадачі є вхідною інформацією для розв’язання наступної.

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

Якщо моделі лінійного програмування можна використовувати в економіці при прийнятті масштабних планових рішень у складних ситуаціях, то моделі динамічного програмування використовують при розв’язанні менш глобальних завдань. Моделі динамічного програмування цінні тим, що дозволяють за допомогою стандартного підходу приймати мікроекономічні рішення. І якщо кожне взяте окремо рішення не має великого значення, то в сукупності ці рішення можуть мати великий вплив на загальний прибуток.

Загальна постановка задачі динамічного програмування.

Розглянемо деякий керований процес. У результаті управління система (об’єкт управління) протягом деякого часу переходить із початкового стану до нового стану . Із процесом зміни стану системи пов’язана зміна деякого числового критерію – ефективності. Необхідно організувати процес таким чином, щоб отримана ефективність була максимальною.

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

Позначимо через управління на k-му кроці , тобто виберемо траєкторію системи , що переводить систему зі стану в стан . Сукупність станів, у які може переходити система, називають областю можливих станів.

Нехай – управління, за допомогою якого система переходить зі стану в стан . Позначивши через – стан системи після k-го кроку, одержуємо послідовність станів , , , … , , , … , , , яка геометрично показана на рисунку 3.3.

Рисунок 3.3 – Область можливих станів системи.

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

У задачі динамічного програмування знаходиться таке управління всією операцією, що максимізує її загальну ефективність

, (3.3.1)

де – ефективність на j-му кроці .

Оптимальним розв’язком цієї задачі буде управління , що складається із сукупності покрокових управлінь , які забезпечують максимальне значення ефективності

. (3.3.2)

Динамічне програмування представляє собою поетапне планування багатокрокового процесу, на кожному етапі якого оптимізується тільки один крок. Рішення, відповідно до якого система переходить із поточного стану в наступний, вибирається з урахуванням його майбутніх наслідків і не завжди дає найбільший ефект на даному етапі. На останньому п-му етапі приймається рішення, що не залежить від майбутніх наслідків, і забезпечує максимальний ефект. Тому оптимізація методом динамічного програмування починається з кінця, тобто спочатку планується п-й крок. Використовуючи відому інформацію про закінчення передостаннього кроку, на підставі різних гіпотез щодо закінчення передостаннього кроку, вибирають управління на останньому кроці. Таке управління називають умовно оптимальним, оскільки його знаходять за умови, що попередній крок був виконаний відповідно до однієї з можливих гіпотез. На відміну від лінійного програмування, для якого симплексний метод є універсальним методом розв’язання задач, у динамічному програмуванні такого універсального методу не існує.

Всі класи задач динамічного програмування розв’язують методом рекурентних співвідношень, які складаються на підставі принципу оптимальності, розробленого американським математиком Р. Беллманом в 1953 р.

Принцип оптимальності Беллмана: яким би не був стан системи перед черговим кроком, управління на цьому кроці необхідно вибирати таким чином, щоб ефективність кроку, що розглядається, плюс оптимальна ефективність на всіх наступних кроках була максимальною.

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