- •Курсовая работа по дисциплине «Прикладная математика»
- •1. Линейная производственная задача
- •2. Двойственная задача
- •3. Задача о «расшивке узких мест производства»
- •4. Транспортная задача линейного программирования
- •5. Динамическое программирование. Распределение капитальных вложений
- •6. Матричная игра как модель конкуренции и сотрудничества
- •Найду решение игры в смешанных стратегиях.
- •Использованная литература:
5. Динамическое программирование. Распределение капитальных вложений
Динамическое программирование - это вычислительный метод для решения задач управления определённой структуры. Данная задача с n переменными представляется как много шаговый процесс принятия решений. На каждом шаге определяется экстремум функции только от одной переменной.
Рассмотрю нелинейную задачу распределения ресурсов между предприятиями отрасли. Предположу, что указано n пунктов, где требуется построить или реконструировать предприятия одной отрасли, для чего выделено b рублей. Обозначу через fj(xj) прирост мощности или прибыли на j-том предприятии, если оно получит xj рублей капитальных вложений. Требуется найти такое распределение (х1, х2, ..., хn) капитальных вложений между предприятиями, которое максимизирует суммарный прирост мощности или прибыли
Z=f1(x1)+f2(x2)+...+fn(xn)
при ограничении по общей сумме капвложений х1 + х2 +...+хn = b, причём буду считать, что все переменные xj принимают только целые неотрицательные значения xj =0,1,2,...
Функции fj(xj) я считаю заданными, заметив, что их определение -довольно трудоёмкая экономическая задача.
Воспользуюсь методом динамического программирования для решения этой задачи.
Введу параметр состояния и определю функцию состояния. За параметр состояния примем количество рублей, выделяемых нескольким предприятиям, а функцию состояния Fk() определим как максимальную прибыль на первых k предприятиях, если они вместе получат рублей. Параметр может меняться от 0 до b. Если из рублей k-ое предприятие получит Хк рублей, то каково бы ни было это значение, остальные -Хк рублей естественно распределить между предприятиями от 1-го до (к-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, где, например, число 29 означает, что если 3-е предприятие получит 600 тыс. руб. капитальных вложений, то прирост прибыли на этом предприятии составит 29 тыс. руб.
Таблица 1
xj |
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
f1(xj) |
0 |
5 |
10 |
14 |
17 |
19 |
21 |
22 |
f2(xj) |
0 |
8 |
13 |
18 |
21 |
23 |
21 |
17 |
f3(xj) |
0 |
10 |
16 |
21 |
24 |
27 |
29 |
30 |
f4(xj) |
0 |
11 |
19 |
26 |
30 |
33 |
35 |
36 |
Прежде всего заполняю таблицу 2. Значения f2(x2) складываю со значениями F1(-x2)=f1(-x2) и на каждой северо-восточной диагонали нахожу наибольшее число, которое помечаю звёздочкой и указываю соответствующее значение x2(). Заполняю таблицу 3. Продолжая процесс, табулирую функции F3(), x3() (см. табл.4 и 5) и т.д. В таблице 6 заполняю только одну диагональ для значения =700.
Таблица 2
|
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
|
X2 |
F(-x2) f2(x2) |
0 |
5 |
10 |
14 |
17 |
19 |
21 |
22 |
0 |
0 |
0 |
5 |
10 |
14 |
17 |
19 |
21 |
22 |
100 |
8 |
8* |
13* |
18* |
22 |
25 |
27 |
29 |
--- |
200 |
13 |
13* |
18* |
23* |
27 |
30 |
32 |
--- |
--- |
300 |
18 |
18* |
23* |
28* |
32* |
35* |
--- |
--- |
--- |
400 |
21 |
21 |
26 |
31 |
35* |
--- |
--- |
--- |
--- |
500 |
23 |
23 |
28 |
33 |
--- |
--- |
--- |
--- |
--- |
600 |
21 |
21 |
26 |
--- |
--- |
--- |
--- |
--- |
--- |
700 |
17 |
17 |
--- |
--- |
--- |
--- |
--- |
--- |
--- |
Таблица 3
|
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
F2() |
0 |
8 |
13 |
18 |
23 |
28 |
32 |
35 |
x2() |
0 |
100 |
100 |
100 |
200 |
300 |
300 |
300 |
x2() x2() |
0 0 |
100 100 |
200
|
200 300 |
300
|
300 300 |
300 300 |
400
|
Таблица 4
-х3 |
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
|
Х3 |
F(-x3) f2(x3) |
0 |
8 |
13 |
18 |
23 |
28 |
32 |
35 |
0 |
0 |
0 |
8 |
13 |
18 |
23 |
28 |
32 |
35 |
100 |
10 |
10* |
18* |
23 |
28 |
33 |
38 |
42 |
--- |
200 |
16 |
16 |
24* |
29* |
34* |
39* |
44* |
--- |
--- |
300 |
21 |
21 |
29* |
34* |
39* |
44* |
--- |
--- |
--- |
400 |
24 |
24 |
32 |
37 |
42 |
--- |
--- |
--- |
--- |
500 |
27 |
27 |
35 |
40 |
--- |
--- |
--- |
--- |
--- |
600 |
29 |
29 |
37 |
--- |
--- |
--- |
--- |
--- |
--- |
700 |
30 |
30 |
--- |
--- |
--- |
--- |
--- |
--- |
--- |
Таблица 5
|
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
F3() |
0 |
10 |
18 |
24 |
29 |
34 |
39 |
44 |
X3() |
0 |
100 |
100 |
200 |
200 |
200 |
200 |
200 |
X3() |
0 |
100 |
100 |
200 |
300 |
300 |
300 |
300 |
Таблица 6
-х4 |
0 |
100 |
200 |
300 |
400 |
500 |
600 |
700 |
|
Х4 |
F(-x4) f2(x4) |
0 |
10 |
18 |
24 |
29 |
34 |
39 |
44 |
0 |
0 |
|
|
|
|
|
|
|
44 |
100 |
11 |
|
|
|
|
|
|
50 |
--- |
200 |
19 |
|
|
|
|
|
53 |
--- |
--- |
300 |
26 |
|
|
|
|
55 |
--- |
--- |
--- |
400 |
30 |
|
|
|
54 |
--- |
--- |
--- |
--- |
500 |
33 |
|
|
51 |
--- |
--- |
--- |
--- |
--- |
600 |
35 |
|
45 |
--- |
--- |
--- |
--- |
--- |
--- |
700 |
36 |
36 |
--- |
--- |
--- |
--- |
--- |
--- |
--- |
Наибольшее число на этой диагонали:
Zmax = 55 тыс. руб.,
причем четвертому предприятию должно быть выделено
х4* = х4(700) = 300 тыс. руб.
На долю остальных трех предприятий остается 400 тыс. руб. Из Таблицы 5 видно, что третьему предприятию должно быть выделено
х3* = х3(700 - х4*) = х3(400) = 200 тыс. руб.
Продолжая обратный процесс, нахожу
х2* = х2(700 - х4* - х3*) = х2(200) = 100 тыс. руб.
На долю первого предприятия останется
х1* = 700 - х4* - х3* - х2* = 100 тыс. руб.
Таким образом, наилучшим является следующее распределение капитальных вложений по предприятиям:
х1* = 100; |
Zmax = 55 |
х2* = 100; |
|
х3* = 200; |
|
х4* = 300 |
Этот план обеспечивает производственному объединению наибольший возможный прирост прибыли 55 тыс. руб. В качестве проверки правильности решения задачи можно использовать равенство
f1(x*1) + f2(x*2) + f3(x*3) + f4(x*4) = Zmax
f1(100) + f2(100) + f3(200) + f4(300) = 5 + 8 + 16 + 26 = 55 = Zmax
Следовательно, полученные решения верны.

-х2