Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
14.04.2015
Размер:
2.05 Mб
Скачать

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

Лекция 11

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

.

При простом переборе число возможных вариантов (при условии

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

.

Например, при = 5, = 20, = 10626.

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

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

заполнить одну таблицу (при =0,1, .,) необходимо

операций.

 

Таким образом, для вычисления всех функций

,

необходимо

операций.

С учетом вычислений функции общее число операций составляет

.

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

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

где - объем производства по -му способу ; - прибыль от достижения объема ; - затраты ресурса на производство по -му

1

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

способу (при ограничении на общий объем использованного ресурса

).

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

Рассматриваемую задачу можно интерпретировать как -шаговый процесс

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

-му способу производства. Как видим, структура этой задачи не изменяется от числа шагов, то есть задача инвариантна относительно .

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

предыдущего ( )-го шага.

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

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

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

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

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

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

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

процесса будем называть функцией состояния.

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

2

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

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

основное рекуррентное соотношение:

,

где - вектор состояния предыдущего ()-го шага при условиях и

. В рассматриваемой задаче .

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

Оптимальная стратегия обладает следующим свойством : для любых

начального состояния и начальной стратегии , стратегия на -м шаге должна быть

оптимальной только относительно текущего состояния системы и не должны зависеть от предыдущих состояний.

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

Задача о выборетраектории

Основной принцип динамического программирования можно продемонстрировать на следующем примере [7].

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

3

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

постоянной скорости , и расход горючего для увеличения скорости от к при

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

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

Тогда процесс перемещения точки из начального состояния в конечное отобразится на плоскости некоторой ступенчатой ломаной (рис. 7.1). Эта траектория и будет характеризовать управление набором высоты и скорости.

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

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

отрезок высоты на равных частей, а скорости - на равных частей.

Таким образом, за первый шаг процесса происходит либо изменение высоты

на величину , либо изменение скорости на величину .

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

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

= 12 + 11 + 10 + 8 + 11 + 10 + 10 + 13 + 15 + 20 + 9 + 12 + 14 = 165 у.о.т.

4

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

Общее количество всех возможных траекторий достаточно велико,а потому простой их перебор неприемлем,и поэтомуприменим принцип оптимальности

Беллмана. Посколькуконечное состояние системы известно, то процесс построения оптимальной траектории начинаем с конца.

Из принципа оптимальности Беллмана следует, что если система находится в некоторой промежуточной точке , и известна конечная точка, то оптимальной стратегией будет та, которая переводит из точки в

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

конечной точки . В точку можно переместиться только из двух соседних

точек и (см. рис. 7.3), причем только одним возможным способом, а поэтому выбора оптимального управления на последнем шаге нет - оно

единственное. Если на предпоследнем шаге мы находились в точке , то перемещение в происходит по горизонтали и тратится 17 у.о.т., а если мы находились в точке , то движемся по вертикали и тратим 14 у.о.т. Эти

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

Теперь переходим к выбору оптимальной стратегии на предпоследнем шаге. Для этого рассмотрим пункты, из которых можно попасть в и за один шаг. Такими точками являются , , (рис. 7.4). Для кажой из них необходимо найти оптимальную траекторию в точку и соответствующий расход горючего. В частности, для выбора нет, нужно двигаться только по горизонтали и тратить 15 + 17 = 32 у.о.т. Для точки выбор существует: из

нее в можно идти через или . В первом случае израсходуется 13 + 17 = 30 у.о.т., а во втором - 17 + 14 = 31 у.о.т. Итак, оптимальная траектория из

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

точке .

В конце концов для точки путь в - единственный (по вертикали), ему соответствует расход в 12 + 14 = 26 у.о.т. Это число обведем кружком в точке

и покажем оптимальную траекторию (рис. 7.4).

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

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

к начальной точке . Двигаясь теперь от нее в противоположном направлении, которое показано стрелками, последовательно проходим

искомую траекторию от к . Эта оптимальная траектория показана на рис. 7.5 дополнительными стрелками. Число 139 означает минимальный расход горючего, отвечающий этой траектории.

5

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

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

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

Задачи последовательного принятия решений

Структура рассмотренной задачи распределения ресурсов такова, что

переменные ,

 

 

 

 

 

 

 

 

по мере построения процесса можно было

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

переменные , нельзя менять местами. Такие задачи называют задачами последовательного принятия решений. Для этих задач существует выбор между двумя разными схемами решения [18; 49]:

решение в прямом направлении, когда первый шаг схемы динамического программирования соответствует первому по времени принимаемому решению;

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

Для объяснения этих двух схем рассмотрим такую задачу.

6

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

Задача об использовании трудовых ресурсов

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

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

месяц нанял бы равно

 

рабочих

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

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

функцией . В зависимости от знака разности функция

определяет затраты по найму (если ) или по увольнению. Очевидно, .

Отклонение численности от идеальной величины приводит к дополнительным производственным расходам, которые задаются функцией

, причем . Предположим, что в начальный момент

численность рабочих составляла . Целевая функция задачи - суммарные затраты на производство и набор рабочих определяется соотношением

,

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

Решим эту задачу методом динамического программирования. Поскольку

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

,

где .

Тогда основное рекуррентное соотношение будет иметь вид:

,

(7.1.13)

7

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

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

Используя (7.1.13), последовательно вычисляем , , ., для всех возможных значений .

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

рабочих в первый месяц при начальном условии = .

Для этого находим

. (7.1.14)

Определив из (7.1.14) и положив = , из таблицы предыдущего шага находим , дальше и т.д.

В рассматриваемом случае решение в обратном направлении целесообразно, так как неизвестно число рабочих в конце работ, то есть на

( )-й месяц.

Рассмотрим случай, когда кроме задано также нужное количество

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

.

(7.1.15)

Здесь можно записать

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

Определим последовательность функций состояния

8

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

Тогда

Основное рекуррентное соотношение ДП для этого случая будет иметь вид:

(7.1.16)

Функция есть минимальные затраты за первые ( ) месяцев при условии, что численность работников в ( )-й месяц равна .

Используя ОРС (7.1.16), последовательно вычисляем

 

 

 

 

 

,

 

 

 

 

 

 

 

 

для всех возможных значений

 

.

 

 

 

 

 

 

 

Наконец, на последнем шаге при , положив , получим соотношение

.

(7.1.17)

Определив из (7.1.17) оптимальное значение по таблице предыдущего

( )-го шага и, положив , найдем оптимальные значения всех

остальных переменных , , ., . Подведем некоторые итоги рассмотренной выше задачи.

Пусть имеется задача последовательного принятия решений на периодов. Если задано начальное состояние системы, то задача решается методом динамического программирования в обратном направлении; если же задано конечное состояние системы, то - в прямом направлении. Наконец, если заданы как начальное, так и конечное состояния системы, то задачу можно решать как в прямом, так и в обратном направлениях. Результаты по обеим схемам совпадут.

Пример 7.2. Пусть задана задача об использовании трудовых ресурсов с такими данными: = 4 месяца; = 2, = 5, = 3, = 1, = 2.

Пусть функции и имеют следующий вид:

Поскольку зафиксировано начало ( = = 2), то будем решать задачу в обратном направлении. Для этого используем основное рекуррентное соотношение

9

Файл Л_11_ИсслОп = "Лекция 2.doc" из "I:\RES_H\WORK\EDUCATION\ХНУРЭ - учебные курсы\ИССЛЕД_ОПЕР\МОЁ\Лекц 2 семестр\Динамическое программ\из IASA - зайченко\"

Первый шаг.

Для отыскания составляем таблицу значений (табл. 7.3).

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

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

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

ξ = 0 , x4 = 0; Ω=411;= 0 + 11(1 - 0)

ξ = 0 , x4 = 1; Ω=410;= 10(1 - 0) + 0

ξ = 0 , x4 = 2;

Ω4 = 10(2 - 0) + 8(2 - 1) = 28. ξ = 2 , x4 = 0;

Ω4 = 7(2 - 0) + 11(1 - 0) = 25;

ξ = 2 , x4 = 1;

Ω7;4 = 7(2 - 1) + 0 =

ξ = 2 , x4 = 2; Ω=48.= 7.0 + 8(2 - 1)

ξ = 1 , x4 = 0; Ω0)4==18;7(1 - 0) + 11(1 -

ξ= 1 , x4 = 1; Ω4 = 0 + 0 = 0;

ξ= 1 , x4 = 2;

Ω1)4==18.10(1 - 0) + 8(2 -

ξ = 3 , x4 = 0; Ω0)4==32;7(3 - 0) + 11(1 -

ξ = 3 , x4 = 1;

Ω4 = 7(3 - 1) + 0 = 14; ξ = 3 , x4 = 2; Ω1)4==15.7(3 - 2) + 8(2 -

10

Соседние файлы в папке Лекц