 
        
        лекции рогов / Рогов_лек11_Дин_прог
.doc§2. Динамическое программирование
Динамическое программирование (ДП) — метод оптимизации, приспособленный к операциям, в которых процесс принятия решения может быть разбит на этапы (шаги).
Пусть U(U1, U2, ..., Un) — управление, переводящее систему S из состояния S0 в состояние Sn . Обозначим через Sk состояние системы после k-го шага управления. Получаем последовательность состояний
                

Показатель эффективности рассматриваемой управляемой операции — целевая функция — зависит от начального состояния и управления:
 
(1)
Сделаем несколько предположений.
1. Состояние Sk системы в конце k-го шага зависит только от предшествующего состояния Sk-1 и управления на k-м шаге Uk (и не зависит от предшествующих состояний и управлений). Это требование называется “отсутствием последействия”. Сформулированное положение записывается в виде уравнений:
  
                                                                     
       
которые называются уравнениями состояний.
2. Целевая функция (1) является аддитивной от показателя эффективности каждого шага. Обозначим показатель эффективности k-го шага через
  
   
 
Тогда
З адача
пошаговой оптимизации (задача ДП)
формулируется так: определить такое
допустимое управление U,
переводящее систему S
из состояния S0
в состояние
Sn
, при котором целевая функция
адача
пошаговой оптимизации (задача ДП)
формулируется так: определить такое
допустимое управление U,
переводящее систему S
из состояния S0
в состояние
Sn
, при котором целевая функция                
 
принимает наибольшее (наименьшее) значение.
Особенности модели ДП:
1. Задача оптимизации интерпретируется как n-шаговый процесс управления.
2. Целевая функция равна сумме целевых функций каждого шага.
3. Выбор управления на k-м шаге зависит только от состояния системы к этому шагу, не влияет на предшествующие шаги (нет обратной связи).
4. Состояние Sk после k-го шага управления зависит только от предшествующего состояния Sk-1 и управления Uk (отсутствие последействия).
5. На каждом шаге управление Uk зависит от конечного числа управляющих переменных, а состояние Sk — от конечного числа параметров.
Принцип оптимальности Беллмана:
Принцип оптимальности: каково бы ни было состояние S системы в результате какого-либо числа шагов, на ближайшем шаге нужно выбирать управление так, чтобы оно в совокупности с оптимальным управлением на всех последующих шагах приводило к оптимальному выигрышу на всех оставшихся шагах, включая данный (формулировка Вентцель).
Основное требование — процесс управления должен быть без обратной связи, т.е. управление на данном шаге не должно оказывать влияния на предшествующие шаги.
Уравнения Беллмана
Вместо исходной задачи ДП с фиксированным числом шагов n и начальным состоянием S0 рассмотрим последовательность задач, полагая последовательно n=1, 2, ... при различных S — одношаговую, двухшаговую и т.д., — используя принцип оптимальности.
На каждом шаге любого состояния системы Sk-1 решение Uk нужно выбирать "с оглядкой", так как этот выбор влияет на последующее состояние Sk и дальнейший процесс управления, зависящий от Sk. Это следует из принципа оптимальности.
Согласно принципу оптимальности, Un нужно выбирать так, чтобы для любых состояний Sn-1 получить максимум целевой функции на этом шаге.
 
 
Решая задачу на двух последних шагах, получим:
                        

Для вычисления условного максимума на n – k+1 последних шагах получим уравнение:
  
                       
Процесс решения уравнений (1) и (3) называется условной оптимизацией. В результате условной оптимизации получаются две последовательности:
  
                                             
  
           
  Используя эти
последовательности, можно найти решение
задачи ДП при данных n
и
 Используя эти
последовательности, можно найти решение
задачи ДП при данных n
и 
 .
.
  
 -
 условный максимум целевой функции за
n
шагов при условии, что к началу первого
шага система была в состоянии S0,
т.е.
-
 условный максимум целевой функции за
n
шагов при условии, что к началу первого
шага система была в состоянии S0,
т.е.     
 
При фиксированном S0 получаем:
 
Далее находим:
Получаем оптимальное решение задачи динамического программирования:
     
 .
.
Пример: задача о прокладке трубопровода.
Требуется проложить трубопровод между двумя пунктами A и B таким образом, чтобы суммарные затраты на его сооружение были минимальные.
Решение. Разделим расстояние между пунктами A и B на участки (шаги). На каждом шаге можно двигаться либо строго на восток (по оси X), либо строго на юг (вдоль оси Y). Путь от A до B будет представлять ступенчатую ломаную линию, отрезки которой параллельны одной из координатных осей. Затраты на сооружение каждого отрезка трубопровода считаем известными из рисунка:
      

Разделим расстояние от A до B на 2 части в каждом направлении, как показано на рисунке. Путь рассматриваем как систему, перемещающуюся под управлением из начального состояния A в конечное состояние B. Для каждого из состояний системы (вершин отрезков) найдем условное оптимальное управление − такое, чтобы стоимость всех оставшихся шагов до конца пути была минимальна. Условную оптимизацию проводим от точки B к точке A.
 В точку  B
можно попасть из  
 или из
или из 
 .
Стоимость пути  B
.
Стоимость пути  B равна 7, условное управление −  по оси
Y
(на юг), Стоимость пути  B
равна 7, условное управление −  по оси
Y
(на юг), Стоимость пути  B равна 6, условное управление −  по оси
X
(на восток).  В рассмотренных узлах
запишем стоимость строительства до
точки B.
Направление движения указываем стрелками.
равна 6, условное управление −  по оси
X
(на восток).  В рассмотренных узлах
запишем стоимость строительства до
точки B.
Направление движения указываем стрелками.
 
Условную оптимизацию проведем для всех остальных узлов, получим рисунок:
        

Минимальные затраты составляют 6 + 4 + 5 + 7 = 22 (условных единицы).
Оптимальное управление U = ( в, ю, в, ю).
Динамические модели в экономике
Модели динамического программирования широко применяются в экономике при планировании распределения дефицитных капитальных вложений между возможными направлениями их использования; при разработке правил управления запасами; при составлении календарных планов текущего и капитального ремонта оборудования; при разработке долгосрочных правил замены выбывающих из эксплуатации основных фондов и т.п.
Рассмотрим применение метода ДП для решения задачи о распределении капиталовложений между предприятиями.
Совет директоров фирмы рассматривает предложения по наращиванию мощностей на трех принадлежащих фирме предприятиях на очередной год. Каждое k −е предприятие представляет проект, который характеризуется величиной xk (в миллионах долларах) вложений, связанных с реализацией проекта, и ожидаемой в конце года прибылью fk(x). Функции fk(x) заданы таблицей (2.1). Предполагается, что прибыль fk(x) не зависит от вложения средств в другие предприятия, и суммарная прибыль равна сумме прибылей, полученных от каждого предприятия.
Цель фирмы состоит в получении максимальной прибыли от инвестиций в объеме 4 миллионов долларов. Размеры вложения в каждое предприятие кратны одному миллиону долларов. Требуется определить, какое количество средств нужно выделить каждому предприятию для достижения этой цели.
Таблица 2.1
- 
		Вложения x f1(x) f2(x) f3(x) 0 0 0 0 1 8 6 4 2 10 9 5 3 11 11 7 4 12 13 15 
Решение. Требуется
найти значения переменных  x1,
 x2,
 x3,
удовлетворяющих условию         
 ,
,
при  которых 
суммарная прибыль     Z
= 
 
       
достигает максимального значения.
Процесс решения задачи методом ДП можно рассматривать как трехшаговый процесс распределения средств S0 =4, номер шага совпадает с номером предприятия. Выбор значения переменных x1, x2, x3 − управление соответственно на 1, 2, 3 шагах. Так как все средства должны быть вложены, то S3 = 0 и x3 = S2. Уравнения состояний принимают вид (состояние Sk − количество средств, оставшихся после k−того шага):
Sk = Sk-1 − xk, k = 1, 2, 3.
Схема распределения средств изображена на рис. 2. 4.
         

Уравнения Беллмана в этом случае принимают вид:
              
 =
= 
 (1)
                 (1)
              
 (2)
 (2)
             
 (3)
  (3)                   
Последовательно решаем записанные уравнения, проводя условную оптимизацию каждого шага, начиная с третьего. Для возможных значений S2 = x3 (0, 1, 2, 3 или 4) выполняется уравнение (1). Такие же предположения делаем и для S1 на втором шаге и используем уравнение (2). Для первого шага ситуация очевидна: S0 = 4, вычисления ведем с помощью уравнения (3), в котором величина x1 может принимать те же значения 0, 1, 2, 3 или 4.
Все вычисления записаны в таблице 2.2.
Таблица 2.2
| K = 3 | K=2 | K = 1 | |||||||
| Sk− 1 | xk | Sk |   
			 | 
 | 
			 |  
			 | 
 | 
			 
			 |  
			 | 
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 1 | 0 1 | 1 0 | 4 | 0 + 4 = 4 6 + 0 = 6 | 6 | 1 | 
 | 
 | 
 | 
| 2 | 0 1 2 | 2 1 0 | 
 
 5 | 0 + 5 = 5 6 + 4 = 10 9 + 0 = 9 | 
 10 | 
 1 
 | 
 | 
 | 
 | 
| 3 | 0 1 2 3 | 3 2 1 0 | 
 
 
 7 | 0 + 7 = 7 6 + 5 = 12 9 + 4 = 13 11+ 0 = 11 | 
 
 13 | 
 
 2 | 
 | 
 | 
 | 
| 4 | 0 1 2 3 4 | 4 3 2 1 0 | 
 
 
 15 | 0 + 15= 15 6 + 7 = 13 9 + 5 = 14 11 + 4 = 15 13 + 0 = 13 
 | 
 
 
 15 
 | 0 
 или 3 | 0 + 15 = 15 8 + 13 = 21 10 +10 = 20 11 + 6 = 17 12 + 0 = 12 | 
 21 
 
 | 
 1 | 
Максимальная прибыль составит 21 миллион долларов, если первому предприятию выделить 1, второму − 2 и третьему − 1 миллион долларов.
Задача была решена сравнительно просто, потому что состояния Sk и управление на каждом шаге зависели от одной переменной (управления) xk..



 
			                
			


