Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дашкова И.А. ЭММетоды. МУ к РГР, 2008 (080507,0....doc
Скачиваний:
10
Добавлен:
11.12.2018
Размер:
251.9 Кб
Скачать

2 Динамическое программирование

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

2.1 Общая постановка задачи динамического программирования

Рассматривается управляемый процесс, например, процесс использования ресурсов в течение ряда лет, замены оборудования, пополнения запасов и т.д. В начальный момент времени система S (объект управления) находится в начальном состоянии S0.

На первом шаге под действием переменной управления система переходит из состояния S0 в состояние S1, т.е. S1= S1(S0,x1). Здесь целевая функция равна F1(S0,x1). Всю цепочку переходов системы можно изобразить в виде графа (рисунок 2).

xn-1

xn

x2

x3

x1

Fn(Sn-1,xn)

F3(S2,x3)

F2(S1,x2)

F1(S0,x1)

Рисунок 2 - Граф состояний системы при многошаговом процессе

Обозначим через Х = (x1,x2,…,xn) управление, переводящее систему за n шагов из начального состояния S0 в конечное состояние Sn.

Целевая функция на k-м шаге Fk(Sk-1,xk) () называется функцией Беллмана.

Задача состоит в том, чтобы подобрать управление Х, переводящее систему за n шагов из начального состояния S0 в конечное состояние Sn, чтобы достичь экстремума целевой функции

Z(S0, X) = F1(S0, x1) + F2(S1, x2) + … + Fn(Sn-1,xn) = .

В основе решения задач динамического программирования лежит принцип оптимальности Беллмана: на каждом этапе принимается такое решение, которое обеспечивает оптимальность с данного этапа до конца процесса, т.е. на каждом этапе необходимо принимать решение, просматривая его последствия до самого конца процесса.

Функциональные уравнения Беллмана – это математическая формулировка принципа оптимальности Беллмана. Оптимальное управление обладает следующим свойством: каковы бы ни были начальное состояние S0 и решение в начальный момент времени, последующие решения должны составлять оптимальное управление относительно состояния, полученного в результате предыдущего решения.

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

На (n-1)-м шаге

т.е. на (n-1)-м шаге надо так подобрать управление xn-1, чтобы сумма выигрышей на (n-1)-м шаге Fn-1(Sn-2,xn-1) и на n-м шаге Zn(Sn-1(Sn-2,xn-1)) была максимальна.

На (n-2)-м шаге

т.е. на (n-2)-м шаге надо так подобрать управление xn-2, чтобы сумма выигрышей на (n-2)-м шаге Fn-2(Sn-3,xn-2) и на двух последних шагах

Zn-1(Sn-2(Sn-3,xn-2)) была максимальна.

На k-м шаге

т.е. на k-м шаге надо так подобрать управление xk, чтобы сумма выигрышей на k-м шаге Fk(Sk-1,xk) и на n-k последующих шагах Zk+1(Sk(Sk-1,xk)) была максимальна.

2.2 Общая схема решения задачи динамического

программирования

1.Определяют все состояния системы при переходе из начального состояния S0 в конечное состояние Sn, вид целевых функций на каждом шаге

Fk(Sk-1,xk) (), функции перехода Sk(Sk-1,xk) из состояния Sk-1 в состояние Sk.

2. Записывают уравнения Беллмана.

3. Из уравнения Беллмана для Z1(S0) по S0 находят оптимальное управление на 1-м шаге . По S0 и определяют состояние системы после 1-го шага:

4. Из уравнения Беллмана для для Z2(S1) по S1 находят оптимальное управление на 2-м шаге . По S1 и определяют состояние системы после 2-го шага: И т.д.

Условно этот процесс можно представить так:

S0 S1  S2 … Sn-1 .