Основная идея и особенности вычислительного метода динамического программирования

Глава 7. Динамическое программирование

1. Основная идея и особенности вычислительного метода динамического программирования

2. Задачи управления запасами

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

ОСНОВНАЯ ИДЕЯ И ОСОБЕННОСТИ ВЫЧИСЛИТЕЛЬНОГО МЕТОДА ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

Динамическое программирование - это вычислительный метод для решения задач оптимизаци специальной структуры с адитивними или мультипликативными целевыми функциями.

Динамическое программирование возникло и сформировалось в 1950-1953 гг. благодаря работам Р. Беллмана и его сотрудников. Первые задачи, которые привели к появлению вычислительного метода, были динамическими задачами управления запасами.

Идею вычислительного метода динамического программирования (ДП) рассмотрим на следующем примере:

максимизировать основная идея и особенности вычислительного метода динамического программирования - student2.ru (7.1.1)

при условиях основная идея и особенности вычислительного метода динамического программирования - student2.ru (7.1.2 )

Как видно, целевая функция задачи и ограничение являются суммой функций от одной переменной каждая. Такая функция, как известно, называется адитивной. Если все основная идея и особенности вычислительного метода динамического программирования - student2.ru выпуклые, то для решения задачи можно применить метод множителей Лагранжа.

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

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

Через основная идея и особенности вычислительного метода динамического программирования - student2.ru обозначим абсолютный (глобальный) максимум основная идея и особенности вычислительного метода динамического программирования - student2.ru при условии основная идея и особенности вычислительного метода динамического программирования - student2.ru . Выберем некоторое значение основная идея и особенности вычислительного метода динамического программирования - student2.ru и, зафиксировав его, максимизируем основная идея и особенности вычислительного метода динамического программирования - student2.ru по всем остальным переменным основная идея и особенности вычислительного метода динамического программирования - student2.ru . Предположим, что такая максимизация проведена для всех возможных значений основная идея и особенности вычислительного метода динамического программирования - student2.ru . Тогда основная идея и особенности вычислительного метода динамического программирования - student2.ru будет наибольшим из всех возможных значений основная идея и особенности вычислительного метода динамического программирования - student2.ru . Формально этот процесс (эта процедура) записывается так:

основная идея и особенности вычислительного метода динамического программирования - student2.ru (7.1.3)

причем

основная идея и особенности вычислительного метода динамического программирования - student2.ru . (7.1.4)

Поскольку основная идея и особенности вычислительного метода динамического программирования - student2.ru для неотрицательных целых чисел, удовлетворяющих условию (7.1.4), зависит от основная идея и особенности вычислительного метода динамического программирования - student2.ru , то обозначим

основная идея и особенности вычислительного метода динамического программирования - student2.ru . (7.1.5)

Предположим, что мы вычислили основная идея и особенности вычислительного метода динамического программирования - student2.ru для всех допустимых целых значений основная идея и особенности вычислительного метода динамического программирования - student2.ru = основная идея и особенности вычислительного метода динамического программирования - student2.ru , где основная идея и особенности вычислительного метода динамического программирования - student2.ru означает целую часть основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Очевидно, что

основная идея и особенности вычислительного метода динамического программирования - student2.ru . (7.1.6)

Для вычисления (7.1.6) определим основная идея и особенности вычислительного метода динамического программирования - student2.ru и основная идея и особенности вычислительного метода динамического программирования - student2.ru для всех допустимых значений основная идея и особенности вычислительного метода динамического программирования - student2.ru и выберем максимальное основная идея и особенности вычислительного метода динамического программирования - student2.ru . Одновременно найдем оптимальное решение основная идея и особенности вычислительного метода динамического программирования - student2.ru . Таким образом, если бы была известна функция основная идея и особенности вычислительного метода динамического программирования - student2.ru , то вся задача свелась бы к задаче с одной переменной.

Покажем, как вычислить основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Обозначим

основная идея и особенности вычислительного метода динамического программирования - student2.ru

при условии

основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Повторив вышеприведенные выкладки, получим

основная идея и особенности вычислительного метода динамического программирования - student2.ru , (7.1.7)

где

основная идея и особенности вычислительного метода динамического программирования - student2.ru , (7.1.8)

причем максимум в (7.1.7) отыскивается при условии

основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Аналогичным образом вычисляем основная идея и особенности вычислительного метода динамического программирования - student2.ru и т.д. В конце концов на основная идея и особенности вычислительного метода динамического программирования - student2.ru -м шаге мы используем 'основное рекуррентное соотношение (ОРС) динамического программирования'

основная идея и особенности вычислительного метода динамического программирования - student2.ru (7.1.9)

при условии, что

основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Используя ОРС (7.1.9), организуем процесс вычислений, как многошаговый процесс, следующим образом. На первом шаге, зафиксировав начало интервала 0 и изменяя его правый конец основная идея и особенности вычислительного метода динамического программирования - student2.ru , вычисляем

основная идея и особенности вычислительного метода динамического программирования - student2.ru (7.1.10)

для всех возможных значений основная идея и особенности вычислительного метода динамического программирования - student2.ru =0, 1, . , b. Оптимальное решение первого шага обозначим через основная идея и особенности вычислительного метода динамического программирования - student2.ru . Составляем таблицу динамического программирования первого шага (табл. 7.1) и заполняем ее результатами вычислений.

На втором шаге ( основная идея и особенности вычислительного метода динамического программирования - student2.ru =2) находим основная идея и особенности вычислительного метода динамического программирования - student2.ru в соответствии с соотношением

основная идея и особенности вычислительного метода динамического программирования - student2.ru , (7.1.11)

причем значения основная идея и особенности вычислительного метода динамического программирования - student2.ru берем из табл. 7.1.

Вычисляем последовательно основная идея и особенности вычислительного метода динамического программирования - student2.ru для всех значений основная идея и особенности вычислительного метода динамического программирования - student2.ru = 0,1,., основная идея и особенности вычислительного метода динамического программирования - student2.ru , используя результаты табл. 7.1. Одновременно находим основная идея и особенности вычислительного метода динамического программирования - student2.ru и основная идея и особенности вычислительного метода динамического программирования - student2.ru . Результаты вычислений заносим в таблицу второго шага (табл. 7.2).

Таблица 7.1   Таблица 7.2
основная идея и особенности вычислительного метода динамического программирования - student2.ru основная идея и особенности вычислительного метода динамического программирования - student2.ru основная идея и особенности вычислительного метода динамического программирования - student2.ru   основная идея и особенности вычислительного метода динамического программирования - student2.ru основная идея и особенности вычислительного метода динамического программирования - student2.ru основная идея и особенности вычислительного метода динамического программирования - student2.ru основная идея и особенности вычислительного метода динамического программирования - student2.ru
           
           
основная идея и особенности вычислительного метода динамического программирования - student2.ru       основная идея и особенности вычислительного метода динамического программирования - student2.ru      

Дале, пользуясь соотношением (7.1.8), последовательно вычисляем основная идея и особенности вычислительного метода динамического программирования - student2.ru для всех значений
основная идея и особенности вычислительного метода динамического программирования - student2.ru = 0, 1, 2, ., основная идея и особенности вычислительного метода динамического программирования - student2.ru .

В конце концов, на последнем шаге при основная идея и особенности вычислительного метода динамического программирования - student2.ru находим

основная идея и особенности вычислительного метода динамического программирования - student2.ru , (7.1.12)

а также соответствующее оптимальное значение для последней переменной основная идея и особенности вычислительного метода динамического программирования - student2.ru . Для отыскания значений всех остальных переменных основная идея и особенности вычислительного метода динамического программирования - student2.ru надо воспользоваться таблицей основная идея и особенности вычислительного метода динамического программирования - student2.ru и т.д. шагов. Полагая основная идея и особенности вычислительного метода динамического программирования - student2.ru , из таблицы предшествующего шага находим (без вычислений)

основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Следовательно, динамическое программирование - это направленный последовательный перебор вариантов, который обязательно приводит к глобальному максимуму. Для применения метода необходимо табулировать функции основная идея и особенности вычислительного метода динамического программирования - student2.ru , . , основная идея и особенности вычислительного метода динамического программирования - student2.ru для всех допустимых значений основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Сравним метод динамического программирования по числу необходимых операций с простым перебором вариантов. Для упрощения расчетов примем основная идея и особенности вычислительного метода динамического программирования - student2.ru .

При простом переборе число возможных вариантов (при условии целочисленности всех переменных основная идея и особенности вычислительного метода динамического программирования - student2.ru ) равно числу способов, которыми можно разместить основная идея и особенности вычислительного метода динамического программирования - student2.ru одинаковых шаров в основная идея и особенности вычислительного метода динамического программирования - student2.ru урн. Оно составляет

основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Например, при основная идея и особенности вычислительного метода динамического программирования - student2.ru = 5, основная идея и особенности вычислительного метода динамического программирования - student2.ru = 20, основная идея и особенности вычислительного метода динамического программирования - student2.ru = 10626.

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

Для вычисления основная идея и особенности вычислительного метода динамического программирования - student2.ru при фиксированном основная идея и особенности вычислительного метода динамического программирования - student2.ru необходимо выполнить ( основная идея и особенности вычислительного метода динамического программирования - student2.ru +1) вычислений функции основная идея и особенности вычислительного метода динамического программирования - student2.ru при основная идея и особенности вычислительного метода динамического программирования - student2.ru . Следовательно, чтобы заполнить одну таблицу (при основная идея и особенности вычислительного метода динамического программирования - student2.ru =0,1, ., основная идея и особенности вычислительного метода динамического программирования - student2.ru ) необходимо основная идея и особенности вычислительного метода динамического программирования - student2.ru операций.

Таким образом, для вычисления всех функций основная идея и особенности вычислительного метода динамического программирования - student2.ru , основная идея и особенности вычислительного метода динамического программирования - student2.ru необходимо основная идея и особенности вычислительного метода динамического программирования - student2.ru операций.

С учетом вычислений функции основная идея и особенности вычислительного метода динамического программирования - student2.ru общее число операций составляет

основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Это значительно меньше, чем основная идея и особенности вычислительного метода динамического программирования - student2.ru , то есть имеем существенное сокращение объема вычислений сравнительно с простым перебором.

Подведем некоторые итоги. Рассмотренную выше задачу (7.1.1), (7.1.2) с экономической точки зрения можно трактовать как задачу распределения одного ограниченного ресурса основная идея и особенности вычислительного метода динамического программирования - student2.ru между основная идея и особенности вычислительного метода динамического программирования - student2.ru разными способами производства, где основная идея и особенности вычислительного метода динамического программирования - student2.ru - объем производства по основная идея и особенности вычислительного метода динамического программирования - student2.ru -му способу ; основная идея и особенности вычислительного метода динамического программирования - student2.ru - прибыль от достижения объема основная идея и особенности вычислительного метода динамического программирования - student2.ru ; основная идея и особенности вычислительного метода динамического программирования - student2.ru - затраты ресурса на производство по основная идея и особенности вычислительного метода динамического программирования - student2.ru -му способу (при ограничении на общий объем использованного ресурса основная идея и особенности вычислительного метода динамического программирования - student2.ru ).

Поэтому основная идея и особенности вычислительного метода динамического программирования - student2.ru можно трактовать как максимальную прибыль от первых основная идея и особенности вычислительного метода динамического программирования - student2.ru способов производства, когда общий объем ресурса (сырья) равен основная идея и особенности вычислительного метода динамического программирования - student2.ru единиц.

Рассматриваемую задачу можно интерпретировать как основная идея и особенности вычислительного метода динамического программирования - student2.ru -шаговый процесс принятия решений, где на основная идея и особенности вычислительного метода динамического программирования - student2.ru -м шаге принимается решение о том, какое количество ресурса из общего объема основная идея и особенности вычислительного метода динамического программирования - student2.ru следует выделить на переработку по основная идея и особенности вычислительного метода динамического программирования - student2.ru -му способу производства. Как видим, структура этой задачи не изменяется от числа шагов, то есть задача инвариантна относительно основная идея и особенности вычислительного метода динамического программирования - student2.ru .

Решение для основная идея и особенности вычислительного метода динамического программирования - student2.ru -шаговой задачи получается из решения для ( основная идея и особенности вычислительного метода динамического программирования - student2.ru )-шаговой задачи путем добавления основная идея и особенности вычислительного метода динамического программирования - student2.ru -го шага и использования результатов предыдущего ( основная идея и особенности вычислительного метода динамического программирования - student2.ru )-го шага.

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

Подводя итоги, назовем главные признаки (свойства) задач, к которым можно применить метод динамического программирования:

Задача должна допускать интерпретацию как основная идея и особенности вычислительного метода динамического программирования - student2.ru -шаговый процесс принятия решений.

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

Для k-шаговой задачи должно быть задано некоторое множество параметров, описывающих состояние системы, от которых зависят оптимальные значения переменных. Это множество не должно изменяться при увеличении числа шагов. (В рассматриваемом выше примере таким параметром было общее количество ресурса.)

Выбор решения (стратегии управления) на основная идея и особенности вычислительного метода динамического программирования - student2.ru -м шаге не должен влиять на предыдущие решения, кроме необходимого пересчета переменных.

Пусть основная идея и особенности вычислительного метода динамического программирования - student2.ru - вектор параметров, описывающих состояние процесса (вектор состояния). Тогда оптимальное значение целевой функции для основная идея и особенности вычислительного метода динамического программирования - student2.ru -шагового процесса основная идея и особенности вычислительного метода динамического программирования - student2.ru будем называть функцией состояния.

Пусть Xk - вектор переменных управления (стратегия), который необходимо определить на основная идея и особенности вычислительного метода динамического программирования - student2.ru -м шаге. Тогда для задач, к которым можно применить метод динамического программирования, должно выполняться следующее основное рекуррентное соотношение:

основная идея и особенности вычислительного метода динамического программирования - student2.ru ,

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

Сформулируем принцип оптимальности Беллмана, который обосновывает это соотношения [4; 18].

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

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

Наши рекомендации