Algoritmos e Programação de Computadores II
Prof. MSc. Leanderson André
leandersonandre@univille.br
Universidade da Região de Joinville
Proposto por Kirkpatrick, Gelatt e Vecchi (1983).
Processo de recozimento de materiais metálicos.

| Processo físico | Algoritmo |
|---|---|
| Temperatura | Temperatura de controle |
| Estado do material | Solução candidata |
| Energia do material | Função de custo |
| Resfriamento gradual | Redução da temperatura |
| Equilíbrio térmico | Estabilização da busca |
x ← solução inicial
E ← custo(x)
T ← temperatura inicial
enquanto critério de parada não for atingido faça
T ← atualizar temperatura(T)
x' ← gerar vizinho(x)
E' ← custo(x')
ΔE ← E' - E
se ΔE < 0 ou aleatório(0,1) < exp(-ΔE/T) então
x ← x'
E ← E'
fim se
fim enquanto
retornar x
O algoritmo pode encerrar sua execução quando uma das seguintes condições for atingida:
Resfriamento geométrico:
$$T_{k+1} = \alpha \cdot T_k$$
Onde:
Consiste em modificar a solução atual para gerar uma nova solução candidata.
$$x' = x + \epsilon$$
$$\epsilon \sim \mathcal{N}(0,\sigma^2)$$
Onde:
Diferentemente de uma busca local tradicional, o Simulated Annealing pode aceitar soluções que apresentam um custo maior.
A probabilidade de aceitar uma solução pior é calculada por:
$$P(\text{aceitar}) = e^{-\frac{\Delta E}{T}}$$
Onde:
| Parâmetro | Descrição |
|---|---|
T₀ | Temperatura inicial do algoritmo. |
Tmin | Temperatura mínima utilizada como critério de parada. |
α | Taxa de resfriamento, utilizada para reduzir a temperatura. |
k | Iteração atual do algoritmo. |
x₀ | Solução inicial do algoritmo. |
E(x) | Função objetivo que avalia o custo de uma solução. |
ΔE | Variação do custo entre a solução candidata e a solução atual. |
ε | Perturbação aleatória utilizada para gerar vizinhos em problemas contínuos. |
σ | Desvio padrão da distribuição normal, controla a intensidade da perturbação. |
iterMax | Número máximo de iterações. |
iterSemMelhoria | Limite de iterações consecutivas sem melhoria na melhor solução. |
tempoMax | Tempo máximo de execução do algoritmo. |
x ← solução inicial
E ← custo(x)
T ← temperatura inicial
enquanto critério de parada não for atingido faça
T ← atualizar temperatura(T)
x' ← gerar vizinho(x)
E' ← custo(x')
ΔE ← E' - E
se ΔE < 0 ou aleatório(0,1) < exp(-ΔE/T) então
x ← x'
E ← E'
fim se
fim enquanto
retornar x
Prof. MSc. Leanderson André
leandersonandre@univille.br
Universidade da Região de Joinville