Inteligência Artificial

Algoritmo - Simulated Annealing

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)