LAB #2. (Traveling Salesman Problem, TSP) Задача коммивояжёра
28.10 Введение в задачу коммивояжера

Введение в задачу коммивояжера

Что такое задача коммивояжера

Задача коммивояжера (Traveling Salesman Problem, TSP) — одна из самых известных задач комбинаторной оптимизации. Её суть заключается в поиске оптимального маршрута, проходящего через заданные точки (города) по одному разу с обязательным возвратом в исходную точку.

Классическая задача комбинаторной оптимизации

Задача относится к классу NP-трудных задач, что означает её высокую вычислительную сложность. При увеличении количества городов время решения растёт факториально.

Формулировка задачи

Исходные данные:

  • Конечное множество городов (точек)
  • Матрица расстояний между всеми парами городов
  • Критерий оптимизации (например, минимальная длина маршрута)

Цель:

  • Найти маршрут, проходящий через каждый город ровно один раз
  • Вернуться в исходный город
  • Минимизировать выбранный критерий

Прикладное значение

Задача коммивояжера находит широкое применение в:

  • Логистике и транспортных системах
  • Планировании маршрутов доставки
  • Производственных процессах
  • Туристическом бизнесе
  • Экономическом анализе
  • Навигационных системах

Виды критериев оптимизации

Базовые критерии:

  • Минимальная суммарная длина маршрута
  • Минимальное время в пути
  • Минимальные финансовые затраты

Комплексные критерии:

  • Комбинация нескольких параметров (например, время + затраты)
  • Учёт дополнительных ограничений (время работы, вместимость транспорта)
  • Специфические условия задачи

Методы решения

Точные методы:

  • Метод полного перебора — перебор всех возможных вариантов маршрута
  • Метод ветвей и границ — последовательное отсеивание неоптимальных решений

Приближённые методы:

  • Метод ближайшего соседа — построение маршрута по принципу выбора ближайшего города
  • Генетические алгоритмы — использование принципов естественного отбора для поиска оптимального решения
  • Эвристические методы — основанные на практическом опыте и правилах

Важно отметить, что точные методы эффективны для небольшого количества городов (до 66), в то время как приближённые методы позволяют находить достаточно хорошие решения для задач любого размера с допустимой погрешностью.

Преимущества приближённых методов:

  • Быстрое нахождение решения
  • Применимость к большим задачам
  • Возможность получения приемлемого результата

Недостатки приближённых методов:

  • Отсутствие гарантии оптимальности решения
  • Возможная большая погрешность
  • Зависимость от начальных условий

Практические рекомендации по выбору метода решения

При выборе метода решения задачи коммивояжера следует учитывать:

  • Количество городов в задаче
  • Требуемую точность решения
  • Доступные вычислительные ресурсы
  • Временные ограничения

Примеры практического применения

Реальные кейсы использования задачи коммивояжера:

  • Оптимизация маршрутов доставки товаров в крупных городах
  • Планирование работы почтовых служб
  • Организация работы сервисных инженеров
  • Оптимизация работы дронов и роботов
Практическая работа по задаче коммивояжера

Практическая работа: Решение задачи коммивояжера

СРС Задание 1: Ответы на вопросы

Ответьте на следующие вопросы:

  1. Что представляет собой задача коммивояжера?
  2. Какие существуют основные критерии оптимизации?
  3. В чём заключается суть метода ветвей и границ?
  4. Какие преимущества имеют приближённые методы решения?
  5. Где на практике применяется задача коммивояжера?

Задание 2: Подготовить на основе данных из открытых источников 5 реальных точек (адресов, городов, культурных объектов) для анализа и составить для них 4 матрицы:

  • Матрица 1: Расстояние (в км)
  • Матрица 2: Время в пути (в часах)
  • Матрица 3: Затраты топлива (в литрах)
  • Матрица 4: Стоимость (в рублях)

Пример: (показаны 2 из 4 необходимых матриц)

Рассмотрим 5 точек в городах России:

  • Точка 1: Москва (Красная площадь)
  • Точка 2: Санкт-Петербург (Эрмитаж)
  • Точка 3: Казань (Казанский кремль)
  • Точка 4: Нижний Новгород (Стрелка Оки и Волги)
  • Точка 5: Владимир (Золотые ворота)

Матрица расстояний (км)

