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

Предположим, что все требования, предъявляемые к задаче динамического программирования, выполнены. Построение модели динамического программирования и метода решения а рамках этой модели сводится к следующим моментам:

1. Выбирают способ деления процесса на шаги

2. Определяют параметры состояния Sk и управления xk на каждом шаге.

3. Записывают уравнения состояний

4. Вводят целевые функции k-ого числа и суммарную целевую функцию

5. Вводят в рассмотрение условные максимумы или минимумы

(Sk-1) и условное оптимальное управление на k-ом шаге (Sk-1) , k = n, n-1,…, 1

6. Записывают рекуррентные соотношения (уравнения) Беллмана для (Sn-1) (1) и (Sk-1) (4) k = n, n-1,…, 1

7. Решают последовательно уравнения Беллмана (условная оптимизация) и получают две последовательности функций: { (Sk-1) } и { (Sk-1)}.

8. После выполнения условной оптимизации получают оптимальное решение для конкретного начального состояния S0: (S0) и по цепочке S0 => => => ….. => =>

определяется оптимальное управление ( )

Стрелка означает исполнение уравнений состояний, а => - последовательность условных оптимальных состояний).

Рассмотрим как работает эта схема на примере задачи об оптимальном распределении ресурсов между двумя отраслями на n лет.

Планируется деятельность двух отраслей производства на n лет. Начальные ресурсы S0. Средства х, вложенные в первую отрасль в начале года, дают прибыль f1(x) < x, аналогично для второй отрасли: функция прибыли равна f2(x), а возврата – g2(х) (g2(х) < x). В конце года все возвращенные средства заново перераспределяются между первой и второй отраслью, новые средства не поступают, прибыль в производство не вкладывается. (Последние условия определяют вид уравнений состояний, если поступают новые средства или часть прибыли вкладывается в производство, это можно легко учесть, т.к. алгоритм метода динамического программирования это допускают).

Требуется распределить имеющиеся средства между двумя отраслями производства на n лет так, чтобы суммарная прибыль за n лет от обеих отраслей была максимальна.

Необходимо:

а) построить модель динамического программирования для данной задачи и вычислительную схему;

б) решить задачу при условии, что S0= 10000 ед., n = 4, f1(x) = 0,6х, f2(x) = 0,5х, g1(х) = 0,7х, g2(х) = 0,8х.

Решение. Процесс распределения средств между двумя отраслями производства разворачивается во времени, решения принимаются в начале каждого года, следовательно, образуется делением на шаги: номер шага - номер года. Управляемая система – две отрасли производства, а управление состоит в выделении средств каждой отрасли в очередном году. Параметры состояния к началу k-ого года – Sk-1(k=1, …, n) – количество средств, подлежащих распределению. Переменных управления на каждом шаге две: хk – количество средств, выделенных первой отрасли и уk – второй отрасли. Т.к. все средства Sk, распределяются, то Sk-1= хk + уk или уk = Sk-1- хk и поэтому управление на k-ом шаге зависит лишь от одной переменной хk.

Уравнения состояний выражают остаток средств, возвращенных в конце k-ого года.

Sk= g1k) + g2(Sk-1- хk)

Показатель эффективности k-ого года – прибыль, полученная от обеих отраслей: f1k) + f2(Sk-1- хk)

Суммарный показатель эффективности – целевая функция задачи – прибыль за n лет:

f1k) + f2(Sk-1- хk)

Пусть (Sk-1) – условная оптимальная прибыль за n-k+1 лет, начиная с k-ого года до n-ого года включительно, при условии, что имеющиеся на начло k-ого года средства Sk-1 в дальнейшем распределились оптимально. Тогда оптимальная прибыль за n лет Zmax = (S0)/

Рекуррентные соотношения Беллмана (уравнения) имеют вид:

(Sn-1) { f1n) + f2(Sn-1- хn)}

(Sk-1) { f1k) + f2(Sk-1- хk) + (Sk) }, k= n-1, n-2, …, 2

Для нашего конкретного случая уравнения состояний:

Sk= 0,7 хk + 0,8(Sk-1- хk )

Целевая функция k-ого шага

0,6 хk +0,5 (Sk-1- хk ) = 0,5 Sk-1 + 0,1хk

Целевая функция задачи: (0,5 Sk-1 + 0,1 хk)

Функциональные уравнения (соотношения Беллмана)

(S3) (0,5 S3 + 0,1 х4) (*)

(Sk-1) { 0,5 Sk-1 + 0,1хk+ (Sk) }

Проводим условную оптимизацию.

IV Шаг. Используем уравнение (*). Обозначим через Z4 функцию, стоящую в скобках,

Z4 = 0,1 х4 + 0,5 S3; функция Z4 – линейная

Z4 = 0,1 х4 + а; а = 0,5 S3, возрастающая, т.к. угловой коэффициент 0,1>0. Поэтому максимум достигается н конце интервала. Мы помним, что 0≤ х4 ≤ S3, т.е. интервал [0, S3], следовательно = 0,1 S3 + 0,5 S3 = 0,6 S3, х4 (S3) = S3

III Шаг.

(S2) (0,1 х3 + 0,5S2 + 0,6 S3)

Найдем S3 из уравнений состояний S3 = 0,8 S2 – 0,1х3 и подставим это S3 в правую часть.

(S2) {0,1 х3 + 0,5S2 + 0,6*(0,8 S2 – 0,1х3)}

(S2) {0,04 х3 + 0,98S2}

Те же самые расстояния – функция линейная, возрастающая, поэтому максимум достигается в конце отрезка или интеграла [0, S2], т.е. х3 (S2) = S2, т.е. (S2) = 0,04 S2 + 0,98S2 = 1,02S2

II Шаг.

(S1) {0,1х2 + 0,5S1 +1,02S2}

Найдем S2 из уравнения состояния S2 = 0,8S1 – 0,1х2 и подставим получим

(S1) {0,1х2 + 0,5S1 +1,02*(0,8S1 – 0,1х2)}

(S1) = 1,316 S1 – 0,002 х2

Получена линейная убывающая функция. Она убывает в интервале [0, S1]. Максимальное значение достигается в точке х2 = 0

Таким образом, (S1) = 1,316 S1 при х2(S1) = 0.

I Шаг.

(S0) {0,5 S0 + 0,1 х1 +1,316S1}

Из уравнения состояния S1 = 0,8 S0 – 0,1 х1, подставим это значение в .

(S0) {0,5 S0 + 0,1 х1 + 1,316*(0,8S0 – 0,1х1)}

(S0) {0,5 S0 + 0,1 х1 + 1,0528S0 – 0,1316х1)}

(S0) {1,5528S0 - 0,0616 х1}

Как и в предыдущем случае максимум достигается в начале отрезка

(S0) = 1,5528S0, (S0) = 0

На этом условная оптимизация заканчивается. Используя результаты и исходные данные получим

Zmax = (10000) = 15528

= 0, (S0) = 10000 – все средства выделяются второй отрасли

= 0,8*10000 – 0= 8000, = 0, = 8000 – все средства выделяются второй отрасли (опять).

= 0,8*8000 – 0,1*0 = 6400, = = 6400, = 0 – все средства выделяются первой отрасли.

= 0,8*6400 – 0,1*6400 = 5120 – 640 = 4480, = = 4480, = 0 – все средства выделяются первой отрасли.

Вывод: оптимальная прибыль за четыре года, полученная от двух отраслей производства при наличии начальных средств 10000 ед., равна 15528 ед. при условии, что первая отрасль получает по годам (0, 0, 6400, 4480), а вторая (10000, 8000, 0, 0).

 

 








Дата добавления: 2016-01-30; просмотров: 2225;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.021 сек.