Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Ижевский государственный технический университет имени М.Т. Калашникова»
(ФГБОУ ВПО «ИжГТУ имени М.Т. Калашникова»)
Сарапульский Политехнический Институт (филиал) ФГБОУ ВПО «ИжГТУ имени М.Т. Калашникова»
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к контрольной работе
по дисциплине «Логистика»
на тему: «Прикладное применение задачи коммивояжера»
для специальностей: 230101 «Вычислительные машины, комплексы, системы и сети», 210201 «Проектирование и технология радиоэлектронных средств», 080502 «Экономика и управление на предприятии (в машиностроении)», 080109 «Бухгалтерский учет, анализ и аудит»
очной и заочной форм обучения
Разработал: |
Галяутдинов Руслан Рамилевич, ст. преподаватель кафедры «Экономика и гуманитарные науки» |
Сарапул, 2014
СОДЕРЖАНИЕ
Теоретический материал ……………………………………………………. Задание к контрольной работе ……………………………………………... Варианты исходных данных ……………………………………………….. Приложения …………………………………………………………………. |
2 7 10 11 |
ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ
ВВЕДЕНИЕ
Одна из самых известных и важных задач транспортной логистики (и класса задач оптимизации в целом) задача коммивояжера (англ. «Travelling salesman problem», TSP). Также встречается название «задача о бродячем торговце». Суть задачи сводится к поиску оптимального, то есть кратчайшего пути проходящего через некие пункты по одному разу. Например, задача коммивояжера может применяться для нахождения самого выгодного маршрута позволяющего коммивояжеру объехать определенные города со своим товаром по одному разу и вернуться в исходную точку. Мерой выгодности маршрута будет минимальное время, проведенное в пути, минимальные расходы на дорогу, или минимальная длина пути.
Кто и когда впервые начал исследовать задачу коммивояжера неизвестно, но одним из первых предложил решение подобной проблемы выдающийся математик XIX в. Уильям Гамильтон. Здесь мы рассмотрим замкнутый вариант задачи (т.е. такой, когда в итоге мы возвращаемся в исходную точку) и ее решение методом ветвей и границ.
ОБЩИЙ ПЛАН РЕШЕНИЯ
Для решения задачи коммивояжера методом ветвей и границ необходимо выполнить следующую последовательность действий:
1. Построение матрицы с исходными данными.
2. Нахождение минимума по строкам.
3. Редукция строк.
4. Нахождение минимума по столбцам.
5. Редукция столбцов.
6. Вычисление оценок нулевых клеток.
7. Редукция матрицы.
8. Если полный путь еще не найден, переходим к пункту 2, если найден к пункту 9.
9. Вычисление итоговой длины пути и построение маршрута.
ПОДРОБНАЯ МЕТОДИКА РЕШЕНИЯ
В целях лучшего понимания задачи будем оперировать не понятиями графа, его вершин и т.д., а понятиями простыми и максимально приближенными к реальности: вершины графа будут называться «города», ребра их соединяющие «дороги».
Итак, методика решения задачи коммивояжера:
1. Построение матрицы с исходными данными.
Сначала необходимо длины дорог соединяющих города представить в виде следующей таблицы:
Город |
1 |
2 |
3 |
4 |
1 |
М |
5 |
11 |
9 |
2 |
10 |
М |
8 |
7 |
3 |
7 |
14 |
М |
8 |
4 |
12 |
6 |
15 |
М |
В нашем примере у нас 4 города и в таблице указано расстояние от каждого города к 3-м другим, в зависимости от направления движения (т.к. некоторые ж/д пути могут быть с односторонним движением и т.д.).
Расстояние от города к этому же городу обозначено буквой M. Также используется знак бесконечности. Это сделано для того, чтобы данный отрезок путь был условно принят за бесконечно длинный. Тогда не будет смысла выбрать движение от 1-ого города к 1-му, от 2-ого ко 2-му, и т.п. в качестве отрезка маршрута.
2. Нахождение минимума по строкам.
Находим минимальное значение в каждой строке (di) и выписываем его в отдельный столбец.
Город |
1 |
2 |
3 |
4 |
di |
1 |
М |
5 |
11 |
9 |
5 |
2 |
10 |
М |
8 |
7 |
7 |
3 |
7 |
14 |
М |
8 |
7 |
4 |
12 |
6 |
15 |
М |
6 |
3. Редукция строк.
Производим редукцию строк из каждого элемента в строке вычитаем соответствующее значение найденного минимума (di).
Город |
1 |
2 |
3 |
4 |
di |
1 |
М |
0 |
6 |
4 |
5 |
2 |
3 |
М |
1 |
0 |
7 |
3 |
0 |
7 |
М |
1 |
7 |
4 |
6 |
0 |
9 |
М |
6 |
В итоге в каждой строке будет хотя бы одна нулевая клетка.
4. Нахождение минимума по столбцам.
Далее находим минимальные значения в каждом столбце (dj). Эти минимумы выписываем в отдельную строку.
Город |
1 |
2 |
3 |
4 |
di |
1 |
М |
0 |
6 |
4 |
5 |
2 |
3 |
М |
1 |
0 |
7 |
3 |
0 |
7 |
М |
1 |
7 |
4 |
6 |
0 |
9 |
М |
6 |
dj |
0 |
0 |
1 |
0 |
5. Редукция столбцов.
Вычитаем из каждого элемента матрицы соответствующее ему dj.
Город |
1 |
2 |
3 |
4 |
di |
1 |
М |
0 |
5 |
4 |
5 |
2 |
3 |
М |
0 |
0 |
7 |
3 |
0 |
7 |
М |
1 |
7 |
4 |
6 |
0 |
8 |
М |
6 |
dj |
0 |
0 |
1 |
0 |
В итоге в каждом столбце будет хотя бы одна нулевая клетка.
6. Вычисление оценок нулевых клеток.
Для каждой нулевой клетки получившейся преобразованной матрицы находим «оценку». Ею будет сумма минимального элемента по строке и минимального элемента по столбцу, в которых размещена данная нулевая клетка. Сама она при этом не учитывается. Найденные ранее di и dj не учитываются. Полученную оценку записываем рядом с нулем, в скобках.
Город |
1 |
2 |
3 |
4 |
1 |
М |
0 (4) |
5 |
4 |
2 |
3 |
М |
0 |
0 |
3 |
0 |
7 |
М |
1 |
4 |
6 |
0 |
8 |
М |
И так по всем нулевым клеткам:
Город |
1 |
2 |
3 |
4 |
1 |
М |
0 (4) |
5 |
4 |
2 |
3 |
М |
0 (5) |
0 (1) |
3 |
0 (4) |
7 |
М |
1 |
4 |
6 |
0 (6) |
8 |
М |
7. Редукция матрицы.
Выбираем нулевую клетку с наибольшей оценкой. Заменяем ее на «М». Мы нашли один из отрезков пути. Выписываем его (от какого города к какому движемся, в нашем примере от 4-ого к 2-му).
Город |
1 |
2 |
3 |
4 |
1 |
М |
0 (4) |
5 |
4 |
2 |
3 |
М |
0 (5) |
0 (1) |
3 |
0 (4) |
7 |
М |
1 |
4 |
6 |
0 (6) |
8 |
М |
Ту строку и тот столбец, где образовалось две «М» полностью вычеркиваем. В клетку соответствующую обратному пути ставим еще одну букву «М» (т.к. мы уже не будем возвращаться обратно).
Город |
1 |
2 |
3 |
4 |
1 |
М |
0 (4) |
5 |
4 |
2 |
3 |
М |
0 (5) |
М |
3 |
0 (4) |
7 |
М |
1 |
4 |
6 |
M |
8 |
М |
8. Если полный путь еще не найден, переходим к пункту 2, если найден к пункту 9.
Если мы еще не нашли все отрезки пути, то возвращаемся ко второму пункту и вновь ищем минимумы по строкам и столбцам, проводим их редукцию, считаем оценки нулевых клеток и т.д.
Если все отрезки пути найдены (или найдены еще не все отрезков, но оставшаяся часть пути очевидна) переходим к пункту 9.
9. Вычисление итоговой длины пути и построение маршрута.
Найдя все отрезки пути, остается только соединить их между собой и рассчитать общую длину пути (стоимость поездки по этому маршруту, затраченное время и т.д.). Длины дорог соединяющих города берем из самой первой таблицы с исходными данными.
В нашем примере маршрут получился следующий: 4 → 2 → 3 → 1 → 4.
Общая длина пути: L = 30.
ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ
Применение задачи коммивояжера на практике довольно обширно. В частности ее можно использовать для поиска кратчайшего маршрута при гастролях эстрадной группы по городам, нахождения последовательности технологических операций обеспечивающей наименьшее время выполнения всего производственного цикла и пр.
ЗАДАНИЕ К КОНТРОЛЬНОЙ РАБОТЕ
Цель контрольной работы: научиться на практике применять знания и навыки решения оптимизационных задач, полученные при прохождении курса дисциплины «Логистика», на примере «Travelling salesman problem» («Задача коммивояжера»).
Структура контрольной работы:
1. Титульный лист (1 стр.).
2. Бланк рецензии (1 стр.).
3. Введение (1 стр.).
4. Исходные данные матрица цен и скриншоты (2-3 стр.).
5. Произвольный вариант маршрута описание, граф, расчет стоимости (1 стр.).
6. Вычисленный вариант маршрута ход решения, граф, общая стоимость (2-3 стр.).
7. Вывод (1 стр.).
Содержание контрольной работы: следуйте приведенным ниже рекомендациям при решении контрольной работы:
1. Напишите к контрольной работе введение, в котором кратко обозначьте ее цель, задачи, актуальность.
2. В таблице с исходными данными найдите те, что соответствуют Вашему варианту. Это будут названия семи городов мира, один из них (начальная и конечная точка пути) одинаков для всех Москва. Моделируемая ситуация туристическое путешествие по этим городам.
3. Воспользовавшись любым онлайн-сервисом заказа билетов на авиарейсы (примеры приведены в приложениях) составьте матрицу цен на перелеты из каждого города во все остальные на конкретную дату (в целях упрощения примем любую ближайшую дату за опорную). В итоге у Вас получится таблица, аналогичная изображенной ниже:
Город |
Город А |
Город B |
Город C |
Город D |
Город E |
Город F |
Город G |
Город А |
М |
8 200 |
9 500 |
12 855 |
8 780 |
5 550 |
12 500 |
Город B |
8 200 |
М |
7 550 |
6 250 |
4 700 |
14 500 |
8 245 |
Город C |
11 250 |
3 250 |
М |
3 650 |
11 450 |
7 800 |
9 650 |
Город D |
5 850 |
6 600 |
10 720 |
М |
4 400 |
12 500 |
12 300 |
Город E |
11 450 |
7 200 |
5 500 |
9 840 |
М |
11 050 |
3 580 |
Город F |
4 500 |
7 450 |
12 550 |
7 800 |
13 570 |
М |
9 580 |
Город G |
8 900 |
4 700 |
5 655 |
4 500 |
5 470 |
15 950 |
М |
Перелеты из города в этот же город, обозначим символом «M», как нецелесообразные.
Обратите внимание, что цены на билеты одного направления, но разных авиакомпаний будут отличаться. Поэтому в матрицу цен вносите либо средние значения, либо стоимость самого дешевого билета (рассматриваем эконом-класс).
Сделайте выборочные скриншоты веб-страниц с ценой на билеты любых 5-7 направлений (например: Москва - Париж, Пекин Дели, и т.д.). Добавьте эти скриншоты в контрольную работу.
4. Предложите свой вариант маршрута, который позволит посетить все семь городов по одному разу и вернуться в исходную точку. На этом этапе не ставьте себе цель найти самый дешевый маршрут. Пока что просто составьте маршрут путешествия исходя из своего вкуса и предпочтений, и изобразите его в виде графа.
Опишите последовательность перелетов, рассчитайте стоимость всего маршрута.
5. Решите задачу коммивояжера о нахождении (в данном случае) самого дешевого маршрута на основе данных Вашей матрицы цен. Отразите основные этапы решения в контрольной работе. Постройте граф найденного маршрута, рассчитайте его общую стоимость.
6. Сделайте вывод. Сравните первый маршрут, составленный по наитию, и второй найденный в рамках решения задачи коммивояжера. Оказался ли второй маршрут дешевле? Если да, то какую сумму позволило сэкономить применение данной оптимизационной задачи логистики?
Также подумайте, какие могут быть недостатки у второго оптимального маршрута? Какие факторы не были учтены при решении задачи о нахождении самого дешевого маршрута?
Изложите Ваши выводы, наблюдения и предложения в контрольной работе.
ВАРИАНТЫ ИСХОДНЫХ ДАННЫХ
ВАРИАНТ |
ИСХОДНЫЕ ДАННЫЕ |
||||||
1 город |
2 город |
3 город |
4 город |
5 город |
6 город |
7 город |
|
1 |
Москва |
Пекин |
Буэнос-Айрес |
Лондон |
Сидней |
Венеция |
Бангкок |
2 |
Москва |
Рим |
Рио-де-Жанейро |
Вена |
Сеул |
Париж |
Сидней |
3 |
Москва |
Дубай |
Берлин |
Бангкок |
Токио |
Венеция |
Стамбул |
4 |
Москва |
Прага |
Лондон |
Сидней |
Рим |
Буэнос-Айрес |
Дели |
5 |
Москва |
Каир |
Стамбул |
Париж |
Сидней |
Рио-де-Жанейро |
Дубай |
6 |
Москва |
Токио |
Буэнос-Айрес |
Сеул |
Венеция |
Прага |
Пекин |
7 |
Москва |
Рим |
Дели |
Берлин |
Лондон |
Вена |
Стамбул |
8 |
Москва |
Рио-де-Жанейро |
Париж |
Дубай |
Каир |
Бангкок |
Токио |
9 |
Москва |
Прага |
Лондон |
Пекин |
Дубай |
Стамбул |
Сидней |
10 |
Москва |
Берлин |
Каир |
Бангкок |
Буэнос-Айрес |
Париж |
Сеул |
11 |
Москва |
Сидней |
Венеция |
Вена |
Лондон |
Рио-де-Жанейро |
Дели |
12 |
Москва |
Пекин |
Стамбул |
Париж |
Прага |
Берлин |
Рим |
13 |
Москва |
Буэнос-Айрес |
Токио |
Сидней |
Каир |
Венеция |
Сеул |
14 |
Москва |
Дели |
Дубай |
Берлин |
Вена |
Бангкок |
Сидней |
15 |
Москва |
Прага |
Лондон |
Дели |
Буэнос-Айрес |
Токио |
Каир |
16 |
Москва |
Сеул |
Рим |
Рио-де-Жанейро |
Пекин |
Сидней |
Стамбул |
17 |
Москва |
Вена |
Париж |
Венеция |
Дубай |
Берлин |
Прага |
18 |
Москва |
Токио |
Буэнос-Айрес |
Бангкок |
Лондон |
Рим |
Дели |
19 |
Москва |
Стамбул |
Берлин |
Каир |
Вена |
Пекин |
Сидней |
20 |
Москва |
Рио-де-Жанейро |
Лондон |
Прага |
Сеул |
Токио |
Венеция |
21 |
Москва |
Пекин |
Дубай |
Рим |
Париж |
Буэнос-Айрес |
Дели |
22 |
Москва |
Вена |
Бангкок |
Токио |
Стамбул |
Каир |
Берлин |
23 |
Москва |
Каир |
Венеция |
Буэнос-Айрес |
Лондон |
Дубай |
Сеул |
24 |
Москва |
Рим |
Лондон |
Дели |
Прага |
Рио-де-Жанейро |
Бангкок |
25 |
Москва |
Париж |
Сеул |
Вена |
Берлин |
Токио |
Венеция |
26 |
Москва |
Каир |
Стамбул |
Рио-де-Жанейро |
Рим |
Париж |
Пекин |
27 |
Москва |
Прага |
Токио |
Венеция |
Бангкок |
Вена |
Дели |
28 |
Москва |
Рио-де-Жанейро |
Дели |
Пекин |
Буэнос-Айрес |
Сеул |
Дубай |
29 |
Москва |
Вена |
Берлин |
Сеул |
Париж |
Прага |
Стамбул |
30 |
Москва |
Пекин |
Дубай |
Бангкок |
Рим |
Каир |
Рио-де-Жанейро |
* Сидней (Австралия)
ПРИЛОЖЕНИЯ
Онлайн-сервисы для заказа авиабилетов:
Дополнительная литература и Интернет-источники:
Образец титульного листа
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Ижевский государственный технический университет имени М.Т. Калашникова»
(ФГБОУ ВПО «ИжГТУ имени М.Т. Калашникова»)
Сарапульский Политехнический Институт (филиал) ФГБОУ ВПО «ИжГТУ имени М.Т. Калашникова»
КОНТРОЛЬНАЯ РАБОТА
на тему: «Прикладное применение задачи коммивояжера»
по дисциплине «Логистика»
Выполнил: |
студент группы Б01-111-1, Иванов Петр Аркадьевич |
Проверил: |
ст. преподаватель кафедры «ЭГН», Галяутдинов Руслан Рамилевич |
Сарапул, 2013
Образец бланка рецензии
РЕЦЕНЗИЯ НА КОНТРОЛЬНУЮ РАБОТУ
Дата: ____________ Рецензент: ______ / Р.Р. Галяутдинов