Москва СПб Казань Н.Новгород Владимир
Москва 0 700 850 430 180
СПб 700 0 1230 430 880
Казань 850 1230 0 390 690
Н.Новгород 430 430 390 0 230
Владимир 180 880 690 230 0

Матрица времени в пути (часы)

Москва СПб Казань Н.Новгород Владимир
Москва 0 8 10 5 2
СПб 8 0 13 5 10
Казань 10 13 0 4 8
Н.Новгород 5 5 4 0 3
Владимир 2 10 8 3 0
Метод полного перебора

Метод полного перебора

Суть метода: перебор всех возможных вариантов маршрутов и выбор оптимального по заданному критерию (обычно — минимальная стоимость или расстояние).

Шаги решения

Определение количества вариантов:

Для 5 городов количество возможных маршрутов = (5-1)! = 4! = 24 варианта

Это связано с тем, что маршрут циклический (начало и конец в одной точке)

Алгоритм перебора

  1. Фиксируем начальную точку (например, Москва)
  2. Перебираем все возможные перестановки оставшихся 4 городов
  3. Для каждой перестановки считаем суммарное расстояние/стоимость для всех 4 матриц
  4. Выбираем маршрут с минимальным значением

Таблица комбинаций маршрутов

Соответствие букв городам:

  • А — Москва
  • Б — СПб
  • В — Казань
  • Г — Н.Новгород
  • Д — Владимир

Все возможные комбинации маршрутов (24 варианта):

  • А → Б → В → Г → Д → А
  • А → Б → В → Д → Г → А
  • А → Б → Г → В → Д → А
  • А → Б → Г → Д → В → А
  • А → Б → Д → В → Г → А
  • А → Б → Д → Г → В → А
  • А → В → Б → Г → Д → А
  • А → В → Б → Д → Г → А
  • А → В → Г → Б → Д → А
  • А → В → Г → Д → Б → А
  • А → В → Д → Б → Г → А
  • А → В → Д → Г → Б → А
  • А → Г → Б → В → Д → А
  • А → Г → Б → Д → В → А
  • А → Г → В → Б → Д → А
  • А → Г → В → Д → Б → А
  • А → Г → Д → Б → В → А
  • А → Г → Д → В → Б → А
  • А → Д → Б → В → Г → А
  • А → Д → Б → Г → В → А
  • А → Д → В → Б → Г → А
  • А → Д → В → Г → Б → А
  • А → Д → Г → Б → В → А
  • А → Д → Г → В → Б → А

Пример использования таблицы

Для расчета расстояния по маршруту:

Маршрут: А → Б → В → Г → Д → А

Расстояния: А-Б (700) + Б-В (1230) + В-Г (390) + Г-Д (230) + Д-А (180) = 2730 км

Варианты решения задачи коммивояжера (любой на свой выбор)

Варианты решения задачи коммивояжера

1. Аналитическое решение (ручной перебор)

Алгоритм действий:

  1. Зафиксировать начальную точку маршрута
  2. Выписать все возможные перестановки оставшихся городов
  3. Рассчитать суммарное расстояние для каждого маршрута
  4. Сравнить полученные значения
  5. Выбрать маршрут с минимальным расстоянием

2. Решение в Excel (табличный метод)

Основные шаги:

  1. Создать таблицу с исходными данными (матрица расстояний)
  2. Создать вспомогательную таблицу для перебора маршрутов
  3. Использовать формулы для автоматического подсчета суммарного расстояния
  4. Применить условное форматирование для выделения минимального значения

3. Программная реализация в Scilab

Основные этапы:

  1. Создание матрицы расстояний
  2. Генерация всех возможных перестановок с помощью встроенных функций
  3. Написание функции для подсчета суммарного расстояния маршрута
  4. Использование циклов для перебора всех вариантов
  5. Поиск минимального значения среди всех маршрутов

Пример структуры кода в Scilab:

  • Инициализация матрицы расстояний
  • Создание массива для хранения результатов
  • Генерация перестановок
  • Расчет длин маршрутов
  • Поиск минимума

Рекомендации для реализации в Scilab:

  • Начните с малого количества городов для отладки
  • Используйте промежуточные выводы для проверки
  • Сохраняйте промежуточные результаты
  • Оптимизируйте код при увеличении размерности задачи
  • Проверяйте корректность работы на известных примерах

Задание на 4 ноября 2025

