1. Цель работы.
1.Изучение методов решения задач поиска кратчайших путей на ориентированном графе.
2.Приобретение навыков построения математических моделей задач поиска кратчайших путей.
3.Усвоение алгоритмов и программной реализации метода поиска кратчайших путей.
2. Порядок выполнения работы.
1. Изучить пример, приведённый в методическом пособии.
2. Построить общую математическую модель задачи о кратчайших путях.
3. Сформулировать частную модель задачи с указанными параметрами согласно выданному заданию.
4. Используя диалоговую программу KrPut, решить сформулированную задачу.
6. Результаты лабораторной работы оформить в виде отчета.
3. Пример выполнения работы
Содержательная постановка задачи. Некоторое оборудование эксплуатируется в течение 5-ти лет (от капитального ремонта до капитального ремонта). В начале каждого года эксплуатации (кроме первого) можно провести профилактический средний ремонт. Эксплуатационные расходы зависят от количества лет t , в течение которых оборудование эксплуатируется без ремонта, и от количества лет , прошедших с начала эксплуатации. Эти расходы заданы в виде таблицы.
Расходы на эксплуатацию оборудования (у.е.)
-
t
0
1
2
3
4
1
10
12
11
12
17
2
23
21
20
19
-
3
39
34
33
-
-
4
54
51
-
-
-
5
72
-
-
-
-
Составить план профилактических средних ремонтов (в какие годы их проводить), чтобы получить минимальный суммарный расход по эксплуатации за все пять лет.
П
остроение
математической модели. Схему проведения
капитальных ремонтов можно представить
в виде ориентированного графа:
Здесь
узлы графа обозначают начало
соответствующего года эксплуатации
(узел №6 означает начало 6-го года, т.е.
окончание эксплуатации). Дуга из узла
в узел
означает, что оборудование ремонтируется
в начале
-того года (кроме первого) и в дальнейшем
эксплуатируется без ремонта до начала
-того года. Определим веса дуг
графа, исходя из таблицы расходов на
эксплуатацию.
Рассмотрим веса дуг, исходящих из узла №1
- оборудование эксплуатируется без
ремонта в течение 1-го года, и до этого
не эксплуатировалось. Данной ситуации
соответствует клетка таблицы
= 1,
=
0. Следовательно, вес дуги
= 10.
- Оборудование эксплуатируется без
ремонта в течение двух лет, и до этого
не эксплуатировалось. Данной ситуации
соответствует клетка таблицы
=2,
=
0. Следовательно, вес дуги
= 23. Аналогично:
= 39,
= 54,
= 72.
Рассмотрим веса дуг, исходящих из узла №2.
- вес дуги соответствует ситуации, когда
оборудование эксплуатируется 1 год без
ремонта, а до этого проработало 1 год.
Следовательно, обращаемся к клетке
таблицы со значениями
=1,
=1.
Следовательно, имеем вес дуги:
=12. Руководствуясь подобными рассуждениями,
определяем веса всех дуг. Полученные
результаты заносим в новую таблицу,
отражающую длины дуг, соединяющие
соответствующие узлы построенного
графа:
i j |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
- |
10 |
23 |
39 |
54 |
72 |
2 |
- |
- |
12 |
21 |
34 |
51 |
3 |
- |
- |
- |
11 |
20 |
33 |
4 |
- |
- |
- |
- |
12 |
19 |
5 |
- |
- |
- |
- |
- |
17 |
6 |
- |
- |
- |
- |
- |
- |
Затраты за все 5 лет эксплуатации
складываются из затрат за каждый период,
когда оборудование не ремонтировалось.
Следовательно, задачу минимизации
затрат можно рассматривать как задачу
поиска кратчайшего пути на построенном
графе из узла №1 в узел №6. В терминах
поставленной задачи вхождение дуги
в кратчайший путь означает, что
оборудование ремонтируется в начале
-того года и эксплуатируется в дальнейшем
без ремонта до начала
-того.
Введем обозначение
Тогда длину кратчайшего пути с минимумом суммарных затрат (весов ) можно определить математическим выражением::
, (1)
где
множество индексов
и
вершин графа, соединенных дугами с
весами
.
Поскольку в путь входит только одна дуга, исходящая из одной вершины в другую,
то условие, определяющее выбор одной дуги из множества дуг,
исходящих из начального узла с номером
,
определяется соотношением
(2)
где
подмножество индексов
вершин графа, с которыми соединена
вершина с номером
.
Условие, определяющее выбор одной
входящей дуги в промежуточный узел
из множества входящих дуг
,
.
Выбор, соответственно, одной выходящей
дуги из промежуточного узла
из множества выходящих дуг
,
для всех
не равных номеру
начального узла
,
и номеру
конечного узла
,
определяется выражением
(3)
где
подмножество индексов
вершин графа, которые соединены с
промежуточной вершиной
.
подмножество индексов
вершин графа, с которы-
ми соединена промежуточная вершина .
Условие, определяющее выбор одной
входящей дуги в конечный узел номером
из множества входящих дуг
,
,
определяется соотношением
=
1, (4)
где
подмножество индексов
вершин графа, которые соединены с
конечным узлом
.
Таким образом, целевая функция (1) определяет длину пути, которая должна быть минимальной. Ограничение (2) требует, чтобы в рассматриваемый путь из начальной вершины r в конечную вершину s входила только одна дуга, исходящая из r. Условие (3) представляет собой условие непрерывности пути, которое означает, что если какая либо дуга пути входит в промежуточный узел (кроме начального и конечного), то из него обязательно должна выйти одна дуга. Или, если путь не заходит в узел, то он и не должен из него выходить. Условие (4) говорит о том, что путь кончается в вершине s, т.е. в рассматриваемый путь из r в s входит только одна дуга, входящая в вершину s.
Опишем задачу принятия решения о выборе кратчайшего пути в конкретно рассматриваемой задаче в математической форме:
(5)
,
,
,
,
,
,
.
Сформулированная задача (5) представляет собой задачу целочисленного линейного программирования. Задача решается методом Гомори (методом «ветвей и границ»), который реализован в программе KrPut. Программа предназначена для определения кратчайшего пути на заданном графе из любой начальной вершины в любую конечную вершину.
Порядок решения задачи (5) с использованием программы KrPut осуществляется следующим образом.
Шаг 1
В проводнике
запускается исполняемый файл KrPut.exe.
Открывается рабочая область (Рис.1)., в
которой необходимо ввести данные задачи:
число вершин графа, номера начальной и
конечной вершин.
Рис. 1
Шаг 2
Для развертывания матрицы отношений (связей между вершинами графа) нажимается кнопка «Применить». После введения числа вершин, номера начальной вершины и конечной вершины становится доступным заполнение значений длин дуг между парами вершин (Рис. 2). Значения длин дуг студент должен ввести самостоятельно
Рис. 2
Шаг 2
Нажатием на кнопки «Вычислить» запускается алгоритм решения задачи и в таблице (Рис.3) отражаются найденные двойственные переменные:
Рис. 3
и диалоговое окно с результатом решения (Рис. 4):
Рис. 4
В результатах вычислений программы KrPut в рабочей области «Результат вычислений» отображаются следующие результаты:
«Длина кратчайшего пути между узлами 1 и 6: 50».
«Узлы
кратчайшего пути между ними: 1, 2, 4, 6»,
которым соответствуют переменные задачи
(5):
,
определяющие наикратчайший путь (Рис.5)
длиной L=50.
Рис.5
В терминах поставленной задачи решение принимается следующим образом: текущие ремонты следует проводить в начале второго и четвертого годов эксплуатации. При этом минимальные общие затраты на эксплуатацию оборудования составят 50 у.е.
