- •Федеральное государственное бюджетное образовательное учреждение
- •Глава 1. Применение линейного программирования.
- •1.1. Сущность линейного программирования. Симплексный метод.
- •1.2. Решение текстовой задачи на симплексный метод линейного программирования.
- •Глава 2. Применение метода ветвей и границ.
- •2.1. Сущность метода ветвей и границ.
- •2.2. Решение задачи коммивояжера.
- •Глава 3. Применение методов смо при выборе оптимального решения экономических задач.
- •3.1. Сущность системы массового обслуживания.
- •3.2. Решение задачи на тему «смо многоканальное с отказами».
- •3.3. Решение задачи на тему «смо с неограниченной очередью».
- •Заключение.
- •Источники и литература.
2.2. Решение задачи коммивояжера.
ОАО «ЖТК» («Железнодорожная торговая компания») отправляет менеджера по обучению региональных представителей в 5 субъектов страны, в которых расположены филиалы компании - Татарстан, Башкортостан, Кировская область, Нижегородская область и Пермский край. Менеджеру нужно проработать маршрут, чтобы посетить каждый регион единожды и вернуться обратно в головной офис. Ниже приведена таблица стоимости проездов в сотнях рублей. Определить оптимальный маршрут менеджера при минимальных затратах.
i/j |
Головной офис (1) |
Татарстан (2) |
Пермский край (3) |
Кировская область (4) |
Нижегородская область (5) |
Башкортостан (6) |
Головной офис (1) |
|
31 |
15 |
19 |
8 |
55 |
Татарстан (2) |
19 |
|
22 |
31 |
7 |
35 |
Пермский край (3) |
25 |
43 |
|
53 |
57 |
16 |
Кировская область (4) |
5 |
50 |
49 |
|
39 |
9 |
Нижегородская область (5) |
24 |
24 |
33 |
5 |
|
14 |
Башкортостан (6) |
34 |
26 |
6 |
3 |
36 |
|
Составим экономико-математическую модель.
-целевая функция, где Ci j - затраты на переход из i-го города в j-й.
При ограничениях:
Для определения нижней границы множества воспользуемся операцией редукции или приведения матрицы по строкам, для чего необходимо в каждой строке матрицы найти минимальный элемент: di = min(j) dij
Табл. 1
i / j |
1 |
2 |
3 |
4 |
5 |
6 |
di |
1 |
|
31 |
15 |
19 |
8 |
55 |
8 |
2 |
19 |
|
22 |
31 |
7 |
35 |
7 |
3 |
25 |
43 |
|
53 |
57 |
16 |
16 |
4 |
5 |
50 |
49 |
|
39 |
9 |
5 |
5 |
24 |
24 |
33 |
5 |
|
14 |
5 |
6 |
34 |
26 |
6 |
3 |
36 |
|
3 |
Затем вычитаем di из элементов рассматриваемой строки. В связи с этим во вновь полученной матрице в каждой строке будет как минимум один ноль.
Табл. 2
i /j |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
|
23 |
7 |
11 |
0 |
47 |
2 |
12 |
|
15 |
24 |
0 |
28 |
3 |
9 |
27 |
|
37 |
41 |
0 |
4 |
0 |
45 |
44 |
|
34 |
4 |
5 |
19 |
19 |
28 |
0 |
|
9 |
6 |
31 |
23 |
3 |
0 |
33 |
|
dj |
0 |
19 |
3 |
0 |
0 |
0 |
Такую же операцию редукции проводим по столбцам, для чего в каждом столбце находим минимальный элемент: dj = min(i) dij
Табл. 3
i /j |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
|
4 |
4 |
11 |
0 |
47 |
2 |
12 |
|
12 |
24 |
0 |
28 |
3 |
9 |
8 |
|
37 |
41 |
0 |
4 |
0 |
26 |
41 |
|
34 |
4 |
5 |
19 |
0 |
25 |
0 |
|
9 |
6 |
31 |
4 |
0 |
0 |
33 |
|
После вычитания минимальных элементов получаем полностью редуцированную матрицу, где величины di и dj называются константами приведения.
Сумма констант приведения определяет нижнюю границу H:
H = ∑di + ∑dj =8+7+16+5+5+3+0+19+3+0+0+0 = 66
Элементы матрицы dij соответствуют расстоянию от пункта i до пункта j.
Поскольку в матрице 6 городов, то D является матрицей 6x6 с неотрицательными элементами dij 0
Каждый допустимый маршрут представляет собой цикл, по которому коммивояжер посещает город только один раз и возвращается в исходный город.
Определим ребро ветвления и разобьем все множество маршрутов относительно этого ребра на два подмножества (i,j) и (i*,j*).
С этой целью для всех клеток матрицы с нулевыми элементами заменяем поочередно нули на(бесконечность) и определяем для них сумму образовавшихся констант приведения, они приведены в скобках. То есть, считаем штрафы, которые мы можем получить, если не поедим в какой-либо субъект.
d(1,5) = 4 + 0 = 4; d(2,5) = 12 + 0 = 12; d(3,6) = 8 + 4 = 12; d(4,1) = 4 + 9 = 13; d(5,2) = 0 + 4 = 4; d(5,4) = 0 + 0 = 0; d(6,3) = 0 + 4 = 4; d(6,4) = 0 + 0 = 0;
Табл. 4
i j |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
|
4 |
4 |
11 |
0(4) |
47 |
2 |
12 |
|
12 |
24 |
0(12) |
28 |
3 |
9 |
8 |
|
37 |
41 |
0(12) |
4 |
0(13) |
26 |
41 |
|
34 |
4 |
5 |
19 |
0(4) |
25 |
0(0) |
|
9 |
6 |
31 |
4 |
0(4) |
0(0) |
33 |
|
Наибольшая сумма констант приведения равна (4 + 9) = 13 для ребра (4,1), следовательно, множество разбивается на два подмножества (4,1) и (4*,1*), то есть к корню дерева добавляем ветки принятия и отвержения. Включение ребра (4,1) проводится путем исключения всех элементов 4-ой строки и 1-го столбца, в которой элемент d14 заменяем на , для исключения образования негамильтонова цикла, так как менеджер не может ехать обратно из Головного офиса в Кировскую область.
Нижняя граница гамильтоновых циклов этого подмножества, то есть сумма на ветке отвержения: H(4*,1*) = 66 + 13 = 79
В результате получим другую сокращенную матрицу (5 x 5), которая подлежит операции приведения, но т.к. в каждой строке и столбце уже имеется 0,то не будем ее редуцировать. Соответственно нижняя граница подмножества (4,1), то есть на ветке принятия равна: H(4,1) = 66 + 0 = 66
Табл.5
i /j |
2 |
3 |
4 |
5 |
6 |
1 |
4 |
4 |
|
0 |
47 |
2 |
|
12 |
24 |
0 |
28 |
3 |
8 |
|
37 |
41 |
0 |
5 |
0 |
25 |
0 |
|
9 |
6 |
4 |
0 |
0 |
33 |
|
Снова считаем штрафы табл. 5
d(1,5) = 4 + 0 = 4; d(2,5) = 12 + 0 = 12; d(3,6) = 8 + 9 = 17; d(5,2) = 0 + 4 = 4; d(5,4) = 0 + 0 = 0; d(6,3) = 0 + 4 = 4; d(6,4) = 0 + 0 = 0;
Табл. 6
i /j |
2 |
3 |
4 |
5 |
6 |
1 |
4 |
4 |
|
0(4) |
47 |
2 |
|
12 |
24 |
0(12) |
28 |
3 |
8 |
|
37 |
41 |
0(17) |
5 |
0(4) |
25 |
0(0) |
|
9 |
6 |
4 |
0(4) |
0(0) |
33 |
|
Наибольшая сумма констант приведения равна (8 + 9) = 17 для ребра (3,6), следовательно, множество разбивается на два подмножества (3,6) и (3*,6*). То есть к корню дерева добавляем ветки принятия и отвержения. Включение ребра (3,6) проводится путем исключения всех элементов 3-ой строки и 6-го столбца, в которой элемент d63 заменяем на , для исключения образования негамильтонова цикла. Нижняя граница гамильтоновых циклов этого подмножества:
H(3*,6*) = 66 + 17 = 83
В результате получим другую сокращенную матрицу (4 x 4), которая подлежит операции приведения. В каждой строке табл. 7 мы имеем 0, но не в каждом столбце он есть, соответсвенно, редуцируем табл.7.
Сумма констант приведения сокращенной матрицы: ∑di + ∑dj = 4
После операции приведения редуцированная матрица будет иметь вид:
Табл. 7
i /j |
2 |
3 |
4 |
5 |
1 |
4 |
4 |
|
0 |
2 |
|
12 |
24 |
0 |
5 |
0 |
25 |
0 |
|
6 |
4 |
|
0 |
33 |
dj |
0 |
4 |
0 |
0 |
Нижняя граница подмножества (3,6), то есть ветка принятия, равна: H(3,6) = 66 + 4 = 70
Считаем штрафы для Табл. 7.
d(1,3) = 0 + 8 = 8; d(1,5) = 0 + 0 = 0; d(2,5) = 8 + 0 = 8; d(5,2) = 0 + 4 = 4; d(5,4) = 0 + 0 = 0; d(6,4) = 4 + 0 = 4;
Табл.8
i/ j |
2 |
3 |
4 |
5 |
1 |
4 |
0(8) |
|
0(0) |
2 |
|
8 |
24 |
0(8) |
5 |
0(4) |
21 |
0(0) |
|
6 |
4 |
|
0(4) |
33 |
Наибольшая сумма констант приведения равна (0 + 8) = 8 для ребра (1,3), следовательно, множество разбивается на два подмножества (1,3) и (1*,3*), тогда к дереву решению добавляем ветки принятия и отвержения. Включение ребра (1,3) проводится путем исключения всех элементов 1-ой строки и 3-го столбца. Нарисуем маршрут нашего пути. Чтобы цикл не замкнулся, мы должны поставить на H(6,4) в Табл.9.
6
3
1
4
В результате получим другую сокращенную матрицу (3 x 3), которая подлежит операции приведения, но т.к. в каждом столбце и строке есть хотя бы один 0, то сумма констант приведения сокращенной матрицы: ∑di + ∑dj = 0, тогда
Нижняя граница подмножества (1,3) равна: H(1,3) = 70 + 0 = 70.
Нижняя граница гамильтоновых циклов этого подмножества:
H(1*,3*) = 70 + 8 = 78
Табл. 9.
i /j |
2 |
4 |
5 |
di |
2 |
|
24 |
0 |
0 |
5 |
0 |
0 |
|
0 |
6 |
4 |
|
33 |
4 |
Редуцируем Табл.9 по строкам.
Табл. 10
i /j |
2 |
4 |
5 |
2 |
|
24 |
0(53) |
5 |
0(0) |
0(24) |
|
6 |
0(29) |
|
29 |
Считаем штрафы в Табл.10.
d(2,5) = 24 + 29 = 53; d(5,2) = 0 + 0 = 0; d(5,4) = 0 + 24 = 24; d(6,2) = 29 + 0 = 29;
Наибольшая сумма констант приведения равна (24 + 29) = 53 для ребра (2,5), следовательно, множество разбивается на два подмножества (2,5) и (2*,5*).
Нижняя граница гамильтоновых циклов этого подмножества:
H(2*,5*) = 70 + 53 = 123.
Нижняя граница подмножества (2,5) равна: H(2,5) = 70 + 4 = 74
Включение ребра (2,5) проводится путем исключения всех элементов 2-ой строки и 5-го столбца, в которой элемент d52 заменяем на , для исключения образования негамильтонова цикла. В результате получим другую сокращенную матрицу (2 x 2), которая подлежит операции приведения.
Сумма констант приведения сокращенной матрицы: ∑di + ∑dj = 0
После операции приведения сокращенная матрица будет иметь вид:
Табл.11
i/j |
2 |
4 |
5 |
|
0 |
6 |
0 |
|
В соответствии с этой матрицей включаем в гамильтонов маршрут ребра (5,2) и (6,4), так как в каждых строках и столбцах по одному 0.
2
Итак, наш исходный маршрут:
5
Т=((1;3), (3;6), (6;2), (2;5), (5;4), (4;1)).
6
V(Т) = 5+15+16+26+5+7=74.
4
1
3
Маршрут оптимален, так как ветки
отвержения имеют большую стоимость,
чем наш проработанный маршрут, тогда
матрица маршрута будет выглядеть так:
Итак, для того, чтобы менеджеру ОАО «ЖТК» как можно дешевле для фирмы объехать все регионы, он должен из Головного офиса отправиться в Пермский край, оттуда в Башкортостан, после в Татарстан, оттуда в Нижегородскую область, а затем в Кировскую область, откуда вернуться обратно в Головной центр, и тогда он потратит всего 7400 рублей.
Проведем анализ решения. Предположим, что менеджер не может поехать из Головного офиса в Пермский край в связи с тем, что прямой транспорт ходит раз в неделю, а нужно начать объезд как можно раньше, тогда пойдем по ветке отвержения (1*,3*), то есть обратимся к таблице возврата- 7, в которой на элемент d13 поставим . И тогда редуцируем нашу таблицу. Табл. 7В.
i /j |
2 |
3 |
4 |
5 |
1 |
4 |
|
|
0 |
2 |
|
12 |
24 |
0 |
5 |
0 |
25 |
0 |
|
6 |
4 |
|
0 |
33 |
dj |
0 |
12 |
0 |
0 |
Нижняя граница подмножества (3,6) равна 78.
Считаем штрафы для Табл. 7.
d(1,3) = 0 + 8 = 8; d(1,5) = 0 + 0 = 0; d(2,5) = 8 + 0 = 8; d(5,2) = 0 + 4 = 4; d(5,4) = 0 + 0 = 0; d(6,4) = 4 + 0 = 4;
Табл.8В
i/ j |
2 |
3 |
4 |
5 |
1 |
4 |
|
|
0(0) |
2 |
|
0(13) |
24 |
0(8) |
5 |
0(4) |
13 |
0(0) |
|
6 |
4 |
|
0(4) |
33 |
Наибольшая сумма констант приведения равна (0 + 13) = 13 для ребра (2,3), следовательно, множество разбивается на два подмножества (2,3) и (2*,3*), тогда к дереву решению к ветке отвержения (1*,3*) добавляем ветки принятия и отвержения (2,3). Включение ребра (2,3) проводится путем исключения всех элементов 2-ой строки и 3-го столбца. Нарисуем маршрут нашего пути. Чтобы цикл не замкнулся, мы должны поставить на H(6,2) в Табл.9.
6
3
2
1
4
В результате получим другую сокращенную матрицу (3 x 3), которая подлежит операции приведения, но т.к. в каждом столбце и строке есть хотя бы один 0, то сумма констант приведения сокращенной матрицы: ∑di + ∑dj = 0, тогда
Нижняя граница подмножества (1,3) равна: H(2,3) = 78 + 0 = 78.
Нижняя граница гамильтоновых циклов этого подмножества:
H(2*,3*) = 78 + 13 = 91
Табл. 9В.
i/ j |
2 |
4 |
5 |
1 |
4 |
|
0(37) |
5 |
0(4) |
0(0) |
|
6 |
|
0(33) |
33 |
Таблица редуцирована, в каждых строках и столбцах хотя бы по одному нулю. Считаем штрафы в Табл.9.
d(1,5) = 4 + 33 = 37; d(5,2) = 4 + 0 = 4; d(5,4) = 0 + 0 = 0; d(6,4) = 33 + 0 = 33;
Наибольшая сумма констант приведения равна (4 + 33) = 37 для ребра (1,5), следовательно, множество разбивается на два подмножества (1,5) и (1*,5*).
Нижняя граница гамильтоновых циклов этого подмножества:
H(1*,5*) = 78 + 37 = 115.
Нижняя граница подмножества (1,5) равна: H(1,5) = 78 + 0 = 78
Включение ребра (1,5) проводится путем исключения всех элементов 1-ой строки и 5-го столбца, в которой элемент d54 заменяем на , для исключения образования негамильтонова цикла. В результате получим другую сокращенную матрицу (2 x 2), которая подлежит операции приведения.
Сумма констант приведения сокращенной матрицы: ∑di + ∑dj = 0
После операции приведения сокращенная матрица будет иметь вид:
Табл.10В
i/ j |
2 |
4 |
5 |
0 |
|
6 |
|
0 |
В соответствии с этой матрицей включаем в гамильтонов маршрут ребра (5,2) и (6,4), так как в каждых строках и столбцах по одному 0.
3
Итак, наш исходный маршрут:
6
Т=((1;5), (5;2), (2;3), (3;6), (6;4), (4;1)).
2
V(Т) = 5+8+24+22+16+3=78.
4
1
5
Матрица маршрута будет выглядеть так:
Составим дерево решений.
Н=66
41
36
13
25
23
54
15
62
52
64
Итак, если менеджер ОАО «ЖТК» не может начать свой маршрут с Пермского края, он должен из Головного офиса отправиться в Нижегородскую область, оттуда в Татарстан, после в Пермский край, после в Башкортостан, а затем в Кировскую область, откуда вернуться обратно в Головной центр, и тогда он потратит всего 7800 рублей. Мы видим, что маршрут не оптимален в таком случае, хотя из всех веток отвержения он имел наименьшую стоимость.