Решить задачу выбора лучшего маршрута для каждой матрицы (4 решения) на основе собственных наборов данных.

Срок сдачи: 11 ноября 2025 г.

Методология определения весовых коэффициентов

Методология определения весовых коэффициентов

Системный анализ предполагает комплексный подход к определению весовых коэффициентов на основе нескольких критериев:

Основные этапы определения коэффициентов

Анализ целей и задач

  • Определение приоритетности критериев для конкретной задачи
  • Выявление ограничений и требований заказчика
  • Установление временных рамок проекта

Сбор и анализ данных

  • Статистический анализ исторических данных
  • Исследование рыночных условий
  • Оценка технических возможностей

Методы определения коэффициентов

Экспертный метод:

  • Опрос специалистов отрасли
  • Метод Дельфи
  • Метод парных сравнений
  • Ранжирование критериев

Аналитический метод:

  • Анализ соотношения цена/время/расстояние
  • Расчет удельных показателей
  • Определение предельных значений

Математический метод:

  • Метод главных компонент
  • Метод анализа иерархий
  • Линейное программирование

Практические рекомендации по определению весов

Базовые критерии для определения коэффициентов:

Важность расстояния:
  • Тип транспорта
  • Особенности маршрута
  • Дорожные условия
Значимость времени:
  • Срочность доставки
  • Стоимость простоя
  • Временные окна доставки
Влияние стоимости:
  • Бюджет проекта
  • Стоимость топлива
  • Затраты на персонал

Примерная шкала весовых коэффициентов

Критерий Низкий приоритет Средний приоритет Высокий приоритет
Расстояние 0.2-0.3 0.4-0.5 0.6-0.7
Время 0.2-0.3 0.4-0.5 0.6-0.7
Стоимость 0.2-0.3 0.4-0.5 0.6-0.7

Дополнительные рекомендации

  • Регулярная проверка актуальности коэффициентов
  • Учет сезонных колебаний
  • Мониторинг изменений рыночных условий
  • Корректировка при изменении технических возможностей
Аналитическое решение с весовыми коэффициентами

Аналитическое решение с весовыми коэффициентами

Введение весовых коэффициентов

Предположим, что время в пути важнее расстояния. Введем коэффициенты:

  • Коэффициент для расстояния (K₁) = 1 (базовый)
  • Коэффициент для времени (K₂) = 2 (время важнее в 2 раза)

Формула комплексного критерия

C = K₁ ⋅ Расстояние + K₂ ⋅ Время

Пересчет маршрутов с коэффициентами

Маршрут 1: Москва → СПб → Казань → Н.Новгород → Владимир → Москва

  • Расстояние: 2730 км
  • Время: 30 часов
  • Комплексный показатель: 1⋅2730 + 2⋅30 = 2730 + 60 = 2790

Маршрут 2: Москва → Владимир → Н.Новгород → Казань → СПб → Москва

  • Расстояние: 2730 км
  • Время: 30 часов
  • Комплексный показатель: 1⋅2730 + 2⋅30 = 2730 + 60 = 2790

Маршрут 3: Москва → Н.Новгород → Казань → Владимир → СПб → Москва

  • Расстояние: 3090 км
  • Время: 35 часов
  • Комплексный показатель: 1⋅3090 + 2⋅35 = 3090 + 70 = 3160

Маршрут 4: Москва → Казань → Н.Новгород → Владимир → СПб → Москва

  • Расстояние: 3050 км
  • Время: 35 часов
  • Комплексный показатель: 1⋅3050 + 2⋅35 = 3050 + 70 = 3120

Анализ при разных коэффициентах

  • Вариант 1: K₁ = 1, K₂ = 2 (время важнее)
    • Оптимальные маршруты остаются прежними (показатель 2790)
  • Вариант 2: K₁ = 2, K₂ = 1 (расстояние важнее)
    • Пересчет для первого маршрута: 2⋅2730 + 1⋅30 = 5460 + 30 = 5490
    • Пересчет для третьего маршрута: 2⋅3090 + 1⋅35 = 6180 + 35 = 6215

Задание на 11 ноября 2025

Решить задачу оптимизации маршрута с использованием весовых коэффициентов (обосновнанных для маршрута) на основе собственных наборов данных.

Срок сдачи: 18 ноября 2025 г.

Аналитическое решение с весовыми коэффициентами и нормализацией данных

