Алгоритм имитации отжига — это эвристический алгоритм для аппроксимации глобального экстремума функции. proglib.io Он часто используется, когда пространство поиска дискретно. proglib.io
При разработке маршрутов в Python алгоритм имитации отжига работает следующим образом: thecode.media
- Задается температура. thecode.media Важно определить начальное и конечное состояние, а также шаг температуры, с какой скоростью будет остывать процесс. thecode.media
- На старте текущая температура равна начальной. thecode.media Данные уже приняли какую-то форму решения, например, в случае с коммивояжёром это будет массив с городами, в каком порядке надо ехать. thecode.media
- Просчитывается, какое состояние лучше, а какое хуже. thecode.media В примере с коммивояжёром этим параметром будет общее расстояние между городами: если расстояние в одном состоянии короче, чем в другом, то лучше там, где короче. thecode.media
- Постоянно сравнивается текущая температура с минимальной, и, пока они не сравнялись, выполняется работа внутри цикла. thecode.media
- Случайно выбирается новое состояние системы. thecode.media Например, можно поменять местами пару маршрутов между городами, поменять пять маршрутов или выбрать случайный город и поменять у него маршрут в другой город тоже на случайный. thecode.media
- Выясняется, лучше ли новое состояние старого. thecode.media Для этого считается разница: если она больше нуля, то выбирается новое состояние как решение и меняется текущее состояние. thecode.media
- Температура понижается на одно деление, и возвращается начало цикла. thecode.media
В итоге алгоритм раз за разом прогоняет цикл с понижением температуры, а система сама в это время подбирает такие значения, чтобы приблизиться к нужному значению. thecode.media
Когда температура упадёт до минимальной, процесс завершён, и текущее состояние в этот момент и будет решением. thecode.media Оно может быть неидеальным, но при этом достаточно хорошим. thecode.media