Скачиваний:
2
Добавлен:
02.11.2025
Размер:
212.59 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧБРУЕВИЧА»

Факультет инфокоммуникационных сетей и систем

Кафедра вычислительной техники и программной инженерии

ЛАБОРАТОРНАЯ РАБОТА №5

По дисциплине

«Оптимизация и математические методы принятия решений»

Вариант 8

Выполнил: Студент 2-го курса Дневного отделения Группы ИКПИ-32

Андреев А. А., Жилкин Д. А, Яковлев М. А. Преподаватель: Владимиров С. А.

Санкт-Петербург

2025

Цель работы

Приобретение навыков постановки и решения задач оптимизации методом динамического программирования.

Постановка задачи

На региональной сети дорог имеется несколько маршрутов, по которым можно доставить груз из пункта 1 в пункт 10. Известны стоимости перевозки единицы груза между пунктами сети. Требуется:

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

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

3.При аналитическом решении вручную привести формулы и таблицы оптимизации по этапам, при программном решении сопроводить скриптовый код подробными комментариями.

4.Результаты работы оформить в виде таблицы или колонок с данными: Н. П. «А» — н. п. «Б» — ОПТИМАЛЬНЫЙ МАРШРУТ — ЗАТРАТЫ.

i/j

1

2

3

4

5

6

7

8

9

10

1

0

6

2

6

 

 

 

 

 

 

2

6

0

 

 

7

 

3

 

 

 

3

2

 

0

 

9

2

8

 

 

 

4

6

 

 

0

5

2

9

 

 

 

5

 

7

9

5

0

 

 

4

6

 

6

 

 

2

2

 

0

 

7

4

 

7

 

3

8

9

 

 

0

 

6

 

8

 

 

 

 

4

7

 

0

 

7

9

 

 

 

 

6

4

6

 

0

6

10

 

 

 

 

 

 

 

7

6

0

 

 

 

 

 

 

 

 

 

 

 

Ход работы

1. Основное функциональное уравнение динамического программирования:

( −1, ) = extr(Ui) [ ( −1, ) + +1( )], = 1 …

−1 — множество состояний, в которых система находится перед -м шагом,

— множество состояний системы в конце -го шага,

— множество управлений на -ом шаге, под воздействием которых система переходит в одно из состояний множества , (−1, ) — условнооптимальное значение целевой функции на интервале от -ого до -го шага включительно, (−1, ) — значение целевой функции на -ом шаге для всех управлений из множества , +1( ) — условно

оптимальное значение целевой функции на интервале от ( + 1)-го шага до -го включительно. На последнем-м шаге справедлива следующая формула: (−1, ) = extr(U ) [ (−1, )].

2. Нахождение наиболее экономного маршрута перевозки груза из пункта 1 в

пункт 10.

Разобьем все пункты района на группы. К группе I

отнесем пункт 1, к группе II — пункты, в которые можно попасть непосредственно из пункта 1 (пункты 2, 3, 4), к группе III те пункты, в которые можно попасть непосредственно из любого пункта группы II (5, 6, 7), к

группе IV те пункты, в которые можно попасть непосредственно из любого пункта группы III (8, 9). В результате движение транспорта с грузом из пункта 1 в пункт 10 можно рассматривать как четырехшаговый процесс.

I

II

III

IV

V

 

 

 

 

 

 

2

5

8

 

 

 

 

 

 

1

3

6

9

10

 

 

 

 

 

 

4

7

 

 

 

 

 

 

 

Первый этап: 4( 3, 4) = min(U4) 4( 3, 4).

X3

U4

X4

F4

 

 

 

 

C8

8-10

C10

7

 

 

 

 

C9

9-10

C10

6

 

 

 

 

Второй этап: 3( 2, 3) = min(U3) [ 3( 2, 3) +

4( 3)].

X2

U3

X3

Z3

F4

Z3+F4

F3

 

 

 

 

 

 

 

C5

5-8

C8

4

7

11

11

 

 

 

 

 

 

 

 

5-9

C9

6

6

12

-

 

 

 

 

 

 

 

C6

6-8

C8

7

7

14

-

 

 

 

 

 

 

 

 

6-9

C9

4

6

10

10

C7

7-9

C9

6

6

12

12

 

 

 

 

 

 

 

Третий этап: 2( 1, 2) = min(U2) [ 2( 1, 2) +

3( 2)].

X1

U2

X2

Z2

F3

Z2+F3

F2

 

 

 

 

 

 

 

C2

2-5

C5

7

11

18

-

 

 

 

 

 

 

 

 

2-7

C7

3

12

15

15

 

 

 

 

 

 

 

C3

3-5

C5

9

11

20

-

 

 

 

 

 

 

 

 

3-6

C6

2

10

12

12

 

3-7

C7

8

12

20

-

 

 

 

 

 

 

 

C4

4-5

C5

5

11

16

-

 

 

 

 

 

 

 

 

4-6

C6

2

10

12

12

 

 

 

 

 

 

 

 

4-7

C7

9

12

21

-

 

 

 

 

 

 

 

Заключительный четвертый этап: 1( 0, 1) = min(U1) [ 1( 0, 1) + 2( 1)].

X0

U1

X1

Z1

F2

Z1+F2

F1

 

 

 

 

 

 

 

C1

1-2

C2

6

15

21

 

 

 

 

 

 

 

 

 

1-3

C3

2

12

14

14

 

1-4

C4

6

12

18

 

 

 

 

 

 

 

 

Наиболее экономный маршрут перевозки: 1 → 3 → 6 → 9 → 10.

Транспортные расходы: 2 + 2 + 4 + 6 = 14 денежных единиц на единицу груза.

Таким же образом находим оптимальные маршруты перевозки груза из всех пунктов сети в пункт 10:

Начальный

Конечный

Оптимальный

Затраты

пункт

пункт

путь

 

 

 

 

 

 

1

10

1

→ 3 → 6 → 9

14

 

→ 10

 

 

 

 

 

 

 

 

 

2

 

2

→ 7 → 9 → 10

15

 

 

 

 

 

3

 

3

→ 6 → 9 → 10

12

 

 

 

 

 

4

 

4

→ 6

→ 9 → 10

12

 

 

 

 

 

 

5

 

5

→ 8

→ 10

11

 

 

 

 

 

 

6

 

6

→ 9

→ 10

10

 

 

 

 

 

 

7

 

7

→ 9

→ 10

12

 

 

 

 

 

8

 

8

→ 10

7

 

 

 

 

 

9

 

9

→ 10

6

 

 

 

 

 

 

Ответы на вопросы:

1.Динамическое программирование — специальный метод оптимизации, суть которого состоит в отыскании оптимального решения путем выполнения вычислений в несколько шагов (этапов). Динамическое программирование — способ решения сложных задач путём разбиения их на более простые подзадачи.

2.Методом динамического программирования можно решать следующие задачи:

1)Задача о выборе наиболее экономного маршрута.

2)Задача о вычислении чисел Фибоначчи.

3)Алгоритм Флойда — Уоршелла. Поиск кратчайших расстояний между всеми вершинами взвешенного ориентированного графа.

4)Алгоритм Беллмана — Форда. Поиск кратчайшего пути во взвешенном графе между двумя заданными вершинами.

3.Алгоритм решения задач методом динамического программирования:

1)Решить отдельные части задачи (подзадачи) только один раз, сократив количество вычислений.

2)Объединить решения подзадач в одно общее решение.

4.Основное функциональное уравнение динамического программирования: ( −1, ) = extr(Ui) [ ( −1, ) +

+1( )], = 1 …

5.Вычислительная процедура метода динамического программирования:

1)Первый этап: длительный и трудоемкий. Решение задачи от конца к началу, т. е. определение условно-оптимального решения.

2)Второй этап: короткий и уточняющий решение первого этапа. Решение задачи от начала к концу, т. е. определение безусловно оптимального решения.