Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вариант21.doc
Скачиваний:
5
Добавлен:
03.09.2019
Размер:
469.5 Кб
Скачать

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]