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