09.05.2013 Views

Condução de Experimentos Computacionais com Métodos ...

Condução de Experimentos Computacionais com Métodos ...

Condução de Experimentos Computacionais com Métodos ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.3 <strong>Métodos</strong> Metaheurísticos 33<br />

uma certa quantida<strong>de</strong> <strong>de</strong> iterações, evitando <strong>de</strong>ssa maneira, caminhos cíclicos no grafo <strong>de</strong><br />

vizinhança.<br />

Na estrutura clássica, a lista possui movimentos reversos aos últimos |T | movi-<br />

mentos realizados (|T | é um parâmetro do método) e trabalha <strong>com</strong>o uma fila <strong>de</strong> tamanho<br />

fixo, ou <strong>de</strong> seja, quando um novo movimento é adicionado à lista e ela está cheia, o mo-<br />

vimento mais antigo sai. Dessa forma, quando o subconjunto V ⊂ N(s) é explorado os m<br />

elementos que estão na lista tabu T são excluídos da busca, isto é, os vizinhos s ′ que são<br />

obtidos dos m movimentos em T são excluídos da busca.<br />

O Algoritmo 2.4 apresenta o procedimento básico da Busca Tabu. Iniciando <strong>com</strong><br />

uma solução inicial e a lista tabu T (linhas 1 e 2), a melhor solução s ′ não-tabu é escolhida<br />

(linha 5) na vizinhança <strong>de</strong> s é escolhida para a busca na próxima iteração. Esta solução<br />

é inserida na lista tabu (linha 9), <strong>de</strong> modo que ela não seja utilizada novamente durante<br />

uma certa quantida<strong>de</strong> <strong>de</strong> iterações. Ainda na linha 9, a atualização da lista tabu trata da<br />

adição <strong>de</strong> novas soluções e a manutenção do tamanho da lista. O tamanho do lista po<strong>de</strong><br />

influenciar na busca, no sentido <strong>de</strong> que se for uma lista muito pequena po<strong>de</strong> não evitar<br />

ciclos e se for uma lista muito gran<strong>de</strong> po<strong>de</strong> limitar o espaço <strong>de</strong> soluções, restringindo a<br />

busca <strong>de</strong> forma exagerada.<br />

Algoritmo 2.4: Busca Tabu<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

T ← /0 /* Lista Tabu */<br />

s ← alguma solução inicial;<br />

repita<br />

encontrar a melhor s ′ ∈ N(s) \ T ;<br />

se f (s ′ ) < f (s) então<br />

s ← s ′ ;<br />

s ← s;<br />

Atualize a lista tabu T ;<br />

até critério <strong>de</strong> parada;<br />

A lista tabu po<strong>de</strong> eliminar ciclos, pois seu objetivo é garantir o não retorno<br />

<strong>de</strong> uma solução já visitada anteriormente por |T | iterações. Mas isto po<strong>de</strong> fazer <strong>com</strong><br />

que movimentos para soluções que ainda não foram visitadas não sejam alcançados<br />

(alguns movimentos são proibidos, <strong>de</strong> acordo <strong>com</strong> a lista tabu). Por isto, uma função<br />

<strong>de</strong> aspiração é utilizada. O Algoritmo 2.5 mostra a aplicação <strong>de</strong>sta função, que retira,<br />

sob certas circunstâncias, o status tabu <strong>de</strong> um movimento. Para cada possível valor v da<br />

função objetivo existe um nível <strong>de</strong> aspiração A(v), em que uma solução s ′ ∈ V po<strong>de</strong> ser<br />

gerada se f (s ′ ) < A( f (s)), mesmo o movimento m esteja na lista tabu. Para cada valor v<br />

da função objetivo, a função <strong>de</strong> aspiração retorna um valor A(v) que representa o valor

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!