Аналитическое решение с весовыми коэффициентами и нормализацией данных

1. Исходные данные (матрица критериев)

Допустим, для 3 маршрутов имеем следующие показатели:

Маршрут Расстояние (км) Время (ч) Стоимость (руб)
А → Б → В → А 500 8 3000
А → В → Б → А 450 7 3200
Б → А → В → Б 600 10 2800

2. Нормализация данных

Приведём все показатели к единому масштабу (от 0 до 1) по формуле:

$$x_{\text{норм}} = \frac{x - x_{\text{min}}}{x_{\text{max}} - x_{\text{min}}}$$

Для минимизируемых критериев (расстояние, время, стоимость) используем обратную формулу:

$$x_{\text{норм}} = 1 - \frac{x - x_{\text{min}}}{x_{\text{max}} - x_{\text{min}}}$$

Расчёт нормализованных значений:

  • Расстояние: \(x_{\text{min}} = 450\), \(x_{\text{max}} = 600\) → диапазон \(= 150\)
  • Время: \(x_{\text{min}} = 7\), \(x_{\text{max}} = 10\) → диапазон \(= 3\)
  • Стоимость: \(x_{\text{min}} = 2800\), \(x_{\text{max}} = 3200\) → диапазон \(= 400\)
Маршрут Норм. расстояние Норм. время Норм. стоимость
А → Б → В → А \(1 - \dfrac{500-450}{150} = 0.67\) \(1 - \dfrac{8-7}{3} = 0.67\) \(1 - \dfrac{3000-2800}{400} = 0.50\)
А → В → Б → А \(1 - \dfrac{450-450}{150} = 1.00\) \(1 - \dfrac{7-7}{3} = 1.00\) \(1 - \dfrac{3200-2800}{400} = 0.00\)
Б → А → В → Б \(1 - \dfrac{600-450}{150} = 0.00\) \(1 - \dfrac{10-7}{3} = 0.00\) \(1 - \dfrac{2800-2800}{400} = 1.00\)

3. Задание весовых коэффициентов

Определим приоритеты критериев:

  • Расстояние: \(K_1 = 0.4\) (40%)
  • Время: \(K_2 = 0.35\) (35%)
  • Стоимость: \(K_3 = 0.25\) (25%)

Сумма коэффициентов: \(0.4 + 0.35 + 0.25 = 1.0\)

4. Расчёт комплексного показателя

Формула: \(C_i = K_1 \cdot x_{1i} + K_2 \cdot x_{2i} + K_3 \cdot x_{3i}\)

html
Маршрут Расчёт Комплексный показатель (\(C_i\))
А → Б → В → А \(0.4 \cdot 0.67 + 0.35 \cdot 0.67 + 0.25 \cdot 0.50\) \(0.268 + 0.235 + 0.125 = 0.628\)
А → В → Б → А \(0.4 \cdot 1.00 + 0.35 \cdot 1.00 + 0.25 \cdot 0.00\) \(0.400 + 0.350 + 0.000 = 0.750\)
Б → А → В → Б \(0.4 \cdot 0.00 + 0.35 \cdot 0.00 + 0.25 \cdot 1.00\) \(0.000 + 0.000 + 0.250 = 0.250\)

5. Анализ результатов и выбор оптимального маршрута

Сравним полученные комплексные показатели:

  • Маршрут «А → Б → В → А»: \(C_i = 0.628\)
  • Маршрут «А → В → Б → А»: \(C_i = 0.750\)
  • Маршрут «Б → А → В → Б»: \(C_i = 0.250\)

Оптимальный маршрут: «А → В → Б → А» (максимальный показатель \(= 0.750\))

Примечание: Чем выше значение \(C_i\), тем предпочтительнее маршрут (так как нормализация выполнена для минимизируемых критериев).

6. Интерпретация и выводы

  • Нормализация позволила привести разнородные показатели к единому масштабу.
  • Весовые коэффициенты отразили приоритеты: расстояние (40 %), время (35 %), стоимость (25 %).
  • Комплексная оценка дала объективное основание для выбора лучшего маршрута.

Задание на 18 ноября 2025

Решить задачу оптимизации маршрута с использованием нормализованных данных и весовых коэффициентов на основе собственных наборов данных.

Срок сдачи: 25 ноября 2025 г.

Made on
Tilda