Суть методов динамического программирования
РазделДинамическое программированиепредставлен следующими калькуляторами:
- Задача распределения инвестиций. Для реконструкции и модернизации производства на четырех предприятиях выделены денежные средства С = 80 ден. ед. По каждому предприятию известен возможный прирост fi(х) (i = 1, 4) выпуска продукции в зависимости от выделенной суммы.
- Метод прогонки.
- Задача замены оборудования.
- Задача Джонсона.
- Задача о рюкзаке.
В задачах динамического программирования экономический процесс зависит от времени (или от нескольких периодов времени), поэтому находится ряд оптимальных решений (последовательно для каждого этапа), обеспечивающих оптимальное развитие всего процесса в целом. Динамическое программирование представляет собой математический аппарат, позволяющий осуществлять оптимальное планирование управляемых процессов и процессов, зависящих от времени. Поэтапное проведение оптимизации называется многошаговым процессом принятия решения. Экономический процесс называется управляемым, если можно влиять на ход его развития.
В основе метода динамического программирования (ДП) лежит принцип последовательной оптимизации: решение исходной задачи оптимизации большой размерности заменяется решением последовательности задач оптимизации малой размерности. Основным условием применимости метода ДП является возможность разбиения процесса принятия решений на ряд однотипных шагов или этапов, каждый из которых планируется отдельно, но с учетом результатов, полученных на других шагах. Например, деятельность отрасли промышленности в течение ряда хозяйственных лет или же последовательность тестов, применяемых при контроле аппаратуры, и т. д. Некоторые процессы (операции) расчленяются на шаги естественно, но существуют такие операции, которые приходится делить на этапы искусственно, например процесс наведения ракеты на цель.
Этот принцип гарантирует, что управление, выбранное на любом шаге, является не локально лучшим, а лучшим с точки зрения процесса в целом, так как это управление выбирается с учетом последствий на предстоящих шагах.
Рассмотрим общее описание задачи динамического программирования.
Пусть многошаговый процесс принятия решений разбивается на n шагов. Обозначим через ε0 – начальное состояние системы, через ε1, ε2, … εn – состояния системы после первого, второго, n-го шага. В общем случае состояниеεk – вектор (εk1, …, εks).
Управлением в многошаговом процессе называется совокупность решений (управляющих переменных) uk = (uk1, ..., ukr), принимаемых на каждом шаге k и переводящих систему из состояния εk-1 = (εk-11, …, εk-1s) в состояние εk = (εk1, …, εks).
В экономических процессах управление заключается в распределении и перераспределении средств на каждом этапе. Например, выпуск продукции любым предприятием – управляемый процесс, так как он определяется изменением состава оборудования, объемом поставок сырья, величиной финансирования и т. д. Совокупность решений, принимаемых в начале года, планируемого периода, по обеспечению предприятия сырьем, замене оборудования, размерам финансирования и т. д. является управлением. Казалось бы, для получения максимального объема выпускаемой продукции проще всего вложить максимально возможное количество средств и использовать на полную мощность оборудование. Но это привело бы к быстрому изнашиванию оборудования и, как следствие, к уменьшению выпуска продукции. Следовательно, выпуск продукции надо спланировать так, чтобы избежать нежелательных эффектов. Необходимо предусмотреть мероприятия, обеспечивающие пополнение оборудования по мере изнашивания, т. е. по периодам времени. Последнее хотя и приводит к уменьшению первоначального объема выпускаемой продукции, но обеспечивает в дальнейшем возможность расширения производства. Таким образом, экономический процесс выпуска продукции можно считать состоящим из нескольких этапов (шагов), на каждом из которых осуществляется влияние на его развитие.
Началом этапа (шага) управляемого процесса считается момент принятия решения (о величине капитальных вложений, о замене оборудования определенного вида и т. д.). Под этапом обычно понимают хозяйственный год.
Обычно на управление на каждом шаге uk накладываются некоторые ограничения. Управления, удовлетворяющие этим ограничениям, называются допустимыми.
Предполагая, что показатель эффективности k-го шага процесса зависит от начального состояния на этом шаге
k-1и от управления на этом шаге uk, получим целевую функцию всего многошагового процесса в виде:
.
Сформулируем теперь задачу динамического программирования: «Определить совокупность допустимых управлений (u1, …, un), переводящих систему из начального состояния ε0 в конечное состояние εn и максимизирующих или минимизирующих показатель эффективности F».
Управление, при котором достигается максимум (минимум) функции F называется оптимальным управлением u* = (u1*,…, un*).
Если переменные управления uk принимают дискретные значения, то модель ДП называется дискретной. Если переменные uk изменяются непрерывно, то модель ДП называется непрерывной.
В зависимости от числа параметров состояния s и числа управляющих переменных r различают одномерные и многомерные задачи ДП.
Число шагов в задаче может быть конечным или бесконечным.
Прикладные задачи динамического программирования
- задача коммивояжера;
- задача о планировании строительства объектов.
Модели динамического программирования
- Динамическое программирования
- - это метод оптимизации, приспособленный к операциям, в которых процесс принятия решения может быть разбит на этапы.
Пусть рассматривается управляемый экономический процесс распределение средств между предприятиями.
Рассмотрим алгоритм решения задачи на конкретном примере.
Планируется деятельность четырёх предприятий на очередной год.
Начальные средства: S 0 ус/ед. Размеры вложений в каждое предприятие кратны 1ус/ед.
Средства Х выделенные предприятию приносят в конце года
прибыль F k (Х). Функции F k (Х) заданы таблично.
Принято считать, что:
- прибыль F k (Х) не зависит от вложения средств в другие предприятия;
- прибыль от каждого предприятия выражается в одних и тех же единицах;
- суммарная прибыль равна сумме прибылей, полученных от каждого предприятия.
Определить, какое количество средств нужно выделить каждому предприятию, чтобы суммарная прибыль была наибольшей.
Решение находим с помощью сервиса распределение средств между предприятиями
Введём обозначения:
Х - количество средств, выделенных каждому предприятию.
Суммарная прибыль равна: Z =∑ F k (Х).
Переменные удовлетворяют ограничениям:
∑Х k =5
Х k ≥0
Требуется найти переменные Х1,Х2,Х3,Х4, удовлетворяющие системе уравнений и обращающие в максимум функцию.
Таблица
| Х | F 1(Х) | F 2(Х) | F 3(Х) | F 4(Х) |
| 1 | 8 | 6 | 3 | 4 |
| 2 | 10 | 9 | 4 | 6 |
| 3 | 11 | 11 | 7 | 8 |
| 4 | 12 | 13 | 11 | 13 |
| 5 | 18 | 15 | 18 | 16 |
Используя уравнение Беллмана рассмотрим алгоритм решения задачи.
Если Х1=0, то S 1 =5, то прибыль, полученная от четырёх предприятий при этих условиях, будет равна: Z1 = 0+19=19.
Если Х1=1, то S 2=4, то прибыль при этих условиях равна: Z 1 = 8+16=24.
Если Х1=2, то S 2 =3, то прибыль при этих условиях равна: Z 3 = 10+13=23
Если Х1=3, то S 2 =2, то прибыль при этих условиях равна:
Z 4 = 11+10=2110+13=23
Если Х1=4, то S 2 =1, то прибыль при этих условиях равна: Z 5 = 12+16=28
Если Х1=5, то S 2 =0, то прибыль при этих условиях равна: Z 5 =18+0=18
Сравнивая полученные числа, получим: Z 1 = 24, при Х1=1.
Максимум суммарной прибыли Zmaх = 24 ус/ед. при условии, что:
- первому предприятию выделено 1 ус/ед.;
- второму предприятию 2 ус/ед.;
- третьему предприятию 1 ус/ед.;
- четвёртому предприятию 1 ус/ед.
I этап. Условная оптимизация.
1-ый шаг. k = 4.
| e3 | u4 | e4=e3-u4 | f4(u4) | F*4(e4) | u4(e4) |
| 1 | 0 | 1 | 0 | 0 | 0 |
| 1 | 0 | 4 | 4 | 1 | |
| 2 | 0 | 2 | 0 | 0 | 0 |
| 1 | 1 | 4 | 0 | 0 | |
| 2 | 0 | 6 | 6 | 2 | |
| 3 | 0 | 3 | 0 | 0 | 0 |
| 1 | 2 | 4 | 0 | 0 | |
| 2 | 1 | 6 | 0 | 0 | |
| 3 | 0 | 8 | 8 | 3 | |
| 4 | 0 | 4 | 0 | 0 | 0 |
| 1 | 3 | 4 | 0 | 0 | |
| 2 | 2 | 6 | 0 | 0 | |
| 3 | 1 | 8 | 0 | 0 | |
| 4 | 0 | 13 | 13 | 4 | |
| 5 | 0 | 5 | 0 | 0 | 0 |
| 1 | 4 | 4 | 0 | 0 | |
| 2 | 3 | 6 | 0 | 0 | |
| 3 | 2 | 8 | 0 | 0 | |
| 4 | 1 | 13 | 0 | 0 | |
| 5 | 0 | 16 | 16 | 5 |
2-ый шаг. k = 3.
| e2 | u3 | e3=e2-u3 | f3(u3) | F*3(e2) | F2(u3,e2) | F*3(e3) | u3(e3) |
| 1 |
0 | 1 | 0 | 4 | 4 | 4 | 0 |
| 1 | 0 | 3 | 0 | 3 | 0 | 0 | |
| 2 | 0 | 2 | 0 | 6 | 6 | 0 | 0 |
| 1 | 1 | 3 | 4 | 7 | 7 | 1 | |
| 2 | 0 | 4 | 0 | 4 | 0 | 0 | |
| 3 | 0 | 3 | 0 | 8 | 8 | 0 | 0 |
| 1 | 2 | 3 | 6 | 9 | 9 | 1 | |
| 2 | 1 | 4 | 4 | 8 | 0 | 0 | |
| 3 | 0 | 7 | 0 | 7 | 0 | 0 | |
| 4 | 0 | 4 | 0 | 13 | 13 | 13 | 0 |
| 1 | 3 | 3 | 8 | 11 | 0 | 0 | |
| 2 | 2 | 4 | 6 | 10 | 0 | 0 | |
| 3 | 1 | 7 | 4 | 11 | 0 | 0 | |
| 4 | 0 | 11 | 0 | 11 | 0 | 0 | |
| 5 | 0 | 5 | 0 | 16 | 16 | 0 | 0 |
| 1 | 4 | 3 | 13 | 16 | 0 | 0 | |
| 2 | 3 | 4 | 8 | 12 | 0 | 0 | |
| 3 | 2 | 7 | 6 | 13 | 0 | 0 | |
| 4 | 1 | 11 | 4 | 15 | 0 | 0 | |
| 5 | 0 | 18 | 0 | 18 | 18 | 5 |
3-ый шаг. k = 2.
| e1 | u2 | e2=e1-u2 | f2(u2) | F*2(e1) | F1(u2,e1) | F*2(e2) | u2(e2) |
| 1 |
0 | 1 | 0 | 4 | 4 | 0 | 0 |
| 1 | 0 | 6 | 0 | 6 | 6 | 1 | |
| 2 | 0 | 2 | 0 | 7 | 7 | 0 | 0 |
| 1 | 1 | 6 | 4 | 10 | 10 | 1 | |
| 2 | 0 | 9 | 0 | 9 | 0 | 0 | |
| 3 | 0 | 3 | 0 | 9 | 9 | 0 | 0 |
| 1 | 2 | 6 | 7 | 13 | 13 | 1 | |
| 2 | 1 | 9 | 4 | 13 | 0 | 0 | |
| 3 | 0 | 11 | 0 | 11 | 0 | 0 | |
| 4 | 0 | 4 | 0 | 13 | 13 | 0 | 0 |
| 1 | 3 | 6 | 9 | 15 | 0 | 0 | |
| 2 | 2 | 9 | 7 | 16 | 16 | 2 | |
| 3 | 1 | 11 | 4 | 15 | 0 | 0 | |
| 4 | 0 | 13 | 0 | 13 | 0 | 0 | |
| 5 | 0 | 5 | 0 | 18 | 18 | 0 | 0 |
| 1 | 4 | 6 | 13 | 19 | 19 | 1 | |
| 2 | 3 | 9 | 9 | 18 | 0 | 0 | |
| 3 | 2 | 11 | 7 | 18 | 0 | 0 | |
| 4 | 1 | 13 | 4 | 17 | 0 | 0 | |
| 5 | 0 | 15 | 0 | 15 | 0 | 0 |
4-ый шаг. k = 1.
| e0 | u1 | e1=e0-u1 | f1(u1) | F*1(e0) | F0(u1,e0) | F*1(e1) | u1(e1) |
| 1 |
0 | 1 | 0 | 6 | 6 | 0 | 0 |
| 1 | 0 | 8 | 0 | 8 | 8 | 1 | |
| 2 | 0 | 2 | 0 | 10 | 10 | 0 | 0 |
| 1 | 1 | 8 | 6 | 14 | 14 | 1 | |
| 2 | 0 | 10 | 0 | 10 | 0 | 0 | |
| 3 | 0 | 3 | 0 | 13 | 13 | 0 | 0 |
| 1 | 2 | 8 | 10 | 18 | 18 | 1 | |
| 2 | 1 | 10 | 6 | 16 | 0 | 0 | |
| 3 | 0 | 11 | 0 | 11 | 0 | 0 | |
| 4 | 0 | 4 | 0 | 16 | 16 | 0 | 0 |
| 1 | 3 | 8 | 13 | 21 | 21 | 1 | |
| 2 | 2 | 10 | 10 | 20 | 0 | 0 | |
| 3 | 1 | 11 | 6 | 17 | 0 | 0 | |
| 4 | 0 | 12 | 0 | 12 | 0 | 0 | |
| 5 | 0 | 5 | 0 | 19 | 19 | 0 | 0 |
| 1 | 4 | 8 | 16 | 24 | 24 | 1 | |
| 2 | 3 | 10 | 13 | 23 | 0 | 0 | |
| 3 | 2 | 11 | 10 | 21 | 0 | 0 | |
| 4 | 1 | 12 | 6 | 18 | 0 | 0 | |
| 5 | 0 | 18 | 0 | 18 | 0 | 0 |
Поясним построение таблиц и последовательность проведения расчетов.
Столбцы 1, 2 и 3 для всех трех таблиц одинаковы, поэтому их можно было бы сделать общими. Столбец 4 заполняется на основе исходных данных о функциях дохода, значения в столбце 5 берутся из столбца 7 предыдущей таблицы, столбец 6 заполняется суммой значений столбцов 4 и 5 (в таблице 4-го шага столбцы 5 и 6 отсутствуют).
В столбце 7 записывается максимальное значение предыдущего столбца для фиксированного начального состояния, и в 8 столбце записывается управление из 2 столбца, на котором достигается максимум в 7.
Этап II. Безусловная оптимизация.
Из таблицы 1-го шага имеем F*4(e0 = 5) = 24. То есть максимальный доход всей системы при количестве средств e0 = 5 равен 24.
Из этой же таблицы получаем, что 1-му предприятию следует выделить u*1(e0 = 5) = 1
При этом остаток средств составит:
e1 = e0 - u1
e1 = 5 - 1 = 4
Из таблицы 2-го шага имеем F*3(e1 = 4) = 16. То есть максимальный доход всей системы при количестве средств e1 = 4 равен 16.
Из этой же таблицы получаем, что 2-му предприятию следует выделить u*2(e1 = 4) = 2
При этом остаток средств составит:
e2 = e1 - u2
e2 = 4 - 2 = 2
Из таблицы 3-го шага имеем F*2(e2 = 2) = 7. То есть максимальный доход всей системы при количестве средств e2 = 2 равен 7.
Из этой же таблицы получаем, что 3-му предприятию следует выделить u*3(e2 = 2) = 1
При этом остаток средств составит:
e3 = e2 - u3
e3 = 2 - 1 = 1
Последнему предприятию достается 1.
Итак, инвестиции в размере 5 необходимо распределить следующим образом:
1-му предприятию выделить 1,
2-му предприятию выделить 2,
3-му предприятию выделить 1,
4-му предприятию выделить 1.
Что обеспечит максимальный доход, равный 24.
Перейти к онлайн решению своей задачи
Типовые задачи по динамическому программированию
Решить онлайнЗадание №1. Планируется распределение начальной суммы средств e0 между n предприятиями П1, П2, ..., Пn. Выделение предприятию Пk средств uk приносит доход fk(uk). Определить, какое количество средств нужно выделить каждому предприятию, чтобы обеспечить максимальный суммарный доход
Задание №2. Совет директоров фирмы рассматривает предложения по наращиванию производственных мощностей для увеличения выпуска однородной продукции на четырёх предприятиях, принадлежащих фирме. Для модернизации предприятия совет директоров инвестировал средства в объёме e0 млн. р. Прирост выпуска продукции зависит от выделенной суммы, его значения представлены предприятиями и содержатся в таблице. Найти распределение инвестиций между предприятиями, обеспечивающее фирме максимальный прирост выпуска продукции, причём на одно предприятие можно осуществить только одну инвестицию.
Задание №3. Найти оптимальный план распределения кредитов и прибыль.
Задание №4. Определите оптимальный план расширения производства трех предприятий, если известна их прибыль в год при отсутствии вложений и при инвестировании 1, 2, 3 или 4 млн. Определите, при каком инвестировании будет максимальный процент прироста прибыли.
Задание №5. В таблице приведены значения возможного прироста выпуска продукции на четырех фирмах, в зависимости от выделенной на модернизацию производства суммы x. Распределить между фирмами 1 млн. руб. чтобы общий прирост выпуска продукции был максимальным. Для упрощения вычислений значения х принимать кратными 200 тыс. руб.