Выбор соседа по имитации отжига

при выборе соседа следует учитывать температуру алгоритма? Так, например, если температура высока при выборе соседа, должна быть произведена перестановка? Или температура влияет только на вероятность принятия?

3 ответов


последнее верно: только вероятность принятия зависит от температуры. Чем выше температура, тем больше" плохих " ходов принимается для выхода из локальных оптимумов. Если вы предварительно выберете соседей с низкими значениями энергии, вы в основном противоречите идее имитационного отжига и превратите его в жадный поиск.

псевдокод от Википедия:

s ← s0; e ← E(s)                                  // Initial state, energy.
sbest ← s; ebest ← e                              // Initial "best" solution
k ← 0                                             // Energy evaluation count.
while k < kmax and e > emax                       // While time left & not good enough:
  T ← temperature(k/kmax)                         // Temperature calculation.
  snew ← neighbour(s)                             // Pick some neighbour.
  enew ← E(snew)                                  // Compute its energy.
  if P(e, enew, T) > random() then                // Should we move to it?
    s ← snew; e ← enew                            // Yes, change state.
  if enew < ebest then                            // Is this a new best?
    sbest ← snew; ebest ← enew                    // Save 'new neighbour' to 'best found'.
  k ← k + 1                                       // One more evaluation done
return sbest                                      // Return the best solution found.

У меня тоже был этот же вопрос, но я думаю, что ответ из другого поста основы имитационного отжига в Python предполагает, что T может быть связано с выбором соседей вполне разумно.

выборе соседей также будет зависеть от вашей проблемы. Основная причина, по которой вы ограничиваете район, заключается в том, что, как только вы нашли достойное решение, даже если позже вы перейдете к худшему решению, вы, по крайней мере, останетесь в районе. Интуиция наиболее объективна функции несколько гладкие, поэтому хорошие решения будут лежать рядом с другими хорошими решениями. Поэтому вам нужен район, достаточно маленький, чтобы держать вас рядом с хорошими решениями, но достаточно большой, чтобы вы могли быстро их найти. Одна вещь, которую вы можете попробовать, - это уменьшить окрестности со временем (например, сделать их пропорциональными температуре). - hunse Nov 4 ' 13 в 20: 58


Вот описание из Википедии, в котором говорится, что температура должна быть фактически рассчитана для некоторых проблем.

эффективное поколение кандидатов

более точное утверждение эвристики заключается в том, что следует попробовать сначала состояния-кандидаты s', для которых P(E(s), E(s'), T) велико. Для" стандартной "функции принятия P выше это означает, что E(s') - E(s) находится в порядке T или меньше. Так, у коммивояжера пример выше, можно использовать функцию neighbour (), которая меняет местами два случайных города, где вероятность выбора пары городов исчезает, поскольку их расстояние увеличивается за пределами T.

Это означает, что температура может быть важным фактором при определении соседа.

более полезное чтение о том, как написать функцию соседа: как эффективно выбрать соседа в 1-мерном и n-мерном пространстве для моделирования Отжиг