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

Лекция № 13

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

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

Сепарабельной называется функция нескольких переменных (аргументов), представимая в виде суммы компонент, каждая из которых является функцией переменных определенного типа (номера). Например:

,

.

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

, где все .

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

Автор метода - американский ученый Р. Беллман, сформулировал условия его применения как принцип оптимальности Беллмана:

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

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

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

4.1. Классификация и типовые постановки задач динамического программирования

4.1.1. Задачи распределения ресурсов с сепарабельными целевыми функциями и аддитивными ограничениями

4.1.1.1. Задачи с одним типом управлений и одним ограничением (здп 1)

Общая запись такого рода задач имеет вид:

{z = fj(x[j])}; a[j]x[j] £ b; x[j] Î N, (j=1,2,..n), (4.1)

где все a[j]>0 и b>0.

Рассмотрим примеры такого рода задач.

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

х[j] - количество единиц производимой продукции j-го вида (целочисленная оптимизационная переменная);

b - величина используемого в производстве дефицитного ресурса;

a[j] - технологический коэффициент затрат ресурса на единицу произведенной продукции j-ого вида;

fj(x[j]) – функция, определяющая доход от реализации произведенной продукции j-го вида. Здесь в отличие от аналогичной ЗЛП - это, в общем случае, нелинейная функция (например, монотонно возрастающая с насыщением)

Задача целераспределения однородных средств нападения по обороняемым объектам. Необходимо распределить b однородных средств нападения по n объектам, отличающимся коэффициентами важности Kj, уязвимостью Pj (вероятностью поражения объекта одним средством нападения). Известно, что каждый j-ый обороняемый объект прикрывается yj средствами обороны, каждое из которых может поразить одно из атакующих средств с вероятностью bj. Суммарный ущерб, наносимый объектам, определяется математическим ожиданием важности пораженных объектов. Формализованная запись задачи имеет следующий вид:

Kj{1-[1-Pj(1-bj)yj/x[j]]x[j]}; x[j] = b; x[jN, (j=1,2,…,n).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]