Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по математике для магистров.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
9.51 Mб
Скачать

25.4 Вычислительная схема метода динамического программирования.

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

максимизировать                      (25.1)

при условиях           (25.2 )

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

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

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

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

      (25.3)

причем

 .                            (25.4)

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

 .                 (25.5)

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

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

 .          (25.6)

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

Покажем, как вычислить .

Обозначим

при условии

 .

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

 ,        (25.7)

где

 ,               (25.8)

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

 .

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

               (25.9)

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

 .

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

                       (25.10)

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

На втором шаге ( =2) находим  в соответствии с соотношением

 ,   (25.11)

причем значения  берем из табл. 25.1.

Вычисляем последовательно  для всех значений = 0,1,…, , используя результаты табл. 25.1. Одновременно находим  и . Результаты вычислений заносим в таблицу второго шага (табл. 25.2).

Таблица 25.1

 

Таблица 25.2

 

0

 

 

 

0

 

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

Далее, пользуясь соотношением (25.8), последовательно вычисляем  для всех значений  = 0, 1, 2, …, .

В конце концов, на последнем шаге при  находим

 ,   (25.12)

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

 .

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