Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикладная математика. Курсовик. Вариант 3.doc
Скачиваний:
14
Добавлен:
16.12.2013
Размер:
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=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

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

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