|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Математическая модель задачиВведем неизвестные величины Пусть Тогда
Данная задача относится к числу задач целочисленного программирования. Целевая функция z в (11.1) означает длину маршрута для данного плана переездов. Система ограничений (11.2) обеспечивает построение маршрута, при котором коммивояжер въезжает в каждый город только раз, а система ограничений (11.3) – маршрута, когда он выезжает из каждого города раз. Этих ограничений еще недостаточно для постановки задачи, так как они не исключают решения, в котором вместо простого цикла, проходящего через n вершин, отыскиваются два или более отдельных цикла (подцикла), проходящих через меньшее число вершин. На рис. 7 и 8 приведены связанные и несвязанные маршруты
Рис. 7. Вариант замкнутого Рис. 8. Пример двух замкнутых маршрута коммивояжера несвязанных маршрутов, не являющихся решением задачи коммивояжера
Поэтому для исключения подобных несвязанных маршрутов задача (11.1 – 11.4) должна быть дополнена ограничениями, обеспечивающими связность цикла:
Условия (11.5) выражают требование цикличности. Переменные Введение ограничений (11.5) резко увеличивает размеры модели. Так при n = 50 получается порядка 2500 ограничений. Решение целочисленных задач таких размеров представляет серьезную вычислительную проблему. Между тем во многих практических ситуациях задача коммивояжера является стандартной подзадачей, решение которой должно выполняться многократно. При решении задачи используются различные, хорошо зарекомендовавшие себя эвристические методы и точные методы, в основе которых лежит комбинаторная структура задачи (методы ветвей и границ, динамического программирования). Задача о коммивояжере в математической постановке эквивалента задаче упорядочения конечного цикла наладочных работ на машине при учете потерь от переналадок. Рассмотрим решение задачи коммивояжера методом ветвей и границ (алгоритм Литтла). Этот алгоритм можно сформулировать в виде следующих правил: 1. Находим в каждой строке матрицы 2. Находим минимальный элемент 3. Находим константу приведения 4. Находим степени нулей для приведенной по строкам и столбцам матрицы
Записываем соответствующую степень в правом верхнем углу клетки 5. Выбираем дугу
6. Выходим на две ветви (симметричный элемент) на 7. Находим приведенную по строкам и столбцам матрицу 8. Для получения расчетной матрицы 9. Находим приведенную по строкам и столбцам матрицу 10. Сравниваем нижние границы ветвей. Если 11. Если в результате ветвления получаем размерность сокращенной матрицы 12. Формируем вариант маршрута на базе законченной ветви и определяем его протяженность. Если длина маршрута не превышает нижних границ оборванных ветвей (незаконченных ветвлений), то задача решена. В противном случае развиваем ветви подмножеств с нижней границей, меньшей полученного маршрута до тех пор, пока не получим маршрут с меньшей длиной или не убедимся, что такого не существует. Пример решения задачи коммивояжера. Решить задачу для матрицы расстояний в табл. 11 Таблица 11
1. Справа к табл. 11 присоединяем столбец
Таблица 12
2. Внизу матрицы 12 присоединяем строку
Таблица 13
3. Находим константу приведения
Нижней границей 4. Находим степени нулей полностью приведенной матрицы 5. Определяем максимальную степень нуля. Она равна 10 и соответствует клетке (5,3). Строим дерево ветвлений (рис. 9). 6. Разбиваем множество всех маршрутов
Таблица 14
7. Матрицу маршрутов
Таблица 15
8. Приводим матрицы
Нижняя граница множества
9. Находим константу приведения для множества маршрутов 10. Сравниваем нижние границы подмножеств Делаем дополнительное приведение матрицы маршрутов
Таблица 16
Максимальная степень нуля для клетки (4,2). Претендентом на включение в маршрут будет дуга (4,2). Разбиваем множество Таблица 17
Таблица 18 Определяем константы приведения для этих матриц
Таблица 19
Таблица 20
Следовательно, ветвлению нужно подвергнуть множество
![]()
Если оборванная ветвь имеет меньшую длину маршрута, нужно к ней вернуться и продолжить ветвление. На рис. 9 приводится дерево ветвлений маршрута коммивояжера.
Рис. 9. Дерево ветвлений маршрута
Вопросы для самопроверки 1. Какова постановка задачи коммивояжера? 2. Как приводится матрица расстояний по строкам и столбцам? 3. Как определяется константа приведения полностью приведенной матрицы? 4. Как определяется степень нулей матрицы приведенной по строкам и столбцам? 5. В каком случае дуга 6. До каких пор снижается порядок матрицы маршрута? 7. Как проверить правильность построения маршрута? 8. Как построить дерево ветвлений? 9. В каком случае необходимо вернуться к оборванной ветви?
Задачи для самостоятельного решения 1. 2.
3. 4.
5.
6.
7.
8.
9.
10.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.017 сек.) |