Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
16.12.2013
Размер:
403.97 Кб
Скачать

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

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

3

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

4

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

Следовательно, полученные решения верны.