função
simulated-annealing(problema, decaimento, temperatura_inicial, cria_solução_inicial,
n_iter, var_n_iter, vizinho, ...) retorna um estado solução
inputs:
problema, um problema
decaimento, uma função de decaimento da temperatura
temperatura_inicial, uma função que determina a temperatura
inicial a partir do problema
cria_solução_inicial, uma função que determina
uma solução inicial a
partir do problema
var_n_iter, uma função de variação do número de iterações a cada
temperatura
vizinho, uma função que
retorna um vizinho a partir de uma solução
criterio_de_paragem, uma função que
retorna true no caso de se ter atingido o critério de paragem
n_iter, o número de iterações
à temperatura inicial
variáveis locais:
corrente, uma solução
próximo, uma solução
melhor, uma solução
T, uma "temperatura" que
controla a probabilidade de aceitação de soluções piores
corrente <- cria_solução_inicial(problema)
melhor <- corrente
T <- temperatura_inicial(problema)
repeat
for n = 1 to n_iter do
próximo <- vizinho(corrente)
d <- distância(próximo) - distância(corrente)
if d < 0 then
corrente <- próximo
if distância(corrente) < distância(melhor) then melhor <- corrente
else corrente <- próximo apenas com probabilidade exp(-d/T)
if criterio_de_paragem(...) then retorna melhor
n_iter <- var_n_iter(n_iter)
T <- decaimento(T)