
- •§1. Цели и задачи курсового проекта
- •1. Линейная производственная задача
- •Двойственная задача
- •Задача о "расшивке узких мест производства"
- •Транспортная задача линейного программирования
- •Динамическое программирование. Распределение капитальных вложений
- •Матричная игра как модель конкуренции и сотрудничества
- •Анализ доходности и риска финансовых операций
- •Принятие решений в условиях неопределенности
Динамическое программирование. Распределение капитальных вложений
Динамическое программирование - это вычислительный метод для решения задач управления определенной структуры. Данная задача с n переменными представляется как многошаговый процесс принятия решений. На каждом шаге определяется экстремум функции только от одной переменной.
Знакомство с методом динамического программирования проще всего начать с рассмотрения нелинейной задачи распределения ресурсов между предприятиями одного производственного объединения или отрасли. Для определенности можно считать, что речь идет о распределении капитальных вложений.
Предположим, что указано n пунктов, где требуется построить или реконструировать предприятия одной отрасли, для чего выделено b рублей. Обозначим через fi(xi) прирост мощности или прибыли на j-м предприятии, если оно получит xi рублей капитальных вложений. Требуется найти такое распределение (x1,x2, ... , xn) капитальных вложений между предприятиями, которое максимизирует суммарный прирост мощности или прибыли
z = f1(x1) + f2(х2) + ... + fn(xn)
при ограничении по общей сумме капитальных вложений
x1 + x2 + ... + xn = b
причем будем считать, что все переменные xj принимают только целые неотрицательные значения
xj = 0, или 1, или 2, или 3, ...
Функции fj(xj) мы считаем заданными, заметив, что их определение - довольно трудоемкая экономическая задача.
Воспользуемся методом динамического программирования для решения этой задачи.
Производственное объединение состоит из четырех предприятий (n=4). Общая сумма капитальных вложений равна 700 тыс. рублей (b=700), выделяемые предприятиям суммы кратны 100 тыс. рублей. Значения функций fj(xj) приведены в таблице 1, где, например, число 92 означает, что если третье предприятие получит 400 тыс. руб. капитальных вложений, то прирост прибыли на этом предприятии составит 92 тыс. руб.
Таблица I
-
xj
0
100
200
300
400
500
600
700
f1(x1)
0
5
8
10
12
13
14
15
f2(x2)
0
5
10
14
17
19
21
22
f3(x3)
0
8
13
18
21
23
25
27
f4(x4)
0
6
13
20
27
33
38
41
Прежде
всего заполняем табл. 2. Значения f2(x2)
складываем со значениями F1(
- x2)
= f1(-
x2)
и на каждой северо-восточной диагонали
находим наибольшее число, которое
отмечаем звездочкой и указываем
соответствующее значение
.
Заполняем таблицу 3.
Продолжая
процесс, табулируем функции F3(),
()
и т.д. В табл. 6 заполняем только одну
диагональ для значения =
700. Наибольшее число на этой диагонали:
Zmax = 46 тыс. руб.,
но четвертому предприятию не может быть выделено
х*4
=
4
(700) = 600
тыс. руб. или 500 тыс. руб. Можно только
выделить 400 тыс. руб.
На долю остальных трех предприятий остается 300 тыс. руб. Из табл. 5 видно, что третьему предприятию должно быть выделено
x*3
=
3
(700-x*4)
=
3
(300) = 100 тыс.
руб.
Продолжая обратный процесс, находим
x*2
=
2
(700 - x*4
- x*3)
=
2
(200)
= 100
тыс. руб.
На долю первого предприятия остается
x*1 = 700 - x*4 - x*3 - x*2 = 100 тыс. руб.
Таким образом, наилучшим является следующее распределение капитальных вложений по предприятиям:
x*1 =100; x*2 =100; x*3 = 100; x*4 = 400.
Оно обеспечивает производственному объединению наибольший возможный прирост прибыли 45 тыс. руб.
Рекомендуется проверить выполнение равенства
f1(x*1) + f2(x*2) + f3(x*3) + f4(x*4) = z max
27+8+5+5=45
Таблица
2
|
- x2 |
0 100 200 300 400 500 600 700 |
x2 |
F1( - x2) f2(x2) |
0 5 8 10 12 13 14 15 |
|
0 |
0 5* 8 10 12 13 14 15 |
100 |
5 |
5 10* 13 15 17 18 19 |
200 |
10 |
10 15* 18 20 22 23 |
300 |
14 |
14 19* 22* 24 26 |
400 |
17 |
17 22 25* 27* |
500 |
19 |
19 24 27 |
600 |
21 |
21 26 |
700 |
22 |
22 . |
Таблица 3
|
0 100 200 300 400 500 600 700 |
F2() |
0 5 10 15 19 22 25 27 |
|
0 0 100 200 300 300 400 400 |
Таблица 4
|
- x3 |
0 100 200 300 400 500 600 700 |
x3 |
F2( - x3) f3(x3) |
0 5 10 15 19 22 25 27 |
|
0 |
0 5 10 15 19 22 25 27 |
100 |
8 |
8* 13* 18* 23* 27 30 33 |
200 |
13 |
13 18 23 28* 32 35 |
300 |
18 |
18 23 28 33* 37* |
400 |
21 |
21 26 31 36 |
500 |
23 |
23 28 33 |
600 |
25 |
25 30 |
700 |
27 |
27 |
Таблица 5
|
0 100 200 300 400 500 600 700 |
F3() |
0 8 13 18 23 28 33 37 |
|
0 100 100 100 100 200 300 300 |
Таблица 6
|
- x4 |
0 100 200 300 400 500 600 700 |
x4 |
F3( - x4) f4(x4) |
0 8 13 18 23 28 33 37 |
0 |
0 |
37 |
100 |
6 |
39 |
200 |
13 |
41 |
300 |
20 |
43 |
400 |
27 |
45 |
500 |
33 |
46* |
600 |
38 |
46* |
700 |
41 |
41 . |