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

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

Некоторые задачи математического программирования обладают характерными особенностями, которые позволяют свести их решение к рассмотрению некоторого множества более простых «подзадач». В результате вопрос о глобальной оптимизации некоторой функции сводится к поэтапной оптимизации некоторых промежуточных целевых функций. В динамическом программировании рассматриваются методы, позволяющие путем поэтапной (многошаговой) оптимизации получить общий (результирующий) оптимум.

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

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

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

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

Поскольку логарифм функции типа (2) является аддитивной функцией, достаточно ограничиться рассмотрением функций вида (1).

Изложим сущность вычислительного метода динамического программирования на примере задачи оптимизации

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

при ограничениях

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

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

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

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

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

при ограничениях

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

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

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

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

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

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

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

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

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

т. е. значению целевой функции при одномоментном распределении ресурса.

Если в выражении (9) заменить значения b на Основные идеи вычислительного метода динамического программирования - student2.ru ,и п на k , то его можно рассматривать как рекуррентную формулу, позволяющую последовательно вычислять оптимальные значения целевой функции при распределении объема ресурса Основные идеи вычислительного метода динамического программирования - student2.ru за k шагов:

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

Значение переменной Основные идеи вычислительного метода динамического программирования - student2.ru , при котором достигается рассматриваемый максимум, обозначим Основные идеи вычислительного метода динамического программирования - student2.ru При Основные идеи вычислительного метода динамического программирования - student2.ru формула (11) принимает вид

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

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

Используя (12) как основание рекурсии, можно с помощью (11) последовательно вычислить Основные идеи вычислительного метода динамического программирования - student2.ru и Основные идеи вычислительного метода динамического программирования - student2.ru , Основные идеи вычислительного метода динамического программирования - student2.ru . Положив на последнем шаге Основные идеи вычислительного метода динамического программирования - student2.ru , в силу (9), найдем глобальный максимум функции (3), равный Основные идеи вычислительного метода динамического программирования - student2.ru , и компоненту оптимального плана Основные идеи вычислительного метода динамического программирования - student2.ru . Полученная компонента позволяет вычислить нераспределенный остаток на следующем шаге при оптимальном планировании: Основные идеи вычислительного метода динамического программирования - student2.ru ,и, в свою очередь, найти Основные идеи вычислительного метода динамического программирования - student2.ru . В результате подобных вычислений последовательно будут найдены все компоненты оптимального плана.

Таким образом, динамическое программирование представляет собой целенаправленный перебор вариантов, который приводит к нахождению глобального максимума. Уравнение (11), выражающее оптимальное решение на k-м шаге через решения, принятые на предыдущих шагах, называется основным рекуррентным соотношением динамического программирования. В то же время следует заметить, что описанная схема решения при столь общей постановке задачи имеет чисто теоретическое значение, так как замыкает вычислительный процесс на построение функций Основные идеи вычислительного метода динамического программирования - student2.ru Основные идеи вычислительного метода динамического программирования - student2.ru , т. е. сводит исходную задачу (3)-(4) к другой весьма сложной проблеме. Однако при определенных условиях применение рекуррентных соотношений может оказаться весьма плодотворным. В первую очередь это относится к задачам, которые допускают табличное задание функций Основные идеи вычислительного метода динамического программирования - student2.ru .

§2. Задачи динамического программирования,

допускающие табличное задание рекуррентных соотношений

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

Чтобы не усложнять обозначения, условимся операции целочисленной арифметики записывать стандартным образом, полагая, что промежуточные результаты подвергаются правильному округлению. Так, например, будем считать, что 12/5 = 2.

В соответствии с общей схемой вычислительного алгоритма на первом шаге необходимо построить функцию

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

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

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

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

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

где значения

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

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

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

Таблица 5.1

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

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

Таблица 5.2

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

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

и т. д. или, в общем виде,

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

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

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

Количество допустимых планов такой задачи совпадает с количеством целочисленных решений уравнения

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

т. е. равно числу сочетаний с повторениями из п элементов по b. Следовательно, при простом переборе число возможных вариантов составит

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

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

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

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

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

операций, что при больших п и b существенно меньше, чем в первом случае. Например, если Основные идеи вычислительного метода динамического программирования - student2.ru и Основные идеи вычислительного метода динамического программирования - student2.ru , то непосредственный перебор потребует выполнения 324632 операций, а метод динамического программирования - только 2511.

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