Предмет Динамического программирования
Ермакова Елизавета Вячеславовна
__________________
(подпись)
Научный руководитель
Д.э.н., профессор Павленков.М.Н.
__________________
(подпись)
Дзержинск
2013г.
Введение :
1.Введение
2. Предмет динамического программирования
3. Основные идеи вычислительного метода динамического программирования
4. Задачи динамического программирования, допускающие табличное задание рекуррентных соотношений
5. Примеры задач динамического программирования
6. Принцип оптимальности Беллмана.
7. Заключение
8. Список использованных источников
Введение
В настоящее время многие организации в своей деятельности сталкиваются с математическими моделями. Математическая модель – это система математических уравнений, неравенств, формул и различных математических выражений, описывающих поведение реального объекта, составляющих его характеристики взаимосвязи между ними. Процесс построения математической модели называется математическим моделированием. Моделирование и построение математической модели экономического объекта позволяют свести экономический анализ производственных процессов к математическому анализу и принятию эффективных решений. Для этого в планировании и управлении производством необходимо экономическую сущность исследуемого экономического объекта формализовать экономико-математической моделью, т. е. экономическую задачу представить математически.
Данная контрольная работа посвящена рассмотрению предмету динамического программирования, решению примеров .Динамическое программирование в широком смысле представляет собой оптимальное управление процессом, посредством изменения управляемых параметров на каждом шаге, и, следовательно, воздействуя на ход процесса, изменяя на каждом шаге состояние системы.
Предмет Динамического программирования
Динамическое программирование представляет собой математический аппарат, который подходит к решению некоторого класса задач путем их разложения на части, небольшие и менее сложные задачи. При этом отличительной особенностью является решение задач по этапам, через фиксированные интервалы, промежутки времени, что и определило появление термина динамическое программирование.
Следует заметить, что методы динамического программирования успешно применяются и при решении задач, в которых фактор времени не учитывается. В целом математический аппарат можно представить как пошаговое или поэтапное программирование.
Решение задач методами динамического программирования проводится на основе сформулированного Р. Э. Беллманом принципа оптимальности: оптимальное поведение обладает тем свойством, что каким бы ни было первоначальное состояние системы и первоначальное решение, последующее решение должно определять оптимальное поведение относительно состояния, полученного в результате первоначального решения. Из этого следует, что планирование каждого шага должно проводиться с учетом общей выгоды, получаемой по завершении всего процесса, что и позволяет оптимизировать конечный результат по выбранному критерию. Таким образом, динамическое программирование в широком смысле представляет собой оптимальное управление процессом, посредством изменения управляемых параметров на каждом шаге, и, следовательно, воздействуя на ход процесса, изменяя на каждом шаге состояние системы. В целом динамическое программирование представляет собой стройную теорию для восприятия и достаточно простую для применения в коммерческой деятельности при решении как линейных, так и нелинейных задач. Динамическое программирование является одним из разделов оптимального программирования. Для него характерны специфические методы и приемы, примениельные к операциям, в которых процесс принятия решения разбит на этапы (шаги). Методами динамического программирования решаются вариантные оптимизационные задачи с заданными критериями оптимальности, с определенными связями между переменными и целевой функцией, выраженными системой уравнений или неравенств. При этом, как
и в задачах, решаемых методами линейного программирования, ограничения могут быть даны в виде равенств или неравенств. Однако если в задачах линейного программирования зависимости между критериальной функцией
переменными обязательно линейны, то в задачах динамического программирования эти зависимости могут иметь еще и нелинейный характер. Динамическое программирование можно использовать как для решения задач, связанных с динамикой процесса или системы, так и для статических задач, связанных, например, с распределением ресурсов. Это значительно расширяет область применения динамического программирования для решения задач управления. А возможность упрощения процесса решения, которая достигается за счет ограничения области и количества, исследуемых при переходе к очередному этапу вариантов, увеличивает достоинства этого комплекса методов.
3. Основные идеи вычислительного метода динамического программирования
Некоторые задачи математического программирования обладают специфическими особенностями, которые позволяют свести их решение к рассмотрению некоторого множества более простых «подзадач». В результате вопрос о глобальной оптимизации некоторой функции сводится к поэтапной оптимизации некоторых промежуточных целевых функций. В динамическом программировании* рассматриваются методы, позволяющие путем поэтапной (многошаговой) оптимизации получить общий (результирующий) оптимум.
* Динамическое программирование как научное направление возникло и сформировалось в 1951-1953 гг. благодаря работам Р. Беллмана и его сотрудников.
Обычно методами динамического программирования оптимизируют работу некоторых управляемых систем, эффект которой оцениваетсяаддитивной, или мультипликативной, целевой функцией. Аддитивной называется такая функция нескольких переменных f(х1, x2, ...,хn), значение которой вычисляется как сумма некоторых функций fj, зависящих только от одной переменной хj:
Слагаемые аддитивной целевой функции соответствуют эффекту решений, принимаемых на отдельных этапах управляемого процесса. По аналогии, мультипликативнаяфункция распадается на произведение положительных функций различных переменных:
Поскольку логарифм функции типа (5.2) является аддитивной функцией, достаточно ограничиться рассмотрением функций вида (5.1).
Изложим сущность вычислительного метода динамического программирования на примере задачи оптимизации
при ограничениях
Отметим, что в отличие от задач, рассмотренных в предыдущих главах, о линейности и дифференцируемости функций fj(xj) не делается никаких предположений, поэтому применение классических методов оптимизации (например, метода Лагранжа) для решения задачи (5.3)-(5.4) либо проблематично, либо просто невозможно.
Содержательно задача (5.3)-(5.4) может быть интерпретирована как проблема оптимального вложения некоторых ресурсов j, приводимых к единой размерности (например, денег) с помощью коэффициентов aj, в различные активы (инвестиционные проекты, предприятия и т. п.), характеризующиеся функциями прибыли fj, т. е. такого распределения ограниченного объема ресурса (b), которое максимизирует суммарную прибыль. Представим ситуацию, когда она решается последовательно для каждого актива. Если на первом шаге принято решение о вложении вn-й актив xn единиц, то на остальных шагах мы сможем распределить b-anxn единиц ресурса. Абстрагируясь от соображений, на основе которых принималось решение на первом шаге (допустим, мы по каким-либо причинам не могли на него повлиять), будет вполне естественным поступить так, чтобы на оставшихся шагах распределение текущего объема ресурса произошло оптимально, что равнозначно решению задачи
при ограничениях,
Очевидно, что максимальное значение (5.5) зависит от размера распределяемого остатка, и если оставшееся количество ресурса обозначить через ξ, то величину (5.5) можно выразить как функцию от ξ:
где индекс п-1 указывает на оставшееся количество шагов. Тогда суммарный доход, получаемый как следствие решения, принятого на первом шаге, и оптимальных решений, принятых на остальных шагах, будет
Если бы имелась возможность влиять на xn , то мы для получения максимальной прибыли должны были бы максимизировать Ωn по переменной xn , т. е. найти Λn(b) и фактически решить задачу:
В результате мы получаем выражение для значения целевой функции задачи при оптимальном поэтапном процессе принятия решений о распределении ресурса. Оно в силу построения данного процесса равно глобальному оптимуму целевой функции
т. е. значению целевой функции при одномоментном распределении ресурса.
Если в выражении (5.9) заменить значения b на ξ, и п на k, то его можно рассматривать как рекуррентную формулу, позволяющую последовательно вычислять оптимальные значения целевой функции при распределении объема ресурса ξ за k шагов:
Значение переменной xk , при котором достигается рассматриваемый максимум, обозначим k (ξ).
При k = 1 формула (5.11) принимает вид
т. е. допускает непосредственное вычисление функций Λ1(ξ) и 1(ξ).
Воспользовавшись (5.12) как базой рекурсии, можно с помощью (5.11) последовательно вычислить Λk(ξ) и k(ξ), k∊2:n. Положив на последнем шаге ξ = b, в силу (5.9), найдем глобальный максимум функции (5.3), равный Λn(b), и компоненту оптимального плана хn* = n(b). Полученная компонента позволяет вычислить нераспределенный остаток на следующем шаге при оптимальном планировании: ξ= b – аnх*n , и, в свою очередь, найти х*n-1= n-1(ξn-1). В результате подобных вычислений последовательно будут найдены все компоненты оптимального плана.
Таким образом, динамическое программирование представляет собой целенаправленный перебор вариантов, который приводит к нахождению глобального максимума. Уравнение (5.11), выражающее оптимальное решение на k-м шаге через решения, принятые на предыдущих шагах, называется основным рекуррентным соотношением динамического программирования. В то же время следует заметить, что описанная схема решения при столь общей постановке задачи имеет чисто теоретическое значение, так как замыкает вычислительный процесс на построение функций Λk(ξ) (k∊1:n), т. е. сводит исходную задачу (5.3)—(5.4) к другой весьма сложной проблеме. Однако при определенных условиях применение рекуррентных соотношений может оказаться весьма плодотворным. В первую очередь это относится к задачам, которые допускают табличное задание функций Λk(ξ).
Принцип оптимальности Беллмана:
Еще раз подчеркнем, что смысл подхода, реализуемого в динамическом программировании, заключен в замене решения исходной многомерной задачи последовательностью задач меньшей размерности.
Перечислим основные требования к задачам, выполнение которых позволяет применить данный подход:
- объектом исследования должна служить управляемая система (объект) с заданными допустимыми состояниями и допустимыми управлениями;
- задача должна позволять интерпретацию как многошаговый процесс, каждый шаг которого состоит из принятия решения о выборе одного из допустимых управлений, приводящих к изменению состояния системы
- задача не должна зависеть от количества шагов и быть определенной на каждом из них;
- состояние системы на каждом шаге должно описываться одинаковым (по составу) набором параметров
- последующее состояние, в котором оказывается система после выбора решения на k-м. шаге, зависит только от данного решения и исходного состояния к началу k-го шага. Данное свойство является основным с точки зрения идеологии динамического программирования и называется отсутствием последействия.
Рассмотрим вопросы применения модели динамического программирования в обобщенном виде. Пусть стоит задача управления некоторым абстрактным объектом, который может пребывать в различных состояниях. Текущее состояние объекта отождествляется с некоторым набором параметров, обозначаемым в дальнейшем ξ и именуемый вектором состояния. Предполагается, что задано множество Ξ всех возможных состояний. Для объекта определено также множество допустимых управлений (управляющих воздействий) X, которое, не умаляя общности, можно считать числовым множеством. Управляющие воздействия могут осуществляться в дискретные моменты времени k(k∊1:n), причем управленческое решение заключается в выборе одного из управлений xk∊Х. Планом задачи или стратегией управления называется вектор х = (х1, х2, .., xn-1), компонентами которого служат управления, выбранные на каждом шаге процесса. Ввиду предполагаемого отсутствия последействия между каждыми двумя последовательными состояниями объекта ξk и ξk+1 существует известная функциональная зависимость, включающая также выбранное управление: ξk+1 = φk(xk , ξk), k∊1:п-1. Тем самым задание начального состояния объекта ξ1∊Ξ и выбор плана ходнозначно определяют траекторию поведения объекта, как это показано на рис. 5.1.
Эффективность управления на каждом шаге k зависит от текущего состояния ξk , выбранного управления xk и количественно оценивается с помощью функций fk(хk, ξk), являющихся слагаемыми аддитивной целевой функции, характеризующей общую эффективность управления объектом. (Отметим, что в определение функции fk(хk, ξk) включается область допустимых значений хk , и эта область, как правило, зависит от текущего состояния ξk .) Оптимальное управление, при заданном начальном состоянии ξ1 , сводится к выбору такого оптимального плана х*, при котором достигается максимум суммы значений fk на соответствующей траектории.
Основной принцип динамического программирования заключается в том, что на каждом шаге следует стремиться не к изолированной оптимизации функции fk(хk, ξk), а выбирать
оптимальное управление хk* в предположении об оптимальности всех последующих шагов. Формально указанный принцип реализуется путем отыскания на каждом шаге k условных оптимальных управлений k(ξ), ξ∊Ξ, обеспечивающих наибольшую суммарную эффективность начиная с этого шага, в предположении, что текущим является состояние ξ.
Обозначим Λk(ξ) максимальное значение суммы функций fk на протяжении шагов от k до п (получаемое при оптимальном управлении на данном отрезке процесса), при условии, что объект в начале шага k находится в состоянии ξ . Тогда функции Λk(ξ) должны удовлетворять рекуррентному соотношению:
где ξk+1 = φk(xk, ξ)
Соотношение (5.14) называют основным рекуррентным соотношением динамического программирования. Оно реализует базовый принцип динамического программирования, известный также как принцип оптимальности Беллмана:
F Оптимальная стратегия управления должна удовлетворять следующему условию: каково бы ни было
начальное состояние ξk на k-м шаге и выбранное на этом шаге управление хk,, последующие управления (управленческие решения) должны быть оптимальными по отношению к состоянию ξk+1 = φk(xk, ξk), получающемуся в результате решения, принятого на шаге k.
Основное соотношение (5.14) позволяет найти функции Λk(ξ) только в сочетании с начальным условием, каковым в нашем случае является равенство
Сравнение рекуррентной формулы (5.14) с аналогичными соотношениями в рассмотренных выше примерах указывает на их внешнее различие. Это различие обусловлено тем, что в задаче распределения ресурсов фиксированным является конечное состояние управляемого процесса. Поэтому принцип Беллмана применяется не к последующим, а к начальным этапам управления, и начальное соотношение имеет вид
Важно еще раз подчеркнуть, что сформулированный выше принцип оптимальности применим только для управления объектами, у которых выбор оптимального управления не зависит от предыстории управляемого процесса, т. е. от того, каким путем система пришла в текущее состояние. Именно это обстоятельство позволяет осуществить декомпозицию задачи и сделать возможным ее практическое решение.
В то же время, говоря о динамическом программировании как о методе решения оптимизационных задач, необходимо отметить и его слабые стороны. Так, в предложенной схеме решения задачи (5.3)-(5.4) существенным образом используется тот факт, что система ограничений содержит только одно неравенство, и, как следствие, ее состояние задается одним числом — нераспределенным ресурсом ξ . При наличии нескольких ограничений состояние управляемого объекта на каждом шаге характеризуется уже набором параметров ξ1, ξ2, ..., ξm , и табулировать значения функций Λk (ξ1, ξ2, ..., ξm) необходимо для многократно большего количества точек. Последнее обстоятельство делает применение метода динамического программирования явно нерациональным или даже просто невозможным. Данную проблему его основоположник Р. Беллман эффектно назвал «проклятием многомерности». В настоящее время разработаны определенные пути преодоления указанных трудностей. Подробную информацию о них можно найти в специальной литературе [4, 5].
Примеры задач динамического программирования:
Задача о найме работников. Приступим к рассмотрению вопросов применения методов динамического программирования в конкретных экономико-математических моделях. Отдельно отметим, что данные вычислительные схемы, вообще говоря, достаточно часто используются для решения некоторых задач, которые уже были затронуты в других главах. Это, прежде всего, задача о ранце, задача о кратчайшем пути, задачи транспортного типа.
Одним из важнейших классов задач, для которых применение динамического программирования оказывается плодотворным, являются задачи последовательного принятия решений. Их особенностью является то, что искомые переменные х1, x2, .., хk ,... должны определяться в строгой временной последовательности и не должны меняться местами. В качестве примера опишем так называемую задачу о найме работников (задачу об использовании рабочей силы).
В данной задаче рассматривается некоторый экономический объект (фирма, магазин, завод и т. п.), функционирующий в течение конечного числа периодов, обозначаемых номерами k (k ∊ l:n). Каждый период k характеризуется нормативной потребностью в определенном количестве однотипных работников mk. Тот же объем работ может быть выполнен другим количеством сотрудников ξk, что, однако, влечет дополнительные затраты либо за счет нерационального использования рабочей силы, либо ввиду повышения оплаты за интенсивный труд. Размеры этих дополнительных издержек описываются функциями gk (ξk - mk), где (ξk - mk) — отклонение фактической численности работающих ξk , от планово необходимой mk , причем gk (0)=0. Управленческое решение на шаге k заключается в выборе величины изменения числа сотрудников хk∊Z, что однозначно определяет количество работающих в течение следующего периода: ξk+1 = ξk+хk. Затраты по изменению количества работников (найму и увольнению) при переходе от периода k к периоду (k+1) задаются функцией uk (хk) , где также uk (0)=0. Тогда суммарные издержки, вызванные принятым на шаге k решением, характеризуются значением функции
План задачи (стратегия управления) х = (x1, ..., хn-1, 0) заключается в выборе поэтапных изменений количества работников, а его суммарная эффективность описывается аддитивной функцией
На основе сформулированной модели ставится задача минимизации целевой функции (издержек) (5.15). Добавим, что постановка задачи не будет корректной, если не задать начальное условие на количество работников. Существуют две модификации данной задачи, определяемые типом начального условия: в первом случае задается исходное значение на первом этапе m1, а во втором — требуемое количество в n-м периодеmn .
Рассмотрим первый случай. Поскольку фиксированным является начальное количество работников и, напротив, ничего не известно о том, каким это количество должно быть на последнем этапе, то рассмотрение процесса принятия решений удобнее начать с конца. Оптимальное управление на последнем этапе п по условию равно х*n = n(ξ)=0, поэтому минимальные издержки полностью определяются количеством работников в последнем периоде:
Для остальных предшествующих шагов основное рекуррентное соотношение примет вид
где Λk(ξ) — минимальные затраты с k-го по п-й периоды, в предположении, что количество работников в k-й период равно ξ. Точки л(ξ), в которых достигаются минимумы (5.17), определяют условное оптимальное управление на каждом шаге.
Последовательно определяя л(ξ) и дойдя до этапа 1, мы сможем найти безусловное оптимальное управление x1*из того условия, что на начало первого периода численность работников должна составлять ξ1* = m1 , a именно
Остальные компоненты оптимального плана хk* и состояния ξk*, образующие оптимальную траекторию, последовательно находятся по рекуррентным формулам
после чего не составляет труда вычислить оптимальное значение целевой функции (5.15).
Остановимся теперь на втором случае, когда задано финальное состояние управляемого объекта, т. е. желаемое количество работников на последнем периоде ξn*= mn . Очевидно, что в данной ситуации следует поступить с точностью «до наоборот» и рассмотреть процесс принятия решений от начала к концу. Наилучшее условное управление на первом шаге 1(ξ) будет найдено в процессе вычисления функции
где состояние ξ ≥0 является возможным количеством работников на начальном шаге. Соответственно, основное рекуррентное соотношение выразит минимальные издержки вплоть до k-го периода через таковые для предыдущих периодов (с первого по (k-1)-й) при условии, что численность работников в k-й период будет равна ξ:
Попутно будут найдены функции k(ξ), k∊2:n, определяющие условные оптимальные управления. На последнем периоде, в силу начального условия, ξn*= mn. Отсюда путем последовательного решения рекуррентных уравнений могут быть найдены оптимальные численности работников ξ*k и безусловные оптимальные управления:
В заключение, как и в первом случае, подсчитывается минимальная величина издержек.
Обобщая изложенные схемы решения, можно прийти к выводу:
^ При использовании алгоритмов динамического программирования, если задано начальное состояние управляемой системы, то задача решается вобратном направлении, а если конечное, тo — в прямом. Наконец, если заданы как начальное, так и конечное состояния, то задача существенно усложняется. (В качестве компромисса в этом случае можно отказаться от оптимизации на первом или последнем этапе.)
Продемонстрируем процесс решения задачи о найме работников на конкретном примере:
Для функционирования некоторого предприятия в течение четырех месяцев (нумеруемых от 1 до 4) по нормам требуются следующие количества работников одинаковой квалификации:
причем перед началом первого месяца (в нулевом месяце) фактически имеется ξ0 = 2 сотрудников. Администрация планирует в конце каждого месяца k (кроме последнего) корректировать число работающих на величину xk , k∊0:4, х4 = 0. На прием одного сотрудника необходимо затратить 9 у. е., а на увольнение — 6 у. е. Предполагается, что расходы на содержание избыточного работника составляют 8 у. е., а в случае нехватки персонала приходится нести затраты в размере 12 у. е. за каждое вакантное место.
Требуется найти оптимальные значения приращений численности работающих в конце каждого из первых трех месяцев, при которых суммарные издержки за весь рассматриваемый период будут минимальными.
В начале решения запишем в аналитической форме функции издержек на прием-увольнение сотрудников (и), а также на содержание ненормативного штата (g). С этой целью введем функции
Оценки эффективности управления на каждом шаге имеют вид:
Поскольку в поставленной задаче задано начальное условие ξ*0 = 2, ее решение начинается с конца, и, следовательно, будут применяться рекуррентные соотношения (5.17). С технической точки зрения будет удобно на каждом шаге составлять две таблицы значений: функции издержек, получаемых начиная с текущего шага в зависимости от текущего состояния и управления,
и функции минимальных издержек в зависимости от текущего состояния
Для сокращения объема табулируемых значений можно воспользоваться свойством выпуклости функции Ωk (xk , ξ), вытекающим из выпуклостиf и g. Из выпуклости функции Ωk (xk , ξ) следует, что заполнять таблицу ее значений необходимо лишь до тех пор, пока они уменьшаются, т. е. можно остановиться, как только очередное значение оказывается больше предыдущего. Отметим, что подобные приемы очень широко используются в динамическом программировании. Разумеется, иллюстрируемые методы не рассчитаны на ручной счет, поскольку связаны с очень большим объемом рутинных вычислений. Ради краткости ниже приведены только фрагменты таблиц, содержащие интересующие нас значения.
Итерация 1. Полагаем k=4. На данном этапе функция состояния Λ4(ξ) может быть найдена непосредственно, если учесть, что x4*=0 и u(0)=0:
Таблица значений данной функции и условные оптимальные управления имеют вид
Итерация 2. Полагаем k=3. Предварительно заполним таблицу значений функции Ω3(x3, ξ) для достаточно большого множества аргументов согласно формуле:
Выбирая минимальные по х3 значения Ω3(x3, ξ) составим таблицу Λ3(ξ) и соответствующие значения условных оптимальных управлений 3(ξ):
Итерация 3. Полагаем k=2. Так же, как на предыдущей итерации, заполним таблицу значений функции Ω2(x2, ξ) согласно формуле:
Выбирая минимальные по х2значения Ω2(x2 , ξ), составим таблицу Λ1(ξ) и соответствующие значения условных оптимальных управлений 2(ξ):
Итерация 4. Полагаем k=1. Аналогично предыдущему, заполним таблицу значений функции Ω1(x1, ξ) согласно формуле:
Выбирая минимальные по х1, значения Ω1(x1, ξ), составим таблицу Λ1(ξ) и соответствующие значения условных оптимальных управлений 1(ξ):
Итерация 5. На последней итерации, в связи с наличием начального условия ξ*0 = 2, достаточно вычислить
и найти 0(2) как точку минимума Ω0(x0, 2) . Простые вычисления показывают, что минимум
достигается при x0(2) = 1.
Следовательно, x*0 = 0(2)=1, после чего обратным ходом последовательно вычисляются оптимальные управления и оптимальные состояния (оптимальная траектория):
Итак, результаты расчета свидетельствуют, что при заданной системе расценок в третьем месяце выгоднее не брать 5-го работника, а компенсировать его отсутствие дополнительными выплатами за сверхурочную работу имеющимся сотрудникам.
Заключение
Динамическое программирование связано с возможностью представления процесса управления в виде цепочки последовательных действий, или шагов, развернутых во времени и ведущих к цели. Таким образом, процесс управления можно разделить на части и представить его в виде динамической последовательности и интерпретировать в виде пошаговой программы, развернутой во времени. Это позволяет спланировать программу будущих действий. Поскольку вариантов возможных планов–программ множество, то необходимо из них выбрать лучший, оптимальный по какому-либо критерию в соответствии с поставленной целью.
В контрольной работе основное внимание уделено основным идеямвычислительного метода динамического программирования,
Задачам динамического программирования, допускающие табличное задание рекуррентных соотношений
В заключение можно отметить, что методы динамического программирования успешно применяются и при решении задач, в которых фактор времени не учитывается.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|