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

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

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

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

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

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

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

ЛАБОРАТОРНАЯ РАБОТА №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 → 10

14

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) Второй этап: короткий и уточняющий решение первого этапа. Решение задачи от начала к концу, т. е. определение безусловно оптимального решения.