- •6.1. Продолжительность симплекс-алгоритма
- •6.2. Размер экземпляра задачи лп
- •6.3. Задача эквивалентной допустимости
- •6.4. Начальные сведения о методе эллипсоида
- •6.5. Описание метода эллипсоида на интуитивном уровне
- •7.1. Алгоритм Хачияна
- •7.2. Обоснование метода эллипсоида
- •8.1. Терминология теории графов
- •8.2. Задача потока минимальной стоимости
- •8.3. Метод остовного дерева
- •8.4. Условия оптимальности
- •8.5. Стержневое правило для изменения базиса
- •8.6. Поиск начального допустимого решения
- •8.7. Целочисленность оптимальных решений
- •9.1. Транспортная задача
- •9.2. Табличная форма
- •9.3. Задача назначений
- •9.4. Лп-ослабления
- •9.5. Задача о максимальном потоке
- •10.1. Теорема максимального потока – минимального разреза
- •10.2. Управление проектом
- •10.3. Задача кратчайшего пути
- •10.4. Уравнение Беллмана
- •11.1. Алгоритм Беллмана-Форда
- •11.2. Алгоритм Дейкстры
- •11.3. Преформулировка с неотрицательным
- •11.4. Задача минимального остовного дерева (мод)
- •11.5. Жадный алгоритм Прима для задачи мод
- •12.1. Задача максимального разреза
- •12.2. Задача полуопределенного программирования
- •12.3. Игра «Симметричное рандеву»
- •12.4. Методы внутренней точки для лп и поп
- •13.1. Основы метода
- •13.2. Задача о ранце
- •13.3. Метод Дакина
- •14.1. Виды алгоритмов
- •14.2. Точные методы
- •14.3. Полиномиальная формулировка зк
- •14.4. Решение с помощью метода ветвей и границ
- •14.5. Приближенный алгоритм для задачи коммивояжера
- •15.1. Эвристики задачи коммивояжера
- •15.2. Метод ближайшего соседа
- •15.3. Метод ближайшего соседа для зк
- •15.4. Имитация отжига
- •15.5. Генетические алгоритмы
15.1. Эвристики задачи коммивояжера
Определение 15.1. Эвристическим алгоритмом (эвристикой) называется алгоритм решения задачи, не имеющий строгого обоснования, но, тем не менее, дающий приемлемое решение задачи в большинстве практически значимых случаев.
Эвристика ближайшего соседа. Начинаем в некотором произвольном городе, затем выбираем ближайший город, который мы еще не посещали. Продолжаем в том же духе, пока все города не будут посещены.
Эвристика вставки наименьшей стоимости. Это жадный алгоритм. Начинаем с единственного узла, и затем на каждом шаге добавляем в цикл по одному новому узлу так, чтобы каждая вставка в наименьшей степени увеличивала длину этого цикла.
Эвристика дальней вставки. Вводим в цикл узел, для которого минимальное расстояние до узла имеющегося в наличии цикла является наибольшим. Идея заключается в определении общей схемы цикла в начале процесса.
Эвристика экономии. Классифицируем дуги в порядке возрастания их стоимости. Строим цикл из дуг меньшей стоимости, пока это не нарушает каких-либо ограничений и пока все города не будут посещены.

Метод ближайшего соседа Метод экономии Оптимальный цикл
Рис. 15.1. Примеры использования эвристических алгоритмов
15.2. Метод ближайшего соседа
Рассмотрим общую задачу
минимизировать
при
условии
.
Предположим,
что для некоторой точки
,
имеется множество «соседних точек»,
.
Базовый подход локального поиска
заключается в следующем.
Выбираем некоторую точку
.Оцениваем
.Берем некоторую точку
и
оцениваем
.
Если
,
то выбираем y
как новое значение для x
и возвращаемся к шагу 2.
Если
нет такой точки
,
для которой справедливо
,
тогда останавливаем процесс с решением
х.
Замечания
Конкретная реализация метода локального поиска должна определять:
а)
множества соседних точек
,
для всех
;
б)
процедуру для выбора
.
Существуют различные способы модификации метода локального поиска.
а) можно использовать дополнительные правила, чтобы предложить хорошую исходную точку или попробовать использовать несколько исходных точек.
б)
можно выбрать лучшего соседа
с наименьшим значением
,
а не первую попавшуюся точку y.
в) можно выбрать лучшего соседа среди первых r рассмотренных.
Симплекс-алгоритм линейного программирования является методом локального поиска. Можно сказать, что два базисных допустимых решения являются соседями, если они имеют общее ребро в гипермногограннике, ограничивающем допустимые решения.
В линейном программировании любой локальный оптимум является глобальным оптимумом.
15.3. Метод ближайшего соседа для зк
Существует
довольно естественное семейство
«соседей» для некоторого цикла х,
порождаемого операцией удаления любых
дуг из этого цикла и заменой их новымиk
дугами (рис. 5.2). Например, если
(этот случай называется 2-опт), каждый
цикл имеет
соседей. При
(3-опт) существуют
соседей для каждого циклах.

Рис. 15.2. Примеры 2-опт и 3-опт
Заметим,
что вычисление изменений в стоимости
между соседними турами займет время
.
Эмпирические данные свидетельствуют
о том, что 3-опт работает лучше, чем 2-опт,
однако при
улучшения незначительны. В общем, чем
выше требуемое качество решения, тем
больше время вычислений, и наоборот.
Чем больше соседей
,
тем меньше локальных минимумов, и тем
лучше получается решение. Однако, при
этом больше вычислений должно быть
сделано за одну итерацию. Поэтому метод
работает медленнее для большего
количества соседей.
На практике, мы фиксируем величину количества соседей на определенном уровне, но затем повторяем алгоритм с различными начальными значениями.
Пример 15.1. (ЗК с использованием 2-опт). Пусть у нас имеется следующая матрица расстояний (табл. 15.1).
Таблица 15.1
|
|
|
|
|
|
Допустимым
решением является цикл, который посещает
все узлы (без повторного использования
дуг). Здесь мы имеем 4! = 24 допустимых
цикла со следующими стоимостями
(табл.15.2).
Таблица 15.2

Таким образом, ACEBD является глобальным оптимумом, но мы можем «застрять» в ABCDE, поскольку, ни один из его соседей (при использовании 2-опт) не является лучше.

