Dynamic Programming1_RU.pptx
- Количество слайдов: 64
Динамическое программирование
Метод решения задач. Уравнения составляются с учетом каждой конкретной ситуации.
ПРИМЕР: Искатель приключений решил присоединиться к золотой лихорадке (19 век). На диаграмме: возможные маршруты, состояние (буквы в кружках), направление путешествия (слева направо). Для путешествия из точки отправления A (Missouri) до точки назначения J (California) необходимо пройти 4 положения. Стоимость страхования поездки повозки основана на оценке безопасности поездки (Наиболее безопасная дорога – самая дешевая страховка). Стоимость стандартной страховки из положения i в положение j (обозначенное cij):
Какой путь минимизирует общую стоимость страховки? Система дорог и стоимость для задачи о повозке.
Решение: Выбор самого дешевого пути по узлам не обязательно дает общее оптимальное решение. Следуя этой стратегии, получим маршрут A B F I J, при общей стоимости = 13. При большей стоимости на первом этапе, можем позволить сэкономить после этого (A D F дешевле, чем A B F ). Один из подходов к решению - метод проб и ошибок. Возможное количество маршрутов = 18 (много) рассчитывать стоимость для каждого маршрута – не самая лучшая перспектива.
Динамическое программирование предоставляет решение при меньших усилиях (большая экономия затрат на вычисление). Начинаем с небольшой части исходной задачи и находим оптимальные решение, затем постепенно увеличиваем задачу, находя текущее оптимальное решение из предыдущего, пока исходная задача не будет решена в полном объеме.
Начнем с задачи, где кладоискатель почти завершил свое путешествие, и ему осталось пройти только один этап. Оптимальное решение - переход из текущего состояния в конечный пункт назначения (узел J). На каждой последующей итерации, проблема увеличивается за счет увеличения на 1 этап для прохождения.
Формулировка: Переменные решения: xn (n = 1, 2, 3, 4) следующий пункт назначения на этапе n, выбранный маршрут A x 1 x 2 x 3 x 4: x 4 = J. fn(s, xn) общая стоимость лучшего решения для оставшихся этапов. Кладоискатель на узле s, готов начать этап n, и выбирает xn в качестве текущего пункта назначения. xn* значение xn которое минимизирует fn(s, xn), fn*(s) наименьшее значение fn(s, xn), fn(s, xn) = текущая стоимость (этап n) + минимальная будущая стоимость (этапы n +1 этап вперед) = csxn = cij, i = s (текущий узел) и j = xn (текущий пункт назначения). Конечный пункт назначения (узел J) достигается в конце этапа 4, f 5* ( J) = 0. Цель: найти f 1*(A) и соответствующий маршрут найдя f 4*(s), f 3*(s), f 2*(s), для каждого возможного узла s и затем используя f 2*(s) чтобы решить f 1*(A).
Какой путь минимизирует общую стоимость страховки? Система дорог и стоимость для задачи о повозке.
Решение: Когда остается только один этап (n = 4), маршрут полностью определяется текущим состоянием s (H или I) и конечным пунктом назначения x 4 = J, таким образом, путь для этого последней поездки s = J. Так как f 4*(s) = f 4(s, J) = cs, J, текущее решение задачи n = 4:
Когда остаются еще два этапа (n = 3), предположим, что он находится в узле F, он должен проехать либо в следующий узел H или I при непосредственной стоимости c. F, H = 6 или c. F, I = 3. Если выбран узел H, минимальная дополнительная стоимость после прибытия, данная в предыдущей таблице f 4*(H) = 3, показана над узлом H на диаграмме Общая стоимость этого решения составляет 6 + 3 = 9. Если выбран узел I, общая стоимость 3 + 4 = 7, меньше оптимальный выбор x 3 * = I, так как дает минимальную стоимость f 3*(F) = 7.
Какой путь минимизирует общую стоимость страховки? Система дорог и стоимость для задачи о повозке.
Аналогичные расчеты при начале из других возможных узлов s = E иs = G, когда остаются 2 этапа. Решим как графически, так и алгебраически [объединяя значения cij и f 4*(s)], чтобы проверить следующие результаты для задачи n = 3 : Для задачи второго этапа(n = 2), надо пройти 3 этапа, полученные таким же образом, f 2(s, x 2) = csx 2 + f 3*(x 2). E. g. , предположим, что кладоискатель в узле C:
Затем переходим к узлу E, F, или G при текущей стоимости c. C, E = 3, c. C, F = 2, or c. C, G = 4. При их достижении, минимальная дополнительная стоимость этапа 3 до конца задана n = 3 в таблице f 3*(E) = 4, f 3*(F) = 7, or f 3*(G) = 6, Узлы E и F и ниже узел G в предыдущей диаграмме. Окончательные расчеты для трех альтернатив: x 2 = E: f 2(C, E) = c. C, E + f 3*(E) = 3 + 4 = 7. x 2 = F: f 2(C, F) = c. C, F + f 3*(F) = 2 + 7 = 9. x 2 = G: f 2(C, G) = c. C, G + f 3*(G) = 4 + 6 = 10. Наименьшее значение 7 минимальная общая стоимость из состояния C до конца : f 2*(C) = 7, следующим пунктом назначения должен быть x 2* = E. Подобные расчеты, начиная из узла B или D дают следующие результаты для задачи n = 2 :
Какой путь минимизирует общую стоимость страховки? Система дорог и стоимость для задачи о повозке.
В 1 -м and 3 -м рядах, E и F показывают минимальное значение x 2 следующим пунктом назначения из пункта B или D должно быть x 2* = E или F. Переходя к первому этапу задачи (n = 1), когда надо пройти все 4 этапа, расчеты будут аналогичны второму этапу задачи (n = 2), за исключением того, что сейчас только один возможный путь отправления s = A:
Calculations summarized next for the three alternatives for the immediate destination: x 1 = B: f 1(A, B) = c. A, B + f 2*(B) = 2 + 11 = 13. x 1 = C: f 1(A, C) = c. A, C + f 2*(C) = 4 + 7 = 11. x 1 = D: f 1(A, D) = c. A, D + f 2*(D) = 3 + 8 = 11.
Какой путь минимизирует общую стоимость страховки? Система дорог и стоимость для задачи о повозке.
11 = минимум, f 1*(A) =11 и x 1* = C or D: Оптимальное решение для общей задачи определяется по 4 таблицам. Задача n =1 показывает, что он должен ехать либо в узел C или D. Выбираем x 1* = C. Для n = 2, результат для s = C будет x 2* = E. Это ведет к задаче n =3, что дает x 3* = H для s = E, и задача n = 4 дает x 4* = J для s = H. Таким образом, один оптимальный маршрут A C E H J. Выбор x 1* = D ведет к двум другим вариантам маршрута A D E H J и A D F I J. Все они дают общую стоимость f 1*(A) = 11. Две стрелки для этапа 1 взяты из первого и последнего столбца таблицы n = 1 и получившаяся стоимость взята из предпоследнего столбца. Каждая из других стрелок (и получившаяся стоимость) взята из оной строки в таблице. Этап, узел, и стратегия: часть основной терминологии динамического программирования с аналогичной интерпретацией в других контекстах.
Решение задачи о повозке. Каждая стрелка показывает стратегию оптимального решения (лучший следующий пункт назначения) из этого узла, число около узла= получившаяся стоимость из него до конца. Выделенные стрелки из A в T дают 3 оптимальных решения (минимальная стоимость 11).
Характеристики задач динамического программирования Задача о повозке была создана чтобы дат буквальную физическую интерпретацию абстрактной структуры таких задач. Чтобы понять, что ситуация может быть сформулирована как задача динамического программирования, нужно чтобы ее базисная структура была аналогична задаче о повозке.
1. Задача делится на этапы, с выбираемой стратегией решения на каждом этапе (задача о повозке имеет 4 стадии, соответствующие 4 частям путешествия). Решением на каждом этапе было какой полис страхования выбрать (пункт назначения для следующей поездки). Другие задачи динамического программирования требуют принятия последовательности взаимосвязанных решений, где каждое решение соответствует одному этапу задачи. 2. Каждый этап содержит состояния - узлы (в задаче о повозке это те, в которые кладоискатель может поехать, когда отправляется в очередную часть путешествия). Состояния - различные возможные условия, в которых система может быть на данном этапе задачи. Число состояний может быть как конечным, так и бесконечным.
3. Результат решение на каждом этапе заключается в преобразовании текущего состояния в состояние, связанное с началом следующего этапа (возможно, в соответствии с вероятностным распределением). Решение о следующем пункте назначения из текущего состояния в следующее состояние в процессе пути. Динамические задачи программирования могут быть интерпретированы посредством сетей, описанных ранее. Каждый узел соответствует состоянию. Сеть состоит из столбцов узлов (этапов), поэтому поток от узла может идти только к узлу в следующем столбце справа. Ребра от узла к узлам в следующем столбце соответствуют возможным решениям, к какому этапу идти дальше. Значения, назначенные для ребер – текущее дополнение в целевую функцию, в следствие принятия этого решения. Цель соответствует нахождению кратчайшего пути через сеть.
4. Процедура решения предназначена для поиска оптимального полиса для общей задачи (задания оптимального решения на каждом этапе для каждого из возможных состояний). (Для задачи с повозкой, строится таблица для каждого этапа n, дающая оптимальное решение xn* для каждого возможного состояния s. Для определения оптимального решения (оптимального маршрута) для общей задачи, результаты показывают, как действовать, если пункт назначения не соответствует оптимальному маршруту. Динамическое программирование обеспечивает выбор стратегии - что делать при всех возможных обстоятельствах (фактические решения, принятые при достижении определенного состояния на данном этапе называются стратегическими решениями). Предоставление дополнительной информации в дополнение к указанию оптимального решения (оптимальная последовательность решений) является полезным для различных тодов, в том числе при анализе чувствительности.
5. Учитывая текущее состояние, оптимальная стратегия для остальных этапов не зависит от решений, принятых на предыдущих этапах. Оптимальное текущее решение зависит только от текущего состояния, а не от того, как туда добраться (Принцип оптимальности для динамического программирования). Учитывая состояние, в котором он находится в данный момент, оптимальный полис страхования жизни (и связанные с ним маршруты) с этого момента не зависят от того, как туда добраться. Знание текущего состояния системы предлагает всю информацию о ее предыдущем поведении, необходимую для определения оптимальной политики в дальнейшем (марковское свойство). Любая задача, не имеющая данного свойства, не может быть сформулирована как задача динамического программирования. 6. Процедура решения начинается с поиска оптимальной стратегии для последнего этапа (который предусматривает оптимальное решение для каждого из возможных состояний на этом этапе). Данная одноэтапная задача, как правило, решается обычным образом (как это было в задаче с повозкой).
7. Имеются рекуррентные отношения, которые определяют оптимальную стратегию для этапа n, при известной оптимальной стратегии для этапа n + 1. Для задачи о повозке, это рекуррентное отношение имело вид: Поиск оптимального решения начатый в состоянии s на этапе n требует нахождения минимального значения xn. Для этой конкретной задачи, соответствующая минимальная стоимости достигается за счет использования этого значения xn и затем следуем оптимальной стратегии, начиная с состояния xn на стадии n + 1. Точная форма рекуррентных отношений несколько отличаются в зависимости от вида задач динамического программирования.
Здесь будем использовать обозначения, аналогичные тем, что использовали в предыдущем разделе: N = число этапов. n = индекс для текущего этапа (n = 1, 2, . . . , N). sn = текущее состояние (положение, узел) для этапа n. xn = переменные решения для этапа n. xn* = оптимальное значение xn (заданное sn). fn(sn, xn) = дополнение этапов n, n 1, . . . , N к целеврй функции, если система начинается в состоянии sn на этапе n, текущее решение xn, и оптимальные решения, принятые после. f n*(sn) fn(sn, xn*).
Рекуррентные отношения всегда будут в форме: или Где fn(sn, xn) будет записана посредством sn, xn, f*n+1(sn+1), и возможно некоторых изменений текущих дополнений xn к целевой функции. Это включение f*n+1(sn+1) в правую сторону, так что f*n(sn) определяется посредством f*n+1(sn+1), что делает выражение для f*n (sn) рекуррентным отношением. Рекуррентное отношение остается рекуррентным при движении назад этап за этапом. Когда номер текущего этапа n уменьшен на 1, получаем новую функцию f*n(sn) используя функцию f*n+1(sn+1) только что полученную во время предшествующей итерации, и потом этот процесс повторяется.
8. Используя это рекуррентное отношение, процедура решения начинается с конца и движется в обратном направлении поэтапно, каждый раз находя оптимальную стратегию для этого этапа, пока не найдет оптимальную стратегию, начинающуюся на начальном этапе. Это оптимальная стратегия сразу дает оптимальное решение для всей задачи, а именно x 1* для начального состояния s 1, затем x 2* для конечного состояния s 2, затем x 3* для s 3, и так далее до x*N для s. N. Обратное движение было продемонстрировано задачей о повозке, где оптимальная стратегия была найдена последовательно, начиная с каждого состояния на этапах 4, 3, 2 и 1 соответственно. Для всех задачах динамического программирования, будут получены следующие таблицы (n = N, N - 1, . . . , 1).
Когда эта таблица, наконец, получена для начального этапа (n = 1), проблема интересов решена. Так как известно начальное состояние, первоначальное решение задается x 1*в этой таблице. Оптимальные значения других переменных решения, затем в свою очередь задаются другими таблицами, в соответствии с состоянием системы, полученным из предыдущих решений.
ДЕТЕРМИНИРОВАННОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Состояние на следующем этапе полностью определяется состоянием и стратегическим решением на данном этапе. Вероятностный случай (так как для прогнозирования того, каким будет следующий этап, имеет место вероятностное распределение). На этапе n процесс будет в некотором состоянии sn. Принимая стратегическое решение xn затем двигает процесс в некоторое состояние sn+1 на этапе n + 1.
Дополнения целевой функции при оптимальной стратегии рассчитываются как f*n+1(sn+1). Стратегическое решение xn вносит некоторые дополнения в целевую функцию. Сочетание этих двух величин соответствующим образом обеспечивает fn(sn, xn), дополнение этапов n далее в целевой функции. Оптимизация по xn дает fn*(sn) = fn(sn, xn*). После того, как найдены xn* и fn*(sn) для каждого возможного значения sn, процедура решения готова вернуться на один этап назад. Детерминированные задачи динамического программирования могут быть классифицированы по целевой функции, минимизация суммы дополнений отдельных этапов (как задача о повозке), или максимизация такой суммы, или произведения таких условий и так далее. Основная структура детерминированног о динамического программирования
Или классифицировать можно в зависимости от природы состояния для соответствующего этапа. Состояния sn могут быть представлены дискретной переменной состояния (как в задаче о повозке), непрерывной переменной состояния, или, может быть необходим вектор состояния (более чем одна переменной). Примеры показывают, что различия весьма несущественны (за исключением вычислительной сложности), так как основная базисная структура, показанная на рис. , остается такой же. Первый пример появляется в разных контекстах задачи о повозке, но она имеет такую же математическую формулировку за исключением того, что целью является максимизация, а не минимизация суммы.
ПРИМЕР 2: Распределяем медицинские команды по странам Всемирный Совет Здравоохранения посвящен улучшению медицинской помощи в развивающихся странах. Он имеет 5 медицинских бригад ля размещения в 3 странах для улучшения их медицинского обслуживания, медицинского образования и учебных программ. Совет должен определить, сколько команд выделить для каждой из этих стран, чтобы максимизировать общую эффективность пяти команд. Команды должны быть сохранены, так что их количество, выделяемое для каждой страны, должно быть целым числом. Показатели деятельности используется в дополнительных человеко-лет жизни (равно увеличению продолжительности жизни в годах, умноженной на население страны). Таблица дает приблизительные дополнительные человеко-года жизни (умноженные на 1000) для каждой страны для каждого возможного распределения медицинских бригад. Какое распределение максимизирует меры производительности?
Формулировка. Эта задача требует принятия 3 взаимосвязанных решений, столько медицинских бригад нужно выделить для каждой страны. Нет фиксированной последовательности, страны рассматриваем как этапы. Переменные решения xn (n = 1, 2, 3) = число команд выделяемых для этапа (страны) n. Для определения состояния определяем: Каковы изменения от одного этапа к другому? С учетом решений, принятых на предыдущих этапах, как может быть описана ситуация статуса на текущем этапе? Какая информация о текущем состоянии дел необходима для определения оптимальной стратегии в будущем?
Основываясь на этих данных, подходящим выбором состояния системы будет: sn = число медицинских команд, доступное для размещения по оставшимся странам (n, . . . , 3). На этапе 1 (страна 1), где все 3 страны свободны для размещения, s 1 = 5. На этапе 2 или 3 (страна 2 или 3), sn = только 5 – число команд, размещенных на предыдущих стадиях, так что последовательность состояний будет s 1 = 5, s 2 = 5 - x 1, s 3 = s 2 - x 2. С процедурой динамического программирования поэтапного обратного решения, при решении на этапе 2 или 3, у нас еще нет решения для размещения на предыдущих этапах. Мы рассматриваем любое возможное состояние, в котором мы можем быть на этапе 2 или 3, sn = 0, 1, 2, 3, 4, или 5.
Рисунок показывает состояния, которые будут рассматриваться на каждом этапе. Звенья (отрезки) показывают возможные переходы состояний от одного этапа к другому при допустимом распределении медицинских бригад в соответствующей стране. Цифры рядом со звеньями - соответствующие дополнения в показатели производительности, эти цифры взяты из таблицы. С точки зрения этого рисунка, в целом задача состоит в нахождении пути из начального состояния 5 (начальный этап 1) в конечное состояние 0 (после этапа 3), который максимизирует сумму чисел вдоль пути. pi(xi) показатели производительности от распределения xi медицинских бригад в стране i, приведены в табл.
Цель: выбрать x 1, x 2, x 3 чтобы Максимизировать согласно а xi – неотрицательные переменные. fn(sn, xn) будет:
Данные для задачи о Всемирном Совете Здравоохранения
Задача о Всемирном Совете Здравоохранения, возможные состояния на каждом этапе, возможные переходы состояний, соответствующие дополнениям в показатели производительност и.
Максимум берется по xn 1, . . . , x 3 так что xi неотрицательные целые числа, для n = 1, 2, 3. Поэтому: (где f 4* равно нулю). Основные отношения: Базисная структура задачи о Всемирно Совете Здравоохранения.
Рекуррентные отношения связанных функций f 1*, f 2*, f 3* для этой задачи: Для последнего этапа(n = 3),
Solution: Начиная с последнего этапа (n = 3), значения p 3(x 3), приведены в последнем столбце таблицы и эти значения продолжают увеличиваться по мере движения вниз по таблице. При s 3 медицинских бригадах, все еще доступных для размещения в стране 3, максимум p 3(x 3) автоматически достигается by allocating allразмещением всех s 3 команд; поэтому x 3* = s 3 и f 3*(s 3) = p 3(s 3): Сейчас мы двигаемся назад, чтобы начать с предпоследнего этапа(n = 2). Решение x 2* потребует вычислений и сравнений f 2(s 2, x 2) для альтернативных значений x 2, x 2 0, 1, . . . , s 2. ПРи s 2 = 2 графически:
Диаграмма, соответствует Рис. за исключением того, что показаны все 3 возможные состояния на этапе 3. Если x 2 = 0, полученное состояние на этапе 3 будет s 2 - x 2 = 2 - 0 = 2, где x 2 = 1 ведет к состоянию 1, а x 2 = 2 ведет к состоянию 0. Соответствующие значения p 2(x 2) из страны 2 столбца таблицы указаны рядом со звеньями, а значения f 3*(s 2 - x 2) из n = 3 таблицы приведены рядом с узлами 3 тапа. Необходимые вычисления для s 2 = 2: Формула : f 2(2, x 2) = p 2(x 2) + f 3*(2 - x 2). p 2(x 2) дана в столбце 2 страны. f 3*(2 - x 2) дано в n = 3 таблицы (внизу предыдущей страницы). x 2 = 0: f 2(2, 0) = p 2(0) + f 3*(2) = 0 + 70 = 70. x 2 = 1: f 2(2, 1) = p 2(1) + f 3*(1) = 20 + 50 = 70. x 2 = 2: f 2(2, 2) = p 2(2) + f 3*(0) = 45 + 0 = 45. Цель: максимизация, x 2* = 0 или 1 при f 2*(2) = 70. Таким же образом работаем с возможными значениями s 2, получаем:
Движемся назад, чтобы решить исходную задачу, где начинаем с этапа 1 (n = 1). Единственное состояние, которое нужно рассмотреть – начальное состояние s 1 = 5: Так как размещение x 1 медицинских бригад в стране 1 ведет к состоянию 5 - x 1 на этапе 2, выбор x 1 = 0 ведет к нижнему правому узлу, x=1 ведет к следующему верхнему узлу, и вперед к верхнему узлу при x 1=5. Соответствующие значения p 1(x 1) из таблицы показаны рядом со звеньями.
Числа рядом с узлами, полученные из f 2*(s 2) столбца таблицы n = 2. Как и при n = 2, вычисления, необходимые для альтернативного значения переменной решения включают добавление значений соответствующих значений звеньев и узлов: Формула: f 1(5, x 1) = p 1(x 1) + f 2*(5 - x 1). p 1(x 1) дано в таблице столбца страны 1. f 2*(5 - x 1) дана в таблице n = 2. x 1 = 0: f 1(5, 0) = p 1(0) + f 2*(5) = 0 + 160 =160. x 1 = 1: f 1(5, 1) = p 1(1) + f 2*(4) = 45 + 125 = 170. ˸ x 1 = 5: f 1(5, 5) = p 1(5) + f 2*(0) = 120 + 0 = 120. Также вычисления для x 1 = 2, 3, 4 , подтверждают, что x 1* = 1 при f 1*(5) = 170: Таким образом, оптимальное решение содержит x 1* = 1, что дает s 2 = 5 - 1 = 4, так x 2* = 3, что дает s 3 = 4 - 3 = 1, так x 3* = 1. Так как f 1*(5) = 170, это распределение (1, 3, 1) of медицинских команд по трем странам в общем дает оценку в 170, 000 дополнительных человеко-лет жизни, что по меньшей мере на 5, 000 больше, чем при других распределениях. Эти результаты динамического программирования приведены на рис:
Решение задачи динамического программирования о Всемирном Совете Здравоохранения. Стрелки из состояния sn в состояние sn+1 показывают, что оптимальная стратегия решения from из состояния sn состоит в том, чтобы распределить (sn – sn+1) медицинских команд в страну n. Распределение медицинских бригад такимм образом - по выделенным стрелкам из начального состояние в конечное, дает оптимальное решение.
Распределенный Вид Задачи: Задача Распределения Усилий Обычный тип задачи динамического программирования: задача распределения усилий. (один из видов ресурсов нужно распределить по числу работ). Цель состоит в том, чтобы определить, как эффективно распределить усилия (ресурсы) по различными видами деятельности. Пример: Всемирный Совет Здравоохранения: ресурс - медицинские бригады, три вида деятельности - работа медицинской помощи в трех странах.
Предположения: Распределение ресурсов по работам является типичной задачей линейного программирования. Но есть ключевые различия между задачей распределения усилий и задачей линейного программирования: - Проблема распределения усилий включает только один ресурс (одно функциональное ограничение), тогда как задача линейного программирования может иметь дело с тысячами ресурсов. (Динамическое программирование может обработать чуть больше одного ресурса, как в задаче о заводе с тремя ресурсами, но оно становится неэффективным, когда количество ресурсов увеличивается).
- Проблема распределения усилий является более общей, чем линейное программирование. Рассмотрим четыре свойства линейного программирования: пропорциональность, адитивность, делимость, и определенность. Свойство пропорциональности регулярно нарушается практически во всех задачах динамического программирования, в том числе задаче распределения усилий (например, таблица нарушает пропорциональность). Делимость также часто нарушается, там где переменные решения должны быть целыми числами. Расчеты динамического программирования становятся все более сложными, когда имеет место делимость. Рассмотрим задачу распределения усилий с предположением об определенности, оно не является необходимым, и многих задач динамического программирования также нарушают это предположение. Единственным свойством, необходимым для задачи распределения усилий (или других задач динамического программирования) является адитивность (или ее аналог для функции, связанные с произведением). Это свойство необходимо для удовлетворения принципа оптимальности для динамического программирования.
Формулировка. Так как задачи распределения усилий включают распределение одного вида ресурсов на ряд работ, они всегда должны иметь следующие формулировки динамического программирования (где упорядочение работ произвольно): Этап n = работа n (n = 1, 2, . . . , N). xn = количество ресурсов, распределенных для работы n. Состояние sn = количество ресурсов, доступное для распределения по оставшимся работам (n, . . . , N). Причина определения состояния sn таким образом – в том, что количество ресурса, все еще доступное для распределения в точности является информацией о текущем состоянии дел (введенный этап n), которая необходима, чтобы принять решение о распределении по оставшимся работам. Когда система начинает на этап n в состоянии sn, выбор xn дает следующее состояние на этапе n + 1 при sn+1 = sn - xn:
• Структура диаграммы соответствует показанной ранее. Отличие будет в том, что показано их отношение между fn(sn, xn) и f*n 1(sn - xn), затем полученное рекуррентное отношение между функциями fn* and f*n+1. Эти отношения зависят от конкретной целевой функции для общей задачи. Структура следующего примера похожа на пример о Всемирном Совете Здравоохранения, но его рекуррентное отношение отличается тем, что целью является минимизация произведения для соответствующего этапа (используем вероятности), а состояние на следующем этапе определяется состоянием и стратегическим решением на текущем этапе.
Все примеры до сих пор имели дискретные переменные состояния sn на каждом этапе. Все были обратимы в том смысле, что процедура решения могла быть сдвинута назад или вперед поэтапно. (Последний вариант сводится к нумерации этапов в обратном порядке, а затем применению процедуры стандартным способом). Эта обратимость является общей характеристикой задачи распределения усилий (как примеры 2 и 3), так как работы (этапы) могут быть упорядочены любым способом. Следующий пример отличается в обоих отношениях. Вместо того, чтобы ограничиваться целыми значениями, переменная состояния sn на этапе n является непрерывной переменной, которая может принимать любые значения на определенных интервалах. Так как sn теперь имеет бесконечное число значений, уже невозможно рассмотреть каждое из ее возможных значений индивидуально. Скорее всего, решение для fn*(sn) и xn* должно быть выражено как функции sn. Этот пример не является обратимым, поскольку этапы в нем соответствуют периодам времени, поэтому процедура решения должна браться в обратном порядке. Пример, который требует больше одной переменной для о писания состояния на каждом этапе: (На Практ. )
ВЕРОЯТНОСТНОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Следующее этапа состояние t не полностью определяется состоянием и стратегическим решением на текущем этапе. Кроме того, есть вероятностное распределение того, каким будет следующее состояние, оно определяется состоянием и стратегическим решением на текущем этапе. (Основная структуры на рис. ). S = число возможных состояний на этапе n+1, состояния указаны справа, как 1, 2, . . , S. Система переходит в состояние i с вероятностью pi (i = 1, 2, …, S) данного состояния sn и решения xn на стадии n. Если система переходит в состояние i, Ci является дополнением n этапа в целевой функции.
Когда Рис. расширен, чтобы включить все возможные состояния и решения на всех этапах, он называется деревом решения (оно обеспечивает удобный способ обобщения различных возможностей). Из-за вероятностной структуры, отношения между fn(sn, xn) и f*n+1(sn+1) сложнее, чем для детерминированное динамическое программирование. Точная форма соотношения зависит от общей формы целевой функции.
Базисная структура вероятностного динамического программирования.
Цель: минимизировать ожидаемую сумму дополнения от отдельных этапов: fn(sn, xn) представляет минимальную ожидаемую сумму от этапа n и дальше, при том, что это состояние и стратегическое решение на этапе n - sn и xn: S fn(sn, xn) = ∑ pi[Ci + f*n+1(i)], i=1 при f*n+1(i) = min fn+1(i, xn+1), xn+1 Где эта минимизация проходит по допустимым значениям xn+1.
Пример 6 Определение допустимого уровня брака Компания HIT-AND-MISS получила заказ на поставку определенного типа товаров. Клиент указал такие строгие требования к качеству, что производитель может производить более одного экземпляра товара для получения приемлемого качества. Лишнее количество товаров, произведенных за производственный цикл называется допустимым уровнем брака. Включение в план допустимого уровня брака является обычной практикой при производстве по индивидуальному заказу (желательно).
Производитель оценивает, что каждый произведенный элемент этого типа будет приемлемого качества с вероятностью ½ и с дефектами (без возможности доработки) с вероятностью ½. Число товаров приемлимого качества, в партии размера L будет иметь биномиальное распределение (вероятность получения неприемлемых продуктов таких участков будет. Предельные издержки производства этого продукта оцениваются в $ 100 за товар (даже если он неисправен), а избыточные товары ничего не стоят. Стоимость установки $ 300 должна быть включена при настройке производства на этот продукт, и требуются новые настройки при этой же стоимости для каждого последующего запуска производства, если процедура проверки показывает, что в завершенной партии нет товаров приемлемого качества.
Формулировка: Этап n = запуск производства n (n = 1, 2, 3), xn = размер партии для этапа n, Состояние sn = требуемое число приемлемых товаров (1 или 0) в начале этапа n. На этапе 1, состояние s 1 = 1. Если получен по меньшей мере один приемлемый продукт, состояние меняется на sn = 0, после чего не нужно дополнительных затрат. Из-за поставленной цели, fn(sn, xn) = общая ожидаемая стоимость для этапа n, . . . , 3 если система начинает из состояния sn на этапе n, текущее решение - xn, оптимальное решение после, где fn*(0) = 0. Используя $100 в качестве денежной единицы, дополнение к стоимости на этапе n [K(xn) + xn] независимо от следующего этапа, где K(xn) функция xn такая, что Поэтому, для sn = 1, [где f 4*(1) определяется как 16, стоимость терминала. Если не получен приемлемый товар]. Сводка основных отношений дана на рис.
Базисная структура задаче о заводе У производителя есть время только для 3 -х производственных циклов. Если приемлемый продукт не получен к концу третьего цикла, стоимость потерянного дохода и штраф составят $ 1600. Цель: определить политику в отношении размера партии (1 + допустимый уровень брака) для необходимого производства , минимизирующую общую ожидаемую стоимость.
Рекуррентные отношения для вычисления динамического программирования: для n 1, 2, 3. Решение: Показаны расчеты с использованием этого рекурсивного отношения. Оптимальной политикой является производство двух продуктов при первом запуске производства, если ни один не является приемлемым, то производят два или три продукта во втором запуске производства, если ни один не является приемлемым, то производят три или четыре продукта на третьем производственном цикле. Общая ожидаемая стоимость этой политики производства составляет $ 675.
Заключения: Динамическое программирование - очень полезный метод для создания последовательности взаимосвязанных решений. Оно требует формулировки соответствующего рекуррентного отношения для каждой отдельной задачи. Оно обеспечивает большую вычислительную экономию, особенно, для больших задач. Например, если задача имеет 10 этапов с 10 состояниями и 10 возможных решений на каждом этапе, то обычный метод должен рассмотреть до 10 миллиардов комбинаций, в то время как при динамическом программировании необходимо составить не более тысячи расчетов (10 для каждого состояния на каждом этапе). Рассматриваем только динамическое программирование с конечным числом этапов. Общим видом модели для вероятностного динамического программирования, где этапы продолжают повторяться неопределенно, являются марковские процессы принятия решений.


