ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

advertisement
ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Динамическое программирование как научное направление возникло и
сформировалось в 1951-1953 гг. благодаря работам Р. Беллмана.
Некоторые задачи математического программирования позволяют свести их
решение к рассмотрению множества более простых «подзадач».
В результате вопрос о глобальной оптимизации некоторой функции сводится к
поэтапной оптимизации некоторых промежуточных целевых функций.
Обычно методами динамического программирования оптимизируют работу
некоторых управляемых систем, эффект которой оценивается аддитивной, или
мультипликативной, целевой функцией.
Аддитивной называется функция нескольких переменных f(х1, x2, ...,хn),
значение которой вычисляется как сумма некоторых функций fj, зависящих только
от одной
Слагаемые аддитивной целевой функции соответствуют эффекту решений,
принимаемых на отдельных этапах управляемого процесса.
По аналогии, мультипликативная функция распадается
на произведение положительных функций различных
переменных:
П
fj(xj) является аддитивной функцией,
Поскольку логарифм функции типа
достаточно ограничиться ee рассмотрением.
Общая сущность вычислительного метода динамического программирования
В отличие от задач, рассмотренных ранее, о линейности и дифференцируемости
функций fj(xj) не делается никаких предположений, поэтому применение
классических методов оптимизации для решения задачи либо проблематично,
либо просто невозможно.
Основные требования к задачам, выполнение которых позволяет применить
данный подход:
объектом исследования должна служить управляемая система (объект) с
заданными допустимыми состояниями и допустимыми управлениями;
задача должна позволять интерпретацию как многошаговый процесс,
каждый шаг которого состоит из принятия решения о выборе одного из
допустимых управлений, приводящих к изменению состояния системы;
задача не должна зависеть от количества шагов и быть определенной на
каждом из них;
состояние системы на каждом шаге должно описываться одинаковым (по
составу) набором параметров;
последующее состояние, в котором оказывается система после выбора
решения на k-м. шаге, зависит только от данного решения и исходного
состояния к началу k-го шага. Данное свойство является основным с точки
зрения идеологии динамического программирования и называется
отсутствием последействия.
Содержательно задача ДинП - проблема оптимального вложения некоторых
ресурсов j (объема ресурсов b), приводимых к единой размерности
коэффициентами aj, в различные активы характеризующиеся функциями
прибыли fj.
Пусть решается задача последовательно для каждого актива.
1-шаг: принято решение о вложении в n-й актив xn единиц, на остальных шагах
можно распределить только b-a(n)x(n) единиц ресурса.
2-шаг: на оставшихся шагах распределение текущего объема ресурса оптимально
если
(1)
Максимальное значение (1) зависит от размера распределяемого остатка, и
если оставшееся количество ресурса обозначить через ξ, то величину (1) можно
выразить как функцию от ξ:
где индекс n-1 указывает на оставшееся количество шагов.
Тогда суммарный доход, получаемый как следствие решения, принятого на первом
шаге, и оптимальных решений, принятых на остальных шагах, будет
Если бы имелась возможность влиять на xn , то для получения максимальной
прибыли необходимо бы максимизировать Ωn по переменной xn , т. е. найти Λn(b)
и фактически решить задачу:
(2)
Алгоритм прямой прогонки
Если в выражении (2) заменить
значения b на ξ, и n на k, то его можно
рассматривать
как
рекуррентную
формулу вычисления оптимальные
значения целевой функции при
распределении объема ресурса ξ за k
шагов:
Принцип оптимальности Беллмана
Основной принцип динамического программирования заключается в том, что
на каждом шаге следует стремиться не к изолированной оптимизации
функции fk(хk, ξk), а выбирать оптимальное управление хk* в предположении
об оптимальности всех последующих шагов.
Обозначим Λk(ξ) максимальное
значение суммы функций fk на
протяжении шагов от k до n, при
условии, что объект в начале шага
k находится в состоянии ξk. Тогда
функции
Λk(ξ)
должны
удовлетворять
рекуррентному
соотношению:
начальное условие
где ξk+1 = φk(xk, ξk)
Алгоритм обратной прогонки
ПРИМЕР 1.
Необходимо выбрать кратчайший
путь между двумя городами.
Алгоритм прямой прогонки
1-шаг:
2-шаг:
3-шаг:
Решение: 1—> 4—> 5—> 7
Алгоритм обратной прогонки (ПРИМЕР 1)
3-шаг:
2-шаг:
Решение: 1—> 4—> 5—> 7
1-шаг:
Оптимальная стратегия управления должна удовлетворять следующему
условию: каково бы ни было начальное состояние ξk на k-м шаге и выбранное
на этом шаге управление хk, последующие управления (управленческие
решения) должны быть оптимальными по отношению к состоянию
ξk+1 = φk(xk, ξk),
получающемуся в результате решения, принятого на шаге k.
ПРИМЕР 2. Для двух предприятий выделено a единиц средств. Как
распределить все средства в течение 4 лет, чтобы доход был наибольшим,
если известно, что доход от x единиц средств, вложенных в первое
предприятие, равен f1(x), а доход от y
единиц средств, вложенных во
второе предприятие, равен f2(y). Остаток средств к концу года составляет
g1(x) для первого предприятия и g2(x)для второго предприятия. Задачу
решить методом динамического программирования.
Обозначим
ak =xk+yk - средства, которые распределяются на k–ом шаге как сумма
средств по предприятиям.
Суммарный доход от обоих предприятий на k –ом шаге:
Остаток средств от обоих предприятий на k –ом шаге:
Обозначим z*k(ak) - максимальный доход, полученный от распределения средств
ak между двумя предприятиями с k -го шага до конца ассматриваемого периода.
Рекуррентные соотношения Беллмана для этих функций
4-й шаг. Оптимальный доход равен x4*=a4:
3-й шаг. Оптимальный доход равен x3*=0 :
2-й шаг. Оптимальный доход равен x2*=0 :
1-й шаг. Оптимальный доход равен x1*=0 :
Количественное распределение средств по годам:
распределение средств
При таком распределении средств за
4 года будет получен доход, равный
ПРИМЕР 3
Торговой фирме
выделяется банковский кредит –
С=100
млн.
ден.ед.
Он
распределяется
между
4
филиалами. Кредитные средства
вложенные в филиал увеличивают
товарооборот
на
gn(x).
Распределение кредитных средств
между
филиалами
задано
таблицей
Результат вычислений следующий:
На основании расчетных таблиц 1,2,3,4 составляем сводную таблицу 5
{X1*=60 (f1(60)=45)},
Результат распределения
100
млн.
ден.
ед.
следующий.
{X2*=0 (f2(60)=45)},
{X3*=0 (f3(60)=45)},
{X4*=40 (f4(100)=81)}
Максимальный прирост товарооборота представляет величину 81 ден.ед.
ПРИЛОЖЕНИЯ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ
Задача о загрузке — это задача о рациональной загрузке некоторого объема,
которое имеет ограничения по объему или грузоподъемности.
Каждый
помещенный в объем объект приносит определенную прибыль. Задача состоит
в определении загрузки такими объектами, которые приносят наибольшую
суммарную прибыль.
где mi, — количество предметов i-го
наименования, подлежащих загрузке,
ri — прибыль, которую приносит один
загруженный
предмет
i-го
наименования, wi — вес одного
предмета 1-го наименования.
Задача планирования рабочей силы. При выполнении некоторых проектов число
рабочих, необходимых для реализации какого-либо проекта, регулируется путем
их найма и увольнения. Ннаем и увольнение рабочих связано с дополнительными
затратами. Необходимо определить, каким образом должна регулироваться
численность рабочих в период реализации проекта.
1. потребность в рабочей силе на протяжении i-й недели составит Ьi, рабочих;
2. хi, — количество работающих на протяжении i-й недели;
3. Затраты двух видов:
 C1(xi- bi) — затраты, связанные с необходимостью содержать избыток хi-bi
рабочей силы и
 C2(xi- x(i-1)) — затраты, связанные с необходимостью дополнительного найма
x(i)- x(i-1) рабочих.
Задача замены оборудования. В начале каждого года принимается решение
либо об эксплуатации механизма еще один год, либо о замене его новым.
r(t) — прибыль от эксплуатации t-летнего механизма на протяжении года
c(t) — затраты на его обслуживание за этот же период.
s(t) — стоимость продажи механизма, который эксплуатировался t лет.
L — cтоимость приобретения нового механизма остается неизменной на
протяжении всех лет.
Download