Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ЭММ и М.doc
Скачиваний:
32
Добавлен:
01.03.2025
Размер:
5.95 Mб
Скачать

4.2. Задача о кратчайшем расстоянии и ее решение методом динамического программирования

Решение этой задачи разберем на конкретном примере. На рис. 4.2.1 изображена сеть дорог, проходящих через пункты 1...10 с указанием расстояний между пунктами сети.

5

2

5

5

8

8

4

4

8

3

2

8

1

3

6

10

4

6

8

4

4

9

7

5

4

7

5

7

Рис. 4.2.1.

ТРЕБУЕТСЯ:

1. Методом динамического программирования найти на сети наиболее короткий маршрут доставки груза из пункта 1 в пункт 10 и его длину.

2. Выписать оптимальные маршруты перевозки груза из всех остальных пунктов сети в пункт 10 и указать их длину.

Решение.

В данной задаче система S – процесс перевозки груза. Состояния системы – пункты, через которые проезжает транспортное средство. Их можно задать цифрами от 1 до 10 (номером пункта). Управления: если S находится в состоянии , то управлениями можно считать выбор одной из дорог, выходящей из п. в направлении п.10. Так как различных маршрутов из п.1 в п.10 очень много, задачу будем решать методом динамического программирования.

Для осуществления инвариантного погружения данной задачи разобьем все состояния на этапы. Это можно сделать довольно естественным образом. Начальный (нулевой) этап будет состоять из одного п.1, т.е. К первому этапу отнесем все пункты, непосредственно связанные дорогой c п.1. Из рис. 4.2.1 видно, что Ко второму этапу относим все пункты, непосредственно связанные дорогой с пунктами первого этапа: Аналогично Получаем семейство задач: найти кратчайшие расстояния из каждого п. -го этапа до п.10 и соответствующие им маршруты. Решение полученного семейства задач сводится к построению функции Беллмана B(i; m), значения которой – кратчайшие расстояния от п. -го этапа до п.10.

Построение B(i; m) начнем с последнего этапа. При m = 3 очевидно B(8; 3) = 8, B(9; 3) = 4. Функциональное уравнение Беллмана

где – расстояния от п. -го этапа до п. -го этапа. Определяем остальные значения (c указанием маршрутов).

Ответ:

1) Оптимальный маршрут , расстояние – 19.

  1. Оптимальные маршруты из других пунктов (в скобках расстояния):

4.3. Задача о распределении средств и ее решение методом динамического программирования

Решение этой задачи рассмотрим на конкретном примере.

Для реконструкции и модернизации производства выделены денежные средства в объеме C = 100 тыс. $, которые следует распределить между четырьмя цехами. По каждому из цехов известен возможный прирост (ден.ед.) выпуска продукции в зависимости от выделенной ему суммы (возможные значения x и приведены в таблицах).

ЦЕХ № 1

ЦЕХ № 2

x

20

40

60

80

100

x

20

40

60

80

100

10

31

42

62

76

12

26

36

54

78

ЦЕХ № 3

ЦЕХ № 4

x

20

40

60

80

100

x

20

40

60

80

100

11

36

45

60

77

16

37

46

63

80

Необходимо так распределить средства, чтобы максимально увеличить выпуск продукции в целом.

Задачу решить методами динамического программирования.

Pешение.

1. Системой S в данном случае является предприятие из 4-х цехов, в которое вложена сумма C. Состояния и управления системы S однозначно взаимосвязаны – это способы распределения суммы C между цехами. Для осуществления инвариантного погружения задачи будем считать, что вместо суммы C вкладывается сумма y: Состояния системы искусственно разобьем на этапы: начальный (нулевой), первый, второй и третий этапы соответственно означают, что сумма y распределяется между четырьмя цехами, тремя цехами, двумя цехами и вся сумма y выделяется одному цеху. Нумерацию этапов удобнее проводить в обратном порядке: третий этап – m = 1, второй этап – m = 2, первый этап – m = 3, нулевой этап – m = 4. Обозначим через xk сумму средств, выделяемых k-му цеху. Тогда функция Беллмана, имеющая смысл максимальной прибыли при распределении суммы y между m цехами, запишется в виде:

Если при m = 1 … k–1 функция B(y, m) уже построена, то функциональное уравнение Беллмана для данной задачи принимает вид:

Пpи m = 1 дополнительно имеем:

2. При m = 1 функция Беллмана уже построена, т.е.

y

20

40

60

80

100

B(y, 1)

10

31

42

62

76

При m = 2 уравнение из функционального уравнения Беллмана

Так как функции и заданы таблично, то для определения максимума функции при каждом y составляем таблицу значений этой функции:

x

y

0

20

40

60

80

100

B(y, 2)

20

0 + 10

12 + 0

12

20

40

0 + 31

12 + 10

26 + 0

31

0

60

0 + 42

12 + 31

26 + 10

36 + 0

43

20

80

0 + 62

12 + 42

26 + 31

36 + 10

54 + 0

62

0

100

0 + 76

12 + 62

26 + 42

36 + 31

54 + 10

78 + 0

78

100

Подчеркнутые значения являются максимальными в строке, т.е. являются значениями функции Беллмана B(y, 2). Они выписаны в предпоследнем столбце. В последний столбец выписаны значения x, при которых достигается максимум функции Эти значения обозначены и их можно считать управлениями. Смысл – средства, выделяемые второму цеху, при оптимальном распределении суммы y между двумя цехами.

Аналогично, при m = 3:

Составляем таблицу значений функции

x

y

0

20

40

60

80

100

B(y, 3)

20

0 + 12

11 + 0

12

0

40

0 + 31

11 + 12

36 + 0

36

40

60

0 + 43

11 + 31

36 + 12

45 + 0

48

40

80

0 + 62

11 + 43

36 + 31

45 + 12

60 + 0

67

40

100

0 + 78

11 + 62

36 + 43

45 + 31

60 + 12

77 + 0

79

40

Как и выше – сумма средств, выделяемых третьему цеху, при оптимальном распределении суммы y между тремя цехами.

При m = 4:

Составляем таблицу значений функции

x

y

0

20

40

60

80

100

B(y, 4)

20

0 + 12

16 + 0

16

20

40

0 + 36

16 + 12

37 + 0

37

40

60

0 + 48

16 + 36

37 + 12

46 + 0

52

20

80

0 + 67

16 + 48

37 + 36

46 + 12

63 + 0

73

40

100

0 + 79

16 + 67

37 + 48

46 + 36

63 + 12

80 + 0

85

40

В двух последних столбцах этой таблицы получены значения функции Беллмана B(y, 4) и соответствующие им управления – т.е. количества

средств, выделяемых четвертому цеху при распределении суммы y между четырьмя цехами. После этого составляем сводную таблицу значений функции Беллмана и соответствующих ей управлений:

y

0

0

0

0

0

0

0

0

0

20

20

10

12

0

12

20

16

40

40

31

0

31

40

36

40

37

60

60

42

20

43

48

20

52

80

80

62

0

62

40

67

40

73

100

100

76

100

78

40

79

85

С помощью таблицы функции Беллмана для данной задачи можно произвести распределение любой суммы y от 0 до 100 между первыми k цехами 1k4. В клетке B(y, k) стоит максимальная прибыль от этого распределения, а в клетке – сумма, выделяемая k-му цеху. Распределим для примера сумму 60 тыс. $ между первыми двумя цехами. Максимальная прибыль составит B(60, 2)=43. При этом второму цеху следует выделить сумму =20 тыс. $. Для первого цеха остается 60–20=40 тыс. $.

Приступим теперь к решению исходной задачи, т. е. распределим сумму 100 тыс. $ между четырьмя цехами. Максимальная прибыль составит B(100, 4)=85. Для ее получения 4-му цеху выделяется тыс. $ На первые три цеха остается 100–40=60. По таблице функции Беллмана т. е. 3-му цеху следует выделить 40 тыс. $. На первые два остается 20. По клетке 2-му цеху выделяется 20 тыс. $. На первый цех средств не остается. Таким образом, получаем оптимальное распределение:

x1=0, x2=20 тыс. $, x3=40 тыс. $, x4=40 тыс. $.

Ответ: максимальный прирост продукции составит 85 ден. ед. при распределении средств следующим образом: второй цех получит 20 тыс. $, третий – 40 тыс. $, четвертый – 40 тыс. $.