Лабораторные работы. Владимиров / Оптимизация_Лабораторная_№5_Отчет
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА»
Факультет инфокоммуникационных сетей и систем
Кафедра вычислительной техники и программной инженерии
ЛАБОРАТОРНАЯ РАБОТА №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) Второй этап: короткий и уточняющий решение первого этапа. Решение задачи от начала к концу, т. е. определение безусловно оптимального решения.
