
- •Курсовая работа по дисциплине «Прикладная математика»
- •1. Линейная производственная задача
- •2. Двойственная задача
- •3. Задача о «расшивке узких мест производства»
- •4. Транспортная задача линейного программирования
- •5. Динамическое программирование. Распределение капитальных вложений
- •6. Матричная игра как модель конкуренции и сотрудничества
- •7. Анализ доходности и риска финансовых операций
- •8. Задача формирования оптимального портфеля ценных бумаг
- •Использованная литература:
5. Динамическое программирование. Распределение капитальных вложений
Динамическое программирование - это вычислительный метод для решения задач управления определённой структуры. Данная задача с nпеременными представляется как много шаговый процесс принятия решений. На каждом шаге определяется экстремум функции только от одной переменной.
Рассмотрим нелинейную задачу распределения ресурсов между предприятиями отрасли. Предположим, что указано nпунктов, где требуется построить или реконструировать предприятия одной отрасли, для чего выделеноbрублей. Обозначим черезfj(xj) прирост мощности или прибыли наj-том предприятии, если оно получитxjрублей капвложений. Требуется найти такое распределение (х1, х2, ..., хn) капвложений между предприятиями, которое максимизирует суммарный прирост мощности или прибыли
Z=f1(x1)+f2(x2)+...+fn(xn)
при ограничении по общей сумме капвложений х1 + х2 +...+хn = b, причём будем считать, что все переменныеxjпринимают только целые значенияxj=1,2,...
Функции fj(xj) мы считаем заданными, заметив, что их определение -довольно трудоёмкая экономическая задача.
Воспользуемся методом динамического программирования для решения этой задачи.
Введём параметр состояния и определим функцию состояния. За параметр состояния примем количество рублей, выделяемых нескольким предприятиям, а функцию состоянияFk() определим как максимальную прибыль на первыхkпредприятиях, если они вместе получатрублей. Параметрможет меняться от 0 доb. Если изрублейk-ое предприятие получит Хкрублей, то каково бы ни было это значение, остальные-Хкрублей естественно распределить между предприятиями от 10-го до (к-1)-го предприятия, чтобы была получен максимальная прибыльFk-1(-xk). Тогда прибыльkпредприятий будет равнаfk(xk) +Fk-1(-xk). Надо выбрать такое значениеxkмежду 0 и, чтобы эта сумма была максимальной, и мы приходим к рекуррентному соотношению:
Fk() =max{fk(xk) +Fk-1(-xk)}
0 X
для k=2,3,....,n.Если жеk=1 ,то
F1()=f1().
В нашем случае производственное объединение состоит из 4-х предприятий (k=4).Общая сумма капвложений равна 700 тыс. рублей (b=700) , выделяемые предприятиям суммы кратны 100 тыс. рублей.
Значения функций fj(xj) приведены в таблице 1.
Таблица 1
xj |
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
f1(xj) |
0 |
15 |
26 |
37 |
46 |
53 |
59 |
63 |
f2(xj) |
0 |
15 |
24 |
30 |
36 |
40 |
43 |
45 |
f3(xj) |
0 |
9 |
30 |
33 |
31 |
39 |
45 |
49 |
f4(xj) |
0 |
24 |
36 |
42 |
46 |
48 |
49 |
49 |
Прежде всего заполняем таблице2. Значения f2(x2) складываем со значениямиF1(-x2)=f1(-x2) и на каждой побочной диагонали находим наибольшее число, которое помечаем звёздочкой. Продолжая процесс табулируем функцииF3(),x3() и т.д. В таблице 6 заполняем только одну диагональ для значения=700.
Таблица 2
|
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 | |
X2 |
F(-x2) f2(x2) |
0 |
15 |
26 |
37 |
46 |
53 |
59 |
63 |
0 |
0 |
0 |
15* |
26 |
37 |
46 |
53 |
59 |
63 |
100 |
15 |
15* |
30* |
41* |
52* |
61* |
68 |
74 |
--- |
200 |
24 |
24 |
39 |
50 |
61* |
70* |
77* |
--- |
--- |
300 |
30 |
30 |
45 |
56 |
67 |
76 |
--- |
--- |
--- |
400 |
36 |
36 |
51 |
62 |
73 |
--- |
--- |
--- |
--- |
500 |
40 |
40 |
55 |
66 |
--- |
--- |
--- |
--- |
--- |
600 |
43 |
43 |
58 |
--- |
--- |
--- |
--- |
--- |
--- |
700 |
45 |
45 |
--- |
--- |
--- |
--- |
--- |
--- |
--- |
Таблица 3
|
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
F2() |
0 |
15 |
30 |
41 |
52 |
61 |
70 |
77 |
x2() |
0 |
0 |
100 |
100 |
100 |
100 |
200 |
200 |
x2() |
0 |
100 |
100 |
100 |
100 |
200 |
200 |
200 |
Таблица 4
|
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 | |
Х3 |
F(-x3) f2(x3) |
0 |
15 |
30 |
41 |
52 |
61 |
70 |
77 |
0 |
0 |
0 |
15* |
30* |
41 |
52 |
61 |
70 |
77 |
100 |
9 |
9 |
24 |
39 |
50 |
61 |
70 |
79 |
--- |
200 |
30 |
30* |
45* |
60* |
71* |
82* |
91* |
--- |
--- |
300 |
33 |
33 |
48 |
63 |
74 |
85 |
--- |
--- |
--- |
400 |
31 |
31 |
46 |
61 |
72 |
--- |
--- |
--- |
--- |
500 |
39 |
39 |
54 |
69 |
--- |
--- |
--- |
--- |
--- |
600 |
45 |
45 |
60 |
--- |
--- |
--- |
--- |
--- |
--- |
700 |
49 |
49 |
--- |
--- |
--- |
--- |
--- |
--- |
--- |
Таблица 5
|
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
F3() |
0 |
15 |
30 |
45 |
60 |
71 |
82 |
91 |
X3() |
0 |
0 |
0 |
200 |
200 |
200 |
200 |
200 |
X3() |
0 |
0 |
200 |
200 |
200 |
200 |
200 |
200 |
Таблица 5
|
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 | |
Х4 |
F(-x4) f2(x4) |
0 |
15 |
30 |
45 |
60 |
71 |
82 |
91 |
0 |
0 |
|
|
|
|
|
|
|
91 |
100 |
24 |
|
|
|
|
|
|
106 |
--- |
200 |
36 |
|
|
|
|
|
107 |
--- |
--- |
300 |
42 |
|
|
|
|
102 |
--- |
--- |
--- |
400 |
46 |
|
|
|
91 |
--- |
--- |
--- |
--- |
500 |
48 |
|
|
78 |
--- |
--- |
--- |
--- |
--- |
600 |
49 |
|
64 |
--- |
--- |
--- |
--- |
--- |
--- |
700 |
49 |
49 |
--- |
--- |
--- |
--- |
--- |
--- |
--- |
Zmax = 107 тыс. руб.,
причем четвертому предприятию должно быть выделено
х4* = х4(700) = 200 тыс. руб.
На долю остальных трех предприятий остается 500 тыс. руб. Из Таблицы 5 видно, что третьему предприятию должно быть выделено
х3* = х3(700 - х4*) = х3(500) = 200 тыс. руб.
Продолжая обратный процесс, находим
х2* = х2(700 - х4* - х3*) = х2(300) = 100 тыс. руб.
На долю первого предприятия останется
х1* = 700 - х4* - х3* - х2* = 200 тыс. руб.
Таким образом, наилучшим является следующее распределение капитальных вложений по предприятиям:
х1* = 200; |
Zmax = 107 |
х2* = 100; | |
х3* = 200; | |
х4* = 200 |
Этот план обеспечивает производственному объединению наибольший возможный прирост прибыли 107 тыс. руб.
В качестве проверки правильности решения задачи можно использовать равенство
f1(x1*) + f2(x2*) + f3(x3*) + f4(x4*) = Zmax
f1(200) + f2(100) + f3(200) + f4(200) = 26 + 15 + 30 + 36 = 107 = Zmax
Следовательно, полученные решения верны.