- •Глава 7. Динамическое программирование §1. Примеры задач динамического программирования
- •§2. Постановка и общая схема решения задачи динамического программирования
- •§3. Решение задачи оптимального распределения инвестиций методом динамического программирования
- •1. Этап условной оптимизации.
- •2. Этап безусловной оптимизации.
- •Контрольные вопросы к главе
§3. Решение задачи оптимального распределения инвестиций методом динамического программирования
Проиллюстрируем описанную выше процедуру решения задач динамического программирования на следующем примере.
Задача 4.1. Компания выделяет S = 40 млн. руб. для модернизации производства с целью увеличения выпуска продукции. Эти средства следует распределить между тремя филиалами компании. При этом сумма, выделяемая филиалу, должна быть кратна 10 млн. руб.
Известны функции fk(u) (k = ), которые характеризуют прирост выпуска продукции k-го филиала в млн. руб. за год при получении им капиталовложений u млн. руб. (u = 0, 10, 20, 30, 40). Эти данные приведены в таблице 4.1. Нужно найти оптимальный план распределения капиталовложений между филиалами, обеспечивающий максимальный общий годовой прирост выпуска продукции.
Таблица 4.1. Исходная информация к задаче
Размер капитало-вложений (млн. руб.) u |
Прирост выпуска продукции (млн. руб.) |
||
f1(u) |
f2(u) |
f3(u) |
|
0 |
0 |
0 |
0 |
10 |
5 |
6 |
4 |
20 |
7 |
8 |
7 |
30 |
8 |
9 |
8 |
40 |
11 |
12 |
10 |
Решение. Обозначим через uk количество средств, выделенных k-му филиалу, где k = , а Z — общий годовой прирост выпуска продукции. Для нахождения оптимального плана распределения инвестиций следует решить следующую задачу:
Z = f1(u1) + f2(u2) + f3(u3) → max, (4.1)
u1 + u2 + u3 = 40, (4.2)
uk ≥ 0, k = , (4.3)
uk ϵ {0, 10, 20, 30, 40}, k = . (4.4)
Оптимальное решение задачи (4.1) – (4.4) можно найти, сведя ее к задаче линейного целочисленного программирования, аналогично тому, как это было сделано в предыдущей главе (см. задачу 1.3 в §1 главы 7). Другая возможность — использование метода динамического программирования.
Для этого рассмотрим процедуру распределения капиталовложений между филиалами как многошаговый процесс, на k-ом шаге которого выделяются средства k-му филиалу. Таким образом, число шагов этого процесса равно числу филиалов и номер шага соответствует номеру филиала.
Управление uk на k-м шаге (k = ) — это объем средств, выделенных k‑му филиалу, а параметры состояния xk — это остаток капиталовложений после их выделения первым k объектам.
Итак, x0 = 40 — начальный объем капиталовложений, x1 — объем средств, оставшийся после выделения капиталовложений первому филиалу, x2 — объем средств, оставшийся после выделения капиталовложений первому и второму филиалу, а x3 — объем средств, оставшийся после выделения капиталовложений всем трём филиалам.
Уравнения состояния имеют вид:
x0 = 40,
x1 = x0 – u1,
x2 = x1 – u2,
x3 = x2 – u3
Множества допустимых управлений на каждом шаге таковы:
Dk = {0 ≤ uk ≤ xk-1}, k = .
Показатель эффективности управления fk(uk) на каждом шаге зависит только от управления на этом шаге и не зависит от предшествующего состояния. Общий показатель эффективности управления имеет вид:
Z = f1(u1) + f2(u2) + f3(u3) → max.
Оптимальное управление доставляет максимум этой функции на множестве допустимых управлений.
В предыдущем параграфе было дано общее описание процедуры нахождения оптимального управления, состоящей из двух этапов: условной и безусловной оптимизации.