Алгоритм метода динамического программирования

Динамическое программирование

Введение в динамическое программирование

Понятие динамического программирования обычно связывают не сколько с некоторым классом задач, сколько с определённым подходом реализации решения задачи. Для применения метода задача приводится к модели задачи динамического программирования, а затем подбирается оптимальное решение последовательным включением в рассмотрение элементов исследуемой модели.

Рассмотрим основные понятия и обозначения, используемые при построении модели.

S – состояние системы. Описывается набором параметров (х1, х2,… , хm). Для краткости будем отождествлять набор параметров, описывающих состояние системы, с этим состоянием.

Si – состояние системы к началу i-го шага.

Система меняет своё состояние по шагам под действием управления U=(u1, u2,… ,un), где каждая компонента представляет собой одно из возможных управленческих решений (принимаемое на соответствующем шаге). Это управление переводит систему из начального состояния S1 в некоторое новое состояние.

Система рассматривается на протяжении n шагов.

W(U) – целевая функция. Оценивает качество управления. Обычно при описании этой функции используют понятие «доход» и говорят о максимизации дохода (выгоды) или минимизации затрат.

Wi(ui, Si) – доход на i-м шаге, получаемый при нахождении системы в состоянии Si при реализации управления ui.

Fi(Si) – максимальный доход, получаемый начиная с i-го и до n-ного шага, если (i–1)-ый шаг система завершила в состоянии Si.

Модель задачи динамического программирования

Пусть состояние системы можно описать набором параметров (х1, х2,… , хm). Система рассматривается на протяжении n шагов. На каждом из шагов реализуются управленческие решения, составляющие в совокупности управление U=(u1, u2,… ,un). Качество управления оценивается целевой функцией W(U).

Цель: для данного начального состояния системы определить оптимальное управление U*, максимизирующее целевую функцию.

Любая задача, которую можно описать в терминах данной модели может быть решена с привлечением аппарата динамического программирования.

Алгоритм метода динамического программирования

Для применения этого алгоритма должны выполняться два условия:

  1. Отсутствие последствия: доход на некотором шаге зависит только от текущего состояния системы и выбранного управления и не зависит от предшествующих состояний системы.
  2. Условие аддитивности целевой функции Алгоритм метода динамического программирования : значение целевой функции можно вычислить как сумму частных целевых функций на каждом шаге.

При выполнении указанных условий, для решения задачи можно применять принцип оптимальности Беллмана: каково бы ни было состояние системы перед очередным шагом, надо выбрать управление на этом шаге так, чтобы сумма доходов на данном шаге и оптимального дохода на всех последующих шагах была максимальной.

В соответствии с данным принципом, решение задачи осуществляется следующим образом.

  1. Начинаем применять алгоритм с последнего шага (k=n), при этом считаем, что .
  2. Находим оптимальное управленческое решение на данном шаге, учитывая оптимальный план для последующих шагов:

.

  1. Переходим к предшествующему шагу (уменьшаем k на 1).
  2. Алгоритм завершается при достижении первого шага. Выбранный набор управленческих решений составит оптимальное управление:

Алгоритм метода динамического программирования .

Примечание: при выполнении алгоритма следует отслеживать получаемые управленческие решения, т.к. именно они представляют собой решение задачи динамического программирования.

Виды решаемых задач

В предыдущем пункте приведено описание алгоритма решения одного из видов задач динамического программирования. В этой задаче требуется разработать оптимальный план управления на несколько шагов вперёд (время считается меняющимся по шагам).

Другой вид задачи – задача о распределении ресурсов. В этой задаче требуется распределить ресурсы оптимальным образом между несколькими предприятиями/направлениями/задачами, приносящими тот или иной доход в зависимости от используемых ресурсов. Здесь общее решение также подбирается последовательным наращиванием сложности модели, заключающимся в добавлении еще одного предприятия к уже рассмотренным (аналог перехода к предшествующему шагу). Отличие данной задачи заключается в том, что порядок выбора предприятий (и т.п.) не задан жёстко в отличие от последовательности моментов времени, поэтому может использоваться произвольная нумерация для рассматриваемых предприятий.

Обычно задачи динамического программирования имеют нелинейную целевую функцию, однако применение данных методов имеет смысл и при решении некоторых ЗЛП.

Примеры задач динамического программирования: поиск кратчайшего пути


Похожие статьи.

Понравилась статья? Поделиться с друзьями: