- •Лабораторная работа № 1
- •Варианты заданий
- •Лабораторная работа № 2
- •Лабораторная работа № 3
- •Лабораторная работа № 6 Интерполирование функций
- •Лабораторная работа № 7 Интерполирование функций двух переменных
- •Лабораторная работа № 8 Метод золотого сечения
- •Лабораторная работа № 9 Метод Куммера
- •Варианты заданий
- •Лабораторная работа № 10 Решение систем нелинейных уравнений методом Ньютона Пусть задана система двух нелинейных уравнений с двумя неизвестными
- •Лабораторная работа № 11 Решение систем нелинейных уравнений методом итерации
- •Лабораторная работа № 12 Решение систем линейных уравнений методом Гаусса
- •Лабораторная работа № 13 Метод прогонки
- •Варианты заданий
- •Варианты заданий
- •Лабораторная работа № 20 Метод Милна
- •Лабораторная работа № 21 Метод Адамса
- •Лабораторная работа № 23 Решение систем дифференциальных уравнений методом Рунге—Кутта
- •Лабораторная работа № 24 Задача линейного программирования
- •Лабораторная работа № 25 Транспортная задача
- •Лабораторная работа № 26 Метод наискорейшего спуска
- •Лабораторная работа № 27 Метод дробления шага
- •Лабораторная работа № 28 Метод покоординатного спуска
- •Лабораторная работа № 29 Метод случайного поиска
- •Лабораторная работа № 30 Эмпирические формулы. Линейная зависимость
- •Лабораторная работа № 31 Решение краевой задачи методом сеток
- •Лабораторная работа № 35 Динамическое программирование
- •Корни нелинейных уравнений
- •Интерполирование функций
- •Двумерная интерполяция
- •Метод золотого сечения (лабораторная работа № 8)
- •Решение систем нелинейных уравнений (лабораторные работы №10— 11)
- •Решение систем линейных уравнений
- •Решение систем линейных уравнений методом прогонки
- •Приближенные значения интегралов
- •Приближенные решения системы дифференциальных уравнений
- •Задача линейного программирования
- •Максимальная прибыль
- •Транспортная задача
- •Значения функции в точке минимума
- •Динамическое программирование
- •Список литературы
Лабораторная работа № 35 Динамическое программирование
Рассматривается управляемая система, которая под влиянием управления переходит из начального состояния в конечное состояние n. Предположим, что процесс управления системой можно разбить на n шагов. Пусть 1, 2, ...…, n – состояния системы после первого, второго, ...…, n-го шага. В данной лабораторной работе величины 1, 2,…..., n являются скалярными.
Последовательное преобразование системы (по шагам) достигается с помощью некоторых мероприятий u1, u2, ...…, un, которые составляют управление системой
U = (u1, u2, …..., un),
где uk – управление на k-м шаге, переводящее систему из состояния k-1 в состояние k. Величины u1, u2, ..., un в данной лабораторной работе также считаются скалярными.
Будем считать, что состояние системы в конце k – шага зависит только от предшествующего состояния системы k-1 и управления uk на данном шаге. Такое свойство получило название отсутствия последействия. Обозначим эту зависимость:
k = Fk(k-1, uk) (k = 1, 2, ...…, n). (31)
Равенства (31) получили название уравнений состояний. Функции Fk(k-1, uk) полагаем заданными. Варьируя управление U, получим различную “эффективность” процесса, которую будем оценивать количественно целевой функцией z, зависящей от начального состояния системы 0 и от выбранного управления U:
z = Ф(0,U).
Показатель эффективности k-го шага процесса управления, который зависит от состояния k-1 и управления uk, обозначим через fk(k-1, uk). В рассматриваемой задаче пошаговой оптимизации целевая функция должна быть аддитивной, т. е.
(32)
Обычно на переменные uk на каждом шаге накладываются некоторые ограничения. Управления, удовлетворяющие этим ограничениям, называются допустимыми.
Задачу пошаговой оптимизации можно сформулировать так: определить совокупность допустимых управлений u1, u2,…...,un переводящих систему из начального состояния 0 в конечное состояние n и максимизирующих или минимизирующих показатель эффективности (32).
Не уменьшая общности, в дальнейшем будем рассматривать задачу максимизации. Управление, при котором достигается максимум целевой функции (32), называется оптимальным управлением и обозначается через
Метод динамического программирования (ДП) состоит в том, что оптимальное управление строится постепенно, шаг за шагом. Управление на каждом шаге должно быть оптимальным с точки зрения процесса в целом. Это основное правило ДП, сформулированное Р. Беллманом, называется принципом оптимальности.
Оптимальное управление обладает таким свойством, что каково бы ни было начальное состояние на любом шаге и управление, выбранное на этом шаге, последующие управления должны выбираться оптимальными относительно состояния, к которому придет система в конце данного шага.
Показатель, характеризующий суммарную эффективность от данного k-го до последнего n-го шага, будем обозначать через zk, т. е.
Обозначим , которая зависит только от т. е.
где Uk = (uk, uk+1,…..., un).
Величина называется условным максимумом. Она вычисляется по следующей формуле:
(33)
которая называется основным функциональным уравнением ДП, или уравнением Беллмана. Это уравнение справедливо для k = 1, 2,…...,n-1. Для k = n уравнение (33) принимает вид
. (34)
Величина Uk , при которой правая часть соотношения (33) или (34) обращается в максимум, обозначается через Uk* и называется условным оптимальным управнением на k-м шаге.
Решение рекуррентных соотношений (33) и (34) начинается с соотношения (34). Затем решается соотношение (33) для k = n—1, n—2,...…,2,1. Величина является максимальным значением показателя эффективности процесса в целом, т. е. . Основная идея метода ДП заключается в том, что задача нахождения максимума функции n переменных сводится к n задачам определения максимума функции одной переменной.
Задача. Планируется распределение начальной суммы средств 0 между n предприятиями П1, П2,...…,Пn. Предполагается, что выделенные предприятию Пk в начале планового периода средства приносят доход fk(xk) (k = 1, 2,…..., n). Будем считать, что:
-
доход, полученный от вложения средств в предприятие Пk, не зависит от вложения средств в другие предприятия;
-
доход, полученный от разных предприятий, и вложенные средства выражаются в одинаковых единицах;
-
общий доход равен сумме доходов, полученных от распределения средств по всем предприятиям.
Определить, какое количество средств нужно выделить каждому предприятию, чтобы суммарный доход был максимальным.
Запишем математическую модель задачи. Общий доход выражается целевой функцией:
. (35)
Переменные xk должны удовлетворять условиям:
, (36)
(37)
Требуется определить переменные x1, x2,…...,xn, которые удовлетворяют ограничениям (36) и (37) и обращают в максимум целевую функцию (35).
Для решения этой задачи применим метод ДП. За номер k-го шага примем номер предприятия, которому выделяются средства xk. Переменные xk можно рассматривать как управляющие переменные. Начальное состояние системы характеризуется величиной средств, подлежащих распределению. После выделения x1 остается средств и т. д. Величины ,, характеризующие остаток средств после распеределения на предшествующих шагах, будем рассматривать как параметры состояния. Уравнениями состояния служат равенства
.
Суммарный доход за n шагов составляет и представляет собой показатель эффективности процесса.
Если к началу k-го шага остаток средств равен , то доход, который можно получить на оставшихся n – k + 1 шагах, составит
Обозначим . Тогда Рассмотрим k-й шаг решения задачи. Величина xk на этом шаге изменяется в пределах [0, ]. Величину xk нужно выбирать из условия максимизации суммы
.
Таким образом, получаем уравнение
, (38)
называемое уравнением Беллмана. Уранение (38) решается для
k = n—1, n—2,…...,1. Для k = n оно имеет вид
.
Будем считать, что функция дохода fk(xk) (k = 1, 2, ...…, n) монотонно возрастающая. Поэтому
. (39)
Таким образом, на n-м шаге условное оптимальное управление
.
Решение задачи начинается с n-го шага. Определяется по формуле (39), причем . Затем решается уравнение (38) для k = n-1, n-2,...…, 2, 1. В результате получим две последовательности функций:
и
Этим завершается первый и основной этап вычислительного процесса, получивший название условной оптимизации.
Теперь приступим ко второму этапу вычислительной схемы – безусловной оптимизации. На этом этапе определяем . Находим , а затем по определяем и и т. д. В результате будет определено оптимальное управление (x1*, x2*,...…, xn*).
Пример. Решим рассмотренную задачу для следующих данных: 0 = 400, n = 3, x = 100. Функции дохода указаны в табл. 7.
Таблица 7
x |
f(x) |
||
f1(x) |
f2(x) |
f3(x) |
|
100 200 300 400 |
3 10 12 16 |
4 7 15 17 |
6 8 13 14 |
Решение. Задача является дискретной, причем x = 100. Здесь имеются три управляющие переменные x1, x2, x3 и четыре параметра состояния 0, 1, 2, 3. Уравнения состояния имеют вид
.
Данный процесс является трехшаговым. Поэтому и уравнение Беллмана на последнем шаге имеет вид
Для первого и второго шага уравнение Беллмана запишется в форме
Обозначим zk(k-1, xk) = fk(xk) + z*k+1(k). Тогда уравнение Беллмана для двух первых шагов запишется в виде
При решении задачи результаты расчетов поместим в две таблицы. В первую, основную, поместим результаты условной оптимизации (табл. 8), во вторую, вспомогательную, значения zk(k-1, xk) и другие промежуточные результаты, полученные при выполнении условной оптимизации.
Условную оптимизацию начнем с выполнения 3-го шага. Так как f3(x) — монотонно возрастающая функция, то x3(2) = 2. При этом получим
z3*(2) = f3(2) , где 0 2 400.
Этот результат условной оптимизации 3-го шага помещен непосредственно во второй и третий столбцы табл. 8, переписав необходимые данные из последнего столбца табл. 6.
Результаты условий оптимизации 2-го и 1-го шагов запишем в табл. 9. Во второй столбец записаны значения xk, которые изменяются от 0 до k-1 с шагом x =100, в третий столбец значения k = k-1 - xk, в четвертый столбец значения функции f2(x2), взятые из табл. 7, в пятый столбец – значения функции z3*(2), взятые из табл. 8. В шестой столбец записаны значения Затем для данных из шестого столбца для каждого возможного значения 1 определяется величина
.
Если максимальных значений не одно, то задача имеет несколько решений. В этом случае нужно взять одно из них. Они подчеркнуты в шестом столбце. Эти значения, а также соответствующие им значения x2 переносим в табл. 8.
Вычисления на первом шаге производятся аналогичным способом. Результаты записаны в табл. 8 и 9. Дальнейшие (безусловные) оптимальные управления определяем по данным из табл. 8. Имеем
x1*= 0; 1*= 400;
x2*= 30; 2*= 100;
x3*= 100; 3*= 0.
Таблица 8
|
3-й шаг |
2-й шаг |
1-й шаг |
|||
z3*(2) |
x3*(2) |
z2*(1) |
x2*(1) |
z1*(0) |
x1*(0) |
|
100 |
6 |
100 |
6 |
0 |
6 |
0 |
200 |
8 |
200 |
10 |
100 |
10 |
0 |
300 |
13 |
300 |
15 |
300 |
16 |
200 |
400 |
14 |
400 |
21 |
300 |
21 |
0 |
Таблица 9
k = 2, 1 |
2-й шаг |
1-й шаг |
|||||||
k-1 |
xk |
k |
f2(x2) |
z3*(2) |
z2(1,x2) |
f1(x1) |
z2*(1) |
z1(0,x1) |
|
100 |
0 100 |
100 0 |
0 4 |
6 0 |
6 4 |
0 3 |
6 0 |
6 3 |
|
200 |
0 100 200 |
200 100 0 |
0 4 7 |
8 6 0 |
8 10 7 |
0 3 10 |
10 6 0 |
10 9 10 |
|
300 |
0 100 200 300 |
300 200 100 0 |
0 4 7 15 |
13 8 6 0 |
13 12 13 15 |
0 3 10 12 |
15 10 6 0 |
15 13 16 12 |
|
400 |
0 100 200 300 400 |
400 300 200 100 0 |
0 4 7 15 17 |
14 13 8 6 0 |
14 17 15 21 17 |
0 3 10 12 16 |
21 15 10 6 0 |
21 18 20 18 16 |
|
Максимальный доход равен 21. Он получится, если первому предприятию не выделить средств, второму – 300, третьему – 100 денежных едениц. В табл. 8 подчеркнуты значения x2* и x1*.
Задание. Решить рассмотренную задачу для следующих данных:
-
задано 0, указанное в табл. 10;
-
n = 4;
-
средства выделяются только в размерах, кратных x = 0,20,
-
функции дохода приведены в табл. 10.
Таблица 10
0 = 150 |
Варианты 1 – 6 |
|||
x |
f(x) |
|||
f1(1) |
f2(x) |
f3(x) |
f4(x) |
|
30 60 90 120 150 |
5 6+k 13 17 20 |
4 7 8+k 16 19 |
6 9 11 12+k 20 |
4 6 14 17 19+k |
Продолжение табл. 10
0 = 200 |
Варианты 7 – 12 |
|||
x |
f(x) |
|||
f1(1) |
f2(x) |
f3(x) |
f4(x) |
|
40 80 120 160 200 |
4 k 14 18 20 |
3 7 k+2 17 22 |
4 8 12 7+k 20 |
5 7 15 18 12+k |
Продолжение табл. 10
0 = 250 |
Варианты 13 – 18 |
|||
x |
f(x) |
|||
f1(1) |
f2(x) |
f3(x) |
f4(x) |
|
50 100 150 200 250 |
5 k-6 15 17 19 |
4 6 k-5 18 20 |
7 8 10 k 22 |
5 7 12 16 k+5 |
Продолжение табл. 10
0 = 300 |
Варианты 19 – 24 |
|||
x |
f(x) |
|||
f1(1) |
f2(x) |
f3(x) |
f4(x) |
|
60 140 180 240 300 |
5 k-13 14 18 22 |
3 5 k-12 19 21 |
5 7 12 k-3 22 |
4 8 16 18 k |
Окончание табл. 10
0 = 350 |
Варианты 25 – 30 |
|||
x |
f(x) |
|||
f1(1) |
f2(x) |
f3(x) |
f4(x) |
|
70 140 210 280 350 |
3 k-20 12 16 19 |
4 7 k-15 17 18 |
4 6 15 18 k-6 |
4 9 12 16 k-7 |
Ответы