Académique Documents
Professionnel Documents
Culture Documents
Sumrio
1 Introduo
2 Heursticas Construtivas
3 Heursticas de Refinamento
3.1 Mtodo da Descida/Subida (Descent/Uphill Method)
3.2 Busca pelo Primeiro de Melhora . . . . . . . . . . .
3.3 Mtodo Randmico de Descida/Subida . . . . . . . .
3.4 Mtodo Randmico No Ascendente/Descendente . .
3.5 Descida em Vizinhana Varivel . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
10
12
13
14
14
4 Metaheursticas
4.1 Multi-Start . . . . . . . . . . . . . . . . .
4.2 Simulated Annealing . . . . . . . . . . . .
4.3 Busca Tabu . . . . . . . . . . . . . . . . .
4.4 GRASP . . . . . . . . . . . . . . . . . . .
4.5 Busca em Vizinhana Varivel . . . . . . .
4.6 Iterated Local Search . . . . . . . . . . . .
4.7 Guided Local Search . . . . . . . . . . . .
4.8 Algoritmos Genticos . . . . . . . . . . . .
4.8.1 Descrio genrica do mtodo . . .
4.8.2 Representao gentica de solues
4.8.3 Operador crossover clssico . . . .
4.8.4 Operador mutao clssico . . . .
4.8.5 Operadores crossover para o PCV
4.9 Scatter Search . . . . . . . . . . . . . . . .
4.10 Colnia de Formigas . . . . . . . . . . . .
4.11 Algoritmos Memticos . . . . . . . . . . .
4.12 Annealing Microcannico . . . . . . . . .
4.13 Otimizao Microcannica . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
16
17
21
27
29
30
31
32
32
33
35
35
35
42
43
46
46
47
e
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
diversificao
50
. . . . . . . . . . . . . . . . . . . . . . 50
. . . . . . . . . . . . . . . . . . . . . . 54
. . . . . . . . . . . . . . . . . . . . . . 54
Introduo
desenvolver procedimentos heursticos com uma certa estrutura terica e com carter mais
geral, sem prejudicar a principal caracterstica destes, que a flexibilidade.
Esta meta tornou-se mais realista a partir da reunio de conceitos das reas de Otimizao e Inteligncia Artificial, viabilizando a construo das chamadas melhores estratgias
ou dos mtodos inteligentemente flexveis, comumemente conhecidos como metaheursticas.
Esses mtodos, situados em domnios tericos ainda pouco explorados pela literatura,
possuem como caracterstica bsica estruturas com uma menor rigidez que as encontradas
nos mtodos clssicos de otimizao sem, contudo, emergir em uma flexibilidade catica.
Dentre os procedimentos enquadrados como metaheursticas que surgiram ao longo
das ltimas dcadas, destacam-se: Algoritmos Genticos (AGs), Redes Neurais, Simulated
Annealing (SA), Busca Tabu (BT), GRASP, VNS, Colnia de Formigas etc.
As duas primeiras metaheursticas fundamentam-se em analogias com processos naturais, sendo que os AGs so procedimentos inspirados em princpios da evoluo natural.
O SA explora uma possvel analogia com a termodinmica, enquanto a BT faz uso de
uma memria flexvel para tornar o processo de busca mais eficaz.
Estas notas de aula esto organizadas como segue. Na seo 2 so apresentadas as
heursticas construtivas, destinadas gerao de uma soluo inicial para um problema de
otimizao. Na seo 3 so apresentadas as heursticas clssicas de refinamento, destinadas
melhoria de uma soluo. Na seo 4 so apresentadas as principais metaheursticas
referenciadas na literatura e na ltima seo, tcnicas de intensificao e diversificao.
Heursticas Construtivas
Uma heurstica construtiva tem por objetivo construir uma soluo, elemento por elemento. A forma de escolha de cada elemento a ser inserido a cada passo varia de acordo
com a funo de avaliao adotada, a qual, por sua vez, depende do problema abordado.
Nas heursticas clssicas, os elementos candidatos so geralmente ordenados segundo uma
funo gulosa, que estima o benefcio da insero de cada elemento, e somente o melhor
elemento inserido a cada passo.
A Figura 1 mostra o pseudocdigo para a construo de uma soluo inicial para um
problema de otimizao que utiliza uma funo gulosa g(.). Nesta figura, tmelhor indica
o membro do conjunto de elementos candidatos com o valor mais favorvel da funo de
avaliao g, isto , aquele que possui o menor valor de g no caso de o problema ser de
minimizao ou o maior valor de g no caso de o problema ser de maximizao.
procedimento ConstrucaoGulosa(g(.), s);
1 s ;
2 Inicialize o conjunto C de elementos candidatos;
3 enquanto (C 6= ) faa
4
g(tmelhor ) = melhor{g(t) | t C};
5
s s {tmelhor };
6
Atualize o conjunto C de elementos candidatos;
7 fim-enquanto;
8 Retorne s;
fim ConstrucaoGulosa;
Figura 1: Heurstica de construo gulosa de uma soluo inicial
A forma de construir uma soluo varia conforme o problema abordado. Para ilustrar
o funcionamento de uma heurstica construtiva utilizaremos o Problema da Mochila como
exemplo. Neste problema, h uma mochila de capacidade b e um conjunto de n objetos
que podem ser colocados na mochila. A cada objeto j est associado um peso wj e um
valor de retorno (benefcio) pj . Considerando a existncia de uma unidade de cada objeto,
o objetivo determinar o conjunto de objetos que devem ser colocados na mochila de
forma a maximizar o valor de retorno respeitando a capacidade da mochila.
Seja, ento, uma mochila de capacidade b = 23 e os 5 objetos da tabela a seguir, com
os respectivos pesos e benefcios.
Objeto (j)
Peso (wj )
Benefcio (pj )
1
4
2
2
5
2
3
7
3
4
9
4
5
6
4
Para construir uma soluo adicionemos mochila a cada passo, o objeto mais valioso
que no ultrapasse a capacidade da mochila. Em caso de empate, escolheremos o objeto
com menor peso. Reordenando os objetos de acordo com este critrio, obtemos:
Objeto (j)
Peso (wj )
Benefcio (pj )
5
6
4
4
9
4
3
7
3
1
4
2
2
5
2
aleatoriamente selecionado dentre o conjunto de elementos candidatos ainda no selecionados. A grande vantagem desta metodologia reside na simplicidade de implementao.
Segundo testes empricos, a desvantagem a baixa qualidade da soluo final produzida,
que em geral requer um maior esforo computacional na fase de refinamento.
A Figura 2 mostra o pseudocdigo para a construo de uma soluo inicial aleatria
para um problema de otimizao.
procedimento ConstrucaoAleatoria(g(.), s);
1 s ;
2 Inicialize o conjunto C de elementos candidatos;
3 enquanto (C 6= ) faa
4
Escolha aleatoriamente tescolhido C;
5
s s {tescolhido };
6
Atualize o conjunto C de elementos candidatos;
7 fim-enquanto;
8 Retorne s;
fim ConstrucaoAleatoria;
Figura 2: Heurstica de construo aleatria de uma soluo inicial
Ilustremos, agora, aplicaes de heursticas construtivas para o Problema do Caixeiro
Viajante. Sero apresentadas trs heursticas: (a) Heurstica do Vizinho Mais Prximo;
(b) Heurstica de Nemhauser e Bellmore e (c) Heurstica da Insero Mais Barata.
As heursticas sero ilustradas considerando um exemplo com 6 cidades e as distncias
dadas pela tabela a seguir:
Cidade
1
2
3
4
5
6
1
0
2
1
4
9
1
2
2
0
5
9
7
2
3
1
5
0
3
8
6
4
4
9
3
0
2
5
5
9
7
8
2
0
2
6
1
2
6
5
2
0
n1
Total
# operaes
n1
n2
1
1 + 2 + + n 1
Observaes
H n 1 ligaes para serem analisadas
H n 2 ligaes para serem analisadas
H apenas uma cidade ainda no visitada
= n(n 1)/2 operaes
1)
= n(n 1)/2
2
(b) Heurstica de Bellmore e Nemhauser:
Nesta heurstica, adicionamos rota corrente a cidade k ainda no visitada que esteja
mais prxima dos extremos da subrota, isto , a cidade k se liga a uma cidade que
esteja em uma extremidade da subrota ou outra extremidade.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, tem-se:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor
(A cidade 6 dista de mesmo valor, e tambm poderia ser escolhida em lugar da
cidade 3).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 6 a que menos
dista de um extremo da rota (cidade 1) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d61 = 1 < d34 = 3, ento a cidade
6 a escolhida e deve ser conectada cidade 1, isto , a rota corrente passa a ser:
s = (6 1 3).
iii) Passo 3: Das cidades ainda no visitadas (2, 4 e 5), a cidade 2 a que menos
dista de um extremo da rota (cidade 6) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d26 = 2 < d34 = 3, ento a cidade
2 a escolhida e deve ser conectada cidade 6, isto , a rota corrente passa a
ser: s = (2 6 1 3). A cidade 5 tambm poderia ter sido escolhida para se
conectar cidade 6, pois tem a mesma distncia da cidade 2 cidade 6.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), a cidade 5 a que menos dista
de um extremo da rota (cidade 2) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d34 = 3 < d52 = 7, ento a cidade
4 a escolhida e deve ser conectada cidade 3, isto , a rota corrente passa a ser:
s = (2 6 1 3 4).
Observa-se que a subrota inicial pode ser formada por um procedimento construtivo
qualquer. Por exemplo, parta da cidade origem e adicione subrota a cidade mais
prxima. A seguir, considerando as duas extremidades (cidade origem e ltima cidade inserida), adicione a cidade ainda no visitada cuja soma das distncias s duas
extremidades seja a menor.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, constri-se
uma soluo com os seguintes passos:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor (A
cidade 6 tambm tem mesma distncia, e tambm poderia ser escolhida).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 2 a aquela cuja
distncia s cidades extremas 1 e 3 a menor, no caso, d21 + d32 = 2 + 5 = 7.
Ento, a cidade 2 a escolhida e deve ser conectada s cidades 3 e 2, isto , a
k
4
5
6
4
5
6
4
5
6
j
3
3
3
2
2
2
1
1
1
Como o menor custo de insero s621 , ento a cidade 6 deve ser inserida entre
as cidades 2 e 1. Logo, a subrota corrente passa a ser: s = (1 3 2 6). A
distncia associada a esta subrota : d(s) = d(s)anterior + s621 = 8 + 1 = 9.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), calculemos o custo de insero
entre todas as cidades i e j da subrota corrente. A tabela a seguir mostra os
custos de insero.
i
1
1
3
3
2
2
6
6
k
4
5
4
5
4
5
4
5
j
3
3
2
2
6
6
1
1
Como o menor custo de insero s413 , ento a cidade 4 deve ser inserida entre as
cidades 1 e 3. Logo, a subrota corrente passa a ser: s = (1 4 3 2 6).
A distncia associada a esta subrota : d(s) = d(s)anterior + s413 = 9 + 6 = 15.
v) Passo 5: A nica cidade ainda no visitada a cidade 5. A tabela a seguir mostra
os custos de insero desta cidade entre todas as arestas da subrota corrente.
i
1
4
3
2
6
k
5
5
5
5
5
j
4
3
2
6
1
Como o menor custo de insero s514 , ento a cidade 5 deve ser inserida entre
as cidades 1 e 4. Logo, a rota resultante : s = (1 5 4 3 2 6). A
distncia associada a esta rota : d(s) = d(s)anterior + s514 = 15 + 7 = 22.
Heursticas de Refinamento
10
3.1
A idia desta tcnica partir de uma soluo inicial qualquer e a cada passo analisar todos
os seus possveis vizinhos, movendo somente para aquele que representar uma melhora no
valor atual da funo de avaliao. Pelo fato de analisar todos os vizinhos e escolher o
melhor, esta tcnica comumente referenciada na literatura inglesa por Best Improvement
Method. O mtodo pra quando um timo local encontrado.
A Figura 3 mostra o pseudocdigo do Mtodo de Descida aplicado minimizao de
uma funo de avaliao f a partir de uma soluo inicial conhecida s e considerando a
busca em uma dada vizinhana N (.).
procedimento Descida(f (.), N (.), s);
1 V = {s0 N (s) | f (s0 ) < f (s)};
2 enquanto (|V | > 0) faa
3
Selecione s0 V , onde s0 = arg min{f (s0 ) | s0 V };
4
s s0 ;
5
V = {s0 N (s) | f (s0 ) < f (s)};
6 fim-enquanto;
7 Retorne s;
fim Descida;
Figura 3: Mtodo da Descida
Para o problema da mochila, representemos uma soluo s por um vetor binrio de
n posies e consideremos como movimento m a troca do valor de um bit. Assim, a
vizinhana de uma soluo s, e se escreve N (s), o conjunto de todos os vizinhos s0 que
diferem de s pelo valor de um bit. Formalmente, representamos N (s) = {s0 : s0 s m},
onde m significa a troca do valor de um bit. necessrio, agora, definir uma funo de
avaliao. Considerando que se deseja maximizar o valor de retorno trazido pela utilizao
de cada item, uma funo de avaliao apropriada seria:
f (s) =
n
X
11
pj sj max{0,
j=1
n
X
wj sj b}
(31)
j=1
n
P
j=1
pj = 15.
f (s0 )
8
4
9
2
10
f (s0 )
-3
8
-47
6
6
12
importante observar que diferentes solues iniciais conduzem, na maioria das vezes,
a diferentes solues finais. A Figura 4, em que s indica um ponto de partida e s um timo
local encontrado a partir da aplicao do Mtodo da Descida a s, ilustra esta situao.
c
u
s
t
o
s
s
s*
s*
s*
Espao de solues
n
X
pj sj f1 (s)
(32)
j=1
sendo f1 (s) =
se
se
n
P
j=1
n
P
j=1
wj sj b > 0
wj sj b 0
n
P
j=1
pj = 15.
Nesta formulao no se faz diferena entre o nvel de inviabilidade, pois qualquer que
seja o excesso de peso na mochila, a penalizao a mesma. Esta modelagem pode dificultar a explorao do espao de solues, pois conduz a regies planas, ditas plats, regies
nas quais as heursticas tm dificuldade para escapar. Em [30] os autores argumentam que
uma forma comum de evitar esta topologia no espao de busca adicionar componentes
funo de avaliao de forma a discriminar solues que teriam o mesmo valor da funo
custo original. Assim, no exemplo mencionado da mochila, das duas funes de avaliao
apresentadas, a mais adequada para guiar a busca a da frmula (31).
3.2
13
tal como no mtodo da descida/subida, este mtodo fica preso no primeiro timo local
encontrado.
Neste mtodo, desejvel que a ordem de explorao das solues vizinhas seja alterada a cada passo. Do contrrio, privilegia-se apenas um caminho determinstico no
espao de solues. Por exemplo, em um problema de programao de tripulaes, imagine que um movimento consista em realocar uma tarefa de uma tripulao para outra
tripulao. Se a cada passo, a ordem de explorao das solues vizinhas comear com a
movimentao da primeira tarefa do primeiro tripulante para o segundo tripulante, depois
para o terceiro, a seguir para o quarto e assim sucessivamente, ento os tripulantes iniciais
sero privilegiados. Para evitar isso, uma alternativa de soluo utilizar uma seqncia
diferente de tripulaes a cada iterao do mtodo. Assim, na primeira iterao do mtodo poder-se-ia usar uma seqncia de tripulantes, por exemplo, (1, 2, 3, 4, , n); outra
seqncia diferente na segunda iterao, por exemplo, (7, 4, 1, 9, ) e assim por diante.
3.3
14
3.4
3.5
15
aplicar o Mtodo Randmico de Descida (vide seo 3.3, pgina 13), para cada vizinhana
explorada.
Segundo os autores, o mtodo VND baseia-se em trs princpios bsicos:
Um timo local com relao a uma dada estrutura de vizinhana no corresponde
necessariamente a um timo local com relao a uma outra estrutura de vizinhana;
Um timo global corresponde a um timo local para todas as estruturas de vizinhana;
Para muitos problemas, timos locais com relao a uma ou mais estruturas de
vizinhana so relativamente prximas.
Ainda de acordo os autores, o ltimo princpio, de natureza emprica, indica que um
timo local freqentemente fornece algum tipo de informao sobre o timo global. Este
o caso em que os timos local e global compartilham muitas variveis com o mesmo valor,
o que sugere uma investigao sistemtica da vizinhana de um timo local at a obteno
de uma nova soluo de melhor valor.
Metaheursticas
As metaheursticas so procedimentos destinados a encontrar uma boa soluo, eventualmente a tima, consistindo na aplicao, em cada passo, de uma heurstica subordinada,
a qual tem que ser modelada para cada problema especfico [41].
Contrariamente s heursticas convencionais, as metaheursticas so de carter geral e
providas de mecanismos para tentar escapar de timos locais ainda distantes dos timos
globais.
As metaheursticas diferenciam-se entre si basicamente pelo mecanismo usado para sair
das armadilhas dos timos locais. Elas se dividem em duas categorias, de acordo com o
princpio usado para explorar o espao de solues: busca local e busca populacional.
Nas metaheursticas baseadas em busca local, a explorao do espao de solues feita
por meio de movimentos, os quais so aplicados a cada passo sobre a soluo corrente,
gerando outra soluo promissora em sua vizinhana. Busca Tabu, Simulated Annealing,
Busca em Vizinhana Varivel (Variable Neighborhood Search) e Iterated Local Search so
exemplos de mtodos que se enquadram nesta categoria.
Os mtodos baseados em busca populacional, por sua vez, consistem em manter um
conjunto de boas solues e combin-las de forma a tentar produzir solues ainda melhores. Exemplos clssicos de procedimentos desta categoria so os Algoritmos Genticos, os
Algoritmos Memticos e o Algoritmo Colnia de Formigas.
Apresentamos, a seguir, as principais metaheursticas referenciadas na literatura.
16
4.1
Multi-Start
A metaheurstica Multi-Start consiste em fazer amostragens do espao de solues, aplicando a cada soluo gerada um procedimento de refinamento. As amostras so obtidas
por meio da gerao de solues aleatrias. Com este procedimento, h uma diversificao no espao de busca, possibilitando escapar dos timos locais. A grande vantagem do
mtodo que ele de fcil implementao.
Na Figura 7 apresenta-se o pseudocdigo de um procedimento Multi-Start bsico para
um problema de minimizao. Um nmero mximo de iteraes ou um tempo mximo de
processamento normalmente utilizado como critrio de parada.
procedimento M ultiStart(f (.), N (.), CriterioP arada, s)
1 f ? ;
{Valor associado a s? }
2 enquanto (Critrio de parada no atendido) faa
3
s ConstruaSolucao(); {Gere uma soluo s do espao de solues}
4
s BuscaLocal(s);
{Aplique um procedimento de melhora em s}
5
se (f (s) < f (s? )) ento
6
s? s;
7
f ? f (s);
8
fim-se;
9 fim-enquanto;
10 s s? ;
11 Retorne s;
fim M ultiStart;
Figura 7: Metaheurstica Multi-Start
Uma variao comum no procedimento Multi-Start consiste em partir de uma soluo
inicial gerada por um procedimento construtivo guloso. Assim, na Figura 7 cria-se uma
linha 0 e substitui-se a linha 1, tal como se segue:
0 s? ConstruaSolucaoGulosa(); {Melhor soluo at ento}
1 f ? f (s? );
{Valor associado a s? }
O procedimento ContruaSolucaoGulosa() encontra-se descrito na Figura 1, pgina
3 destas notas de aula.
4.2
17
Simulated Annealing
Trata-se de uma tcnica de busca local probabilstica, proposta originalmente por Kirkpatrick et al. [31], que se fundamenta em uma analogia com a termodinmica, ao simular o
resfriamento de um conjunto de tomos aquecidos, operao conhecida como recozimento
[11].
Esta tcnica comea sua busca a partir de uma soluo inicial qualquer. O procedimento principal consiste em um loop que gera aleatoriamente, em cada iterao, um nico
vizinho s0 da soluo corrente s.
Considerando um problema de minimizao, seja a variao de valor da funo
objetivo ao mover-se para uma soluo vizinha candidata, isto , = f (s0 ) f (s). O
mtodo aceita o movimento e a soluo vizinha passa a ser a nova soluo corrente se
< 0. Caso 0 a soluo vizinha candidata tambm poder ser aceita, mas neste
caso, com uma probabilidade e/T , onde T um parmetro do mtodo, chamado de
temperatura e que regula a probabilidade de se aceitar solues de pior custo.
A temperatura T assume, inicialmente, um valor elevado T0 . Aps um nmero fixo
de iteraes (o qual representa o nmero de iteraes necessrias para o sistema atingir o
equilbrio trmico em uma dada temperatura), a temperatura gradativamente diminuda
por uma razo de resfriamento , tal que Tk Tk1 , sendo 0 < < 1. Com esse procedimento, d-se, no incio uma chance maior para escapar de mnimos locais e, medida
que T aproxima-se de zero, o algoritmo comporta-se como o mtodo
de descida, uma vez
Temperatura T
0
0
10
20
30
40
50
18
estvel. A soluo obtida quando o sistema encontra-se nesta situao evidencia o encontro
de um timo local.
Os parmetros de controle do procedimento so a razo de resfriamento , o nmero
de iteraes para cada temperatura (SAmax) e a temperatura inicial T0 .
Apresenta-se, pela Figura 9, o algoritmo Simulated Annealing bsico aplicado a um
problema de minimizao.
procedimento SA(f (.), N (.), , SAmax, T0 , s)
1 s? s;
{Melhor soluo obtida at ento}
2 IterT 0;
{Nmero de iteraes na temperatura T}
3 T T0 ;
{Temperatura corrente}
4 enquanto (T > 0) faa
5
enquanto (IterT < SAmax) faa
6
IterT IterT + 1;
7
Gere um vizinho qualquer s0 N (s);
8
= f (s0 ) f (s);
9
se ( < 0)
10
ento
11
s s0 ;
12
se (f (s0 ) < f (s? )) ento s? s0 ;
13
seno
14
Tome x [0, 1];
15
se (x < e/T ) ento s s0 ;
16
fim-se;
17
fim-enquanto;
18
T T;
19
IterT 0;
20 fim-enquanto;
21 s s? ;
22 Retorne s;
fim SA;
Figura 9: Algoritmo Simulated Annealing
Observamos que no caso de o problema ser de maximizao, as seguintes modificaes
devem ser feitas na Figura 9: Na linha 9, considerar que > 0; na linha 12, substituir
pelo teste (f (s0 ) > f (s? )) e, finalmente, na linha 15, substituir por (x < e/T ).
Dependendo do processo de resfriamento, pode ser mostrada a convergncia do mtodo
a uma soluo que seja globalmente tima [11]. Para tal, a temperatura na iterao k do
mtodo, dada por Tk , deve ser calculada com base na expresso (43):
Tk =
c
ln(1 + k)
(43)
em que c da ordem do valor do timo local mais profundo (no caso de o problema
ser de minimizao) ou mais elevado (no caso de o problema ser de maximizao). A
convergncia garantida quando k .
Tal resultado, entretanto, de utilidade prtica restrita, uma vez que o resfrimento
muito lento, requerendo um nmero proibitivo de iteraes do mtodo.
H vrias outras formas de fazer o resfriamento, alm do geomtrico. Uma alternativa
fazer o decaimento da temperatura por meio da expresso (44):
Tk =
Tk1
p
k 1
1 + Tk1
19
(44)
Tk1
se k = 1
Tk =
(45)
T
k1
se
k
2
1 + Tk1
T0 Tk1
, T0 a temperatura inicial, Tk a temperatura na k-sima iterao
sendo = (k1)T
0 Tk1
e um parmetro para corrigir a imperfeio do resfriamento (0 < < 1). Igualmente,
valores de prximos a zero indicam resfriamento muito lento.
Algoritmos baseados em SA normalmente incluem reaquecimento, seguido de novo
resfriamento, quando a quantidade de movimentos consecutivamente rejeitados alta [11].
comum, tambm, trabalhar nas temperaturas mais altas com uma taxa de resfriamento
menor e aument-la quando a temperatura reduzir-se.
A estimao do nmero mximo de iteraes em uma dada temperatura, isto , SAmax,
normalmente feita em funo das dimenses do problema tratado. Por exemplo, em um
problema de programao de horrios em escolas (school timetabling), envolvendo n turmas, m professores e p horrios reservados para a realizao das aulas, o valor de SAmax
pode ser estimado em SAmax = k p m n, sendo k uma constante a determinar.
J em um problema de programao de tripulaes (crew scheduling) envolvendo ntrip
tripulantes e ntarefas tarefas, SAmax estimado em SAmax = k ntrip ntarefas.
H pelo menos duas prescries para a determinao autoadaptativa da temperatura
inicial: por simulao ou pelo custo das solues.
A primeira delas consiste em determinar a temperatura inicial por simulao. Por
este mecanismo, parte-se de uma soluo s e de uma temperatura de partida baixa. A
seguir, contam-se quantos vizinhos desta soluo s so aceitos em SAmax iteraes do
mtodo nesta temperatura. Caso esse nmero de vizinhos aceitos seja elevado, algo como
95% dos vizinhos, ento retorna-se a temperatura corrente como a temperatura inicial
para o processo de refinamento pelo mtodo. Caso o nmero de vizinhos aceitos no
atinja o valor mnimo requerido, aumenta-se a temperatura segundo uma certa taxa, por
exemplo 10%, e repete-se a contagem do nmero de vizinhos aceitos naquela temperatura.
O procedimento prossegue at que se obtenha o nmero mnimo de vizinhos aceitos. A
temperatura na qual esta condio ocorre representa a temperatura inicial para o mtodo
Simulated Annealing. A Figura 10 mostra o pseudocdigo para determinar a temperatura
inicial por este mtodo, considerando um problema de minimizao. Nesta figura, a
taxa de aumento da temperatura ( > 1), a taxa mnima de aceitao de solues
vizinhas (por exemplo, = 0.95) e T0 uma temperatura de partida para o mtodo, por
exemplo, T0 = 1.
Outra prescrio para determinar a temperatura inicial consiste em partir de uma dada
soluo e gerar todos os seus possveis vizinhos ou uma frao destes. Para cada um desses
vizinhos, calcular o respectivo custo segundo a funo de avaliao considerada. Repetir
este procedimento para outros pontos iniciais, j que dependendo da soluo inicial o custo
das solues vizinhas pode ser diferente. O maior custo encontrado uma estimativa para
a temperatura inicial.
20
4.3
21
Busca Tabu
22
da melhor soluo.
Apresenta-se, pela Figura 11, o pseudocdigo de um algoritmo de Busca Tabu bsico
para o caso de minimizao. Neste procedimento, fmin o valor mnimo conhecido da
funo f , informao esta que em alguns casos est disponvel.
procedimento BT (f (.), N (.), A(.), |V |, fmin , |T |, BT max, s)
1 s? s;
{Melhor soluo obtida at ento}
2 Iter 0;
{Contador do nmero de iteraes}
3 M elhorIter 0; {Iterao mais recente que forneceu s? }
4 T ;
{Lista Tabu}
5 Inicialize a funo de aspirao A;
6 enquanto (f (s) > fmin e Iter M elhorIter BT max) faa
7
Iter Iter + 1;
8
Seja s0 s m o melhor elemento de V N (s) tal que
o movimento m no seja tabu (m 6 T ) ou
s0 atenda a condio de aspirao (f (s0 ) < A(f (s)));
9
Atualize a lista tabu T ;
10
s s0 ;
11
se (f (s) < f (s? )) ento
12
s? s;
13
M elhorIter Iter;
14
fim-se;
15
Atualize a funo de aspirao A;
16 fim-enquanto;
17 s s? ;
18 Retorne s;
fim BT ;
Figura 11: Algoritmo de Busca Tabu
comum em mtodos de Busca Tabu incluir estratgias de intensificao, as quais
tm por objetivo concentrar a pesquisa em determinadas regies consideradas promissoras.
Uma estratgia tpica retornar uma soluo j visitada para explorar sua vizinhana
de forma mais efetiva. Outra estratgia consiste em incorporar atributos das melhores
solues j encontradas durante o progresso da pesquisa e estimular componentes destas solues a tornar parte da soluo corrente. Nesse caso, so consideradas livres no
procedimento de busca local apenas as componentes no associadas s boas solues, permanecendo as demais componentes fixas. Um critrio de trmino, tal como um nmero
fixo de iteraes, utilizado para encerrar o perodo de intensificao. Na seo 5.1, pgina
50, detalha-se um procedimento de intensificao, a Reconexo por Caminhos, mecanismo
que comumente associado a implementaes Busca Tabu.
Mtodos baseados em Busca Tabu incluem, tambm, estratgias de diversificao. O
objetivo destas estratgias, que tipicamente utilizam uma memria de longo prazo, redirecionar a pesquisa para regies ainda no suficientemente exploradas do espao de
solues. Estas estratgias procuram, ao contrrio das estratgias de intensificao, gerar
solues que tm atributos significativamente diferentes daqueles encontrados nas melhores solues obtidas. A diversificao, em geral, utilizada somente em determinadas
situaes, como, por exemplo, quando dada uma soluo s, no existem movimentos m
de melhora para ela, indicando que o algoritmo j exauriu a anlise naquela regio. Para
escapar desta regio, a idia estabelecer uma penalidade w(s, m) para uso desses movi-
23
mentos. Um nmero fixo de iteraes sem melhora no valor da soluo tima corrente ,
em geral, utilizado para acionar estas estratgias. Na seo 5.3, pgina 54, detalha-se um
procedimento de diversificao, a Relaxao Adaptativa.
Mtodos de Busca Tabu incluem, tambm, listas tabu dinmicas [6, 43], muitas das
quais atualizadas de acordo com o progresso da pesquisa [4, 3, 2]. A grande vantagem de se
usar uma lista tabu de tamanho dinmico que se minimiza a possibilidade de ocorrncia
de ciclagem. Em [22] os autores resolvem um problema de roteamento de veculos por
meio de Busca Tabu utilizando uma lista tabu dinmica que varia no intervalo [tmin , tmax ],
sendo tmin = 0, 9n e tmax = 1, 1n, com n representando o nmero de cidades da instncia
considerada. Nesta aplicao, depois que o tamanho da lista escolhido aleatoriamente
no intervalo [tmin , tmax ], ele mantido constante por 2tmax iteraes. A idia por trs da
utilizao da lista dinmica que, se com um dado tamanho de lista h ciclagem, ento
aumentando ou diminuindo esse tamanho haver alterao da quantidade de movimentos
tabu e, assim, diferentes solues podero ser geradas. Com esta possibilidade de mudana
de trajetria no espao de busca, a ocorrncia de ciclagem fica reduzida.
Recentemente, [18] e [24] provaram a convergncia finita de alguns mtodos de Busca
Tabu baseados em memria por recenticidade e por frequncia.
De forma a ilustrar o mtodo de Busca Tabu, apliquemos esta metodologia heurstica
instncia do problema da mochila apresentado no incio destas notas de aula. Consideremos uma lista tabu T de cardinalidade |T | = 1 e como atributo tabu a posio do
bit alterado. Utilizemos o critrio de aspirao por objetivo, isto , um movimento tabu
somente ser realizado se a soluo produzida melhorar a melhor soluo gerada at ento.
O critrio de parada ser BT max = 1, isto , apenas uma iterao sem melhora.
Passo 0 : Seja uma soluo inicial qualquer, por exemplo:
s = (01010)t
f (s) = 6
Peso corrente da mochila = 14
Lista tabu = T =
Melhor soluo at ento: s = (01010)t e f (s ) = 6
Iter = 0; M elhorIter = 0;
Passo 1 : Devemos, agora, analisar todos os vizinhos de s e calcular a funo de avaliao
deles por meio da expresso (31), definida pgina 11.
Vizinhos de s
(11010)t
(00010)t
(01110)t
(01000)t
(01011)t
f (s0 )
8
4
9
2
10
24
f (s0 )
-3
8
-47
6
6
f (s0 )
10
10
11
4
4
25
f (s0 )
-2
-17
8
7
7
Observe que o vizinho com o melhor valor para a funo de avaliao s0 = (00011)t ,
com f (s0 ) = 8, mas esta soluo tabu, uma vez que o bit da terceira posio est
na lista tabu. Como o critrio de aspirao desta soluo no satisfeito, pois
f (s0 ) = 8 f (s ) = 11, esta soluo no aceita. Desta forma, considera-se o
melhor vizinho no tabu, a saber:
Melhor vizinho: s0 = (00101)t , com f (s0 ) = 7 (Em caso de empate, como o caso, a
soluo escolhida aquela que satisfaz um determinado critrio, como por exemplo,
aquela associada ao menor peso ou menor ndice)
Como s0 o melhor vizinho de s (mesmo sendo de piora), ento s s0 , isto , a
nova soluo corrente passa a ser: s = (00101)t
Lista tabu = T = {4} (indicando que o bit da quarta posio no pode ser modificado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s = (00111)t e f (s ) = 11
Iter = 4; M elhorIter = 3;
Como Iter M elhorIter = 4 3 = 1 BT max = 1, ento a busca prossegue.
Passo 5 : Determinemos, agora, o melhor vizinho de s = (00101)t :
Vizinhos de s
(10101)t
(01101)t
(00001)t
(00111)t
(00100)t
f (s0 )
9
9
4
11
3
Observe que o vizinho com o melhor valor para a funo de avaliao s0 = (00111)t ,
com f (s0 ) = 11. Entretanto, esta soluo tabu, uma vez que o bit da quarta posio est na lista tabu. Como o critrio de aspirao desta soluo no satisfeito,
pois f (s0 ) = 11 f (s ) = 11, esta soluo no aceita. Desta forma, considera-se o
melhor vizinho no tabu, a saber (j aplicado um critrio de desempate):
Melhor vizinho: s0 = (10101)t , com f (s0 ) = 9
Desta forma, a nova soluo corrente passa a ser: s = (10101)t , com f (s) = 9
Lista tabu = T = {1} (indicando que o bit da primeira posio no pode ser modificado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s = (00111)t e f (s ) = 11
Iter = 5; M elhorIter = 3;
Como Iter M elhorIter = 5 3 = 2 > BT max = 1, ento PARE. O mtodo de
Busca Tabu retorna, ento, s = (00111)t como soluo final, com valor f (s ) = 11.
26
A aplicao deste mtodo mostra que a soluo final obtida melhor que aquela obtida
com a aplicao do mtodo da subida, apresentado na pgina 10. Isto foi possvel devido
aceitao de movimentos de piora, no caso, com o passo 2 do mtodo. Esta estratgia
possibilitou escapar de um timo local, atingindo uma outra regio do espao de solues,
na qual uma soluo melhor foi encontrada.
4.4
27
GRASP
GRASP (Greedy Randomized Adaptive Search Procedure - Procedimento de busca adaptativa gulosa e randomizada) um mtodo iterativo, proposto em [12], que consiste de
duas fases: uma fase de construo, na qual uma soluo gerada, elemento a elemento,
e de uma fase de busca local, na qual um timo local na vizinhana da soluo construda
pesquisado. A melhor soluo encontrada ao longo de todas as iteraes GRASP realizadas retornada como resultado. O pseudocdigo descrito pela Figura 12 ilustra um
procedimento GRASP para um problema de minimizao.
procedimento GRASP (f (.), g(.), N (.), GRASP max, s)
1 f ? ;
2 para (Iter = 1, 2, . . . , GRASP max) faa
3
Construcao(g(.), , s);
4
BuscaLocal(f (.), N (.), s);
5
se (f (s) < f ? ) ento
6
s? s;
7
f ? f (s);
8
fim-se;
9 fim-para;
10 s s? ;
11 Retorne s;
fim GRASP
Figura 12: Algoritmo GRASP
Na fase de contruo, uma soluo iterativamente construda, elemento por elemento.
A cada iterao desta fase, os prximos elementos candidatos a serem includos na soluo so colocados em uma lista C de candidatos, seguindo um critrio de ordenao
pr-determinado. Este processo de seleo baseado em uma funo adaptativa gulosa
g : C 7 <, que estima o benefcio da seleo de cada um dos elementos. A heurstica
dita adaptativa porque os benefcios associados com a escolha de cada elemento so
atualizados em cada iterao da fase de construo para refletir as mudanas oriundas da
seleo do elemento anterior. A componente probabilstica do procedimento reside no fato
de que cada elemento selecionado de forma aleatria a partir de um subconjunto restrito
formado pelos melhores elementos que compem a lista de candidatos. Este subconjunto
recebe o nome de lista de candidatos restrita (LCR). Esta tcnica de escolha permite que
diferentes solues sejam geradas em cada iterao GRASP. O pseudocdigo representado
pela Figura 13, onde [0, 1] um parmetro do mtodo, descreve a fase de construo
GRASP.
Observamos que o parmetro controla o nvel de gulosidade e aleatoriedade do procedimento Construcao. Um valor = 0 faz gerar solues puramente gulosas, enquanto
= 1 faz produzir solues totalmente aleatrias.
Assim como em muitas tcnicas determinsticas, as solues geradas pela fase de construo do GRASP provavelmente no so localmente timas com respeito definio de
vizinhana adotada. Da a importncia da fase de busca local, a qual objetiva melhorar
a soluo construda. A Figura 14 descreve o pseudo-cdigo de um procedimento bsico de busca local com respeito a uma certa vizinhana N (.) de s para um problema de
minimizao.
A eficincia da busca local depende da qualidade da soluo construda. O procedi-
28
mento de construo tem ento um papel importante na busca local, uma vez que as
solues construdas constituem bons pontos de partida para a busca local, permitindo
assim aceler-la.
O parmetro , que determina o tamanho da lista de candidatos restrita, basicamente o nico parmetro a ser ajustado na implementao de um procedimento GRASP.
Em [12] discute-se o efeito do valor de na qualidade da soluo e na diversidade das
solues geradas durante a fase de construo. Valores de que levam a uma lista de
candidatos restrita de tamanho muito limitado (ou seja, valor de prximo da escolha
gulosa) implicam em solues finais de qualidade muito prxima quela obtida de forma
puramente gulosa, obtidas com um baixo esforo computacional. Em contrapartida, provocam uma baixa diversidade de solues construdas. J uma escolha de prxima da
seleo puramente aleatria leva a uma grande diversidade de solues construdas mas,
por outro lado, muitas das solues construdas so de qualidade inferior, tornando mais
lento o processo de busca local.
O procedimento GRASP procura, portanto, conjugar bons aspectos dos algoritmos
puramente gulosos, com aqueles dos procedimentos aleatrios de construo de solues.
Procedimentos GRASP mais sofisticados incluem estratgias adaptativas para o parmetro . O ajuste deste parmetro ao longo das iteraes GRASP, por critrios que levam
em considerao os resultados obtidos nas iteraes anteriores, produz solues melhores
do que aquelas obtidas considerando-o fixo [36, 37, 38].
4.5
29
A Busca em Vizinhana Varivel, ou Mtodo de Pesquisa em Vizinhana Varivel (Variable Neighborhood Search, VNS), proposta por Nenad Mladenovi e Pierre Hansen [34],
um mtodo de busca local que consiste em explorar o espao de solues por meio de
trocas sistemticas de estruturas de vizinhana. Contrariamente outras metaheursticas
baseadas em mtodos de busca local, o mtodo VNS no segue uma trajetria, mas sim
explora vizinhanas gradativamente mais distantes da soluo corrente e focaliza a busca
em torno de uma nova soluo se e somente se um movimento de melhora realizado. O
mtodo inclui, tambm, um procedimento de busca local a ser aplicado sobre a soluo
corrente. Esta rotina de busca local tambm pode usar diferentes estruturas de vizinhana.
Na sua verso original, o mtodo VNS faz uso do mtodo VND para fazer a busca local.
O pseudocdigo do mtodo apresentado pela Figura 15. Detalhes adicionais podem
ser encontrados em [34, 26, 27].
procedimento VNS ()
1 Seja s0 uma soluo inicial;
2 Seja r o nmero de estruturas diferentes de vizinhana;
3 s s0 ;
{Soluo corrente}
4 enquanto (Critrio de parada no for satisfeito) faa
5
k 1;
{Tipo de estrutura de vizinhana corrente}
6
enquanto (k r) faa
7
Gere um vizinho qualquer s0 N (k) (s);
8
s00 BuscaLocal(s0 );
9
se (f (s00 ) < f (s))
10
ento
11
s s00 ;
12
k 1;
13
seno
14
k k + 1;
15
fim-se;
16
fim-enquanto;
17 fim-enquanto;
18 Retorne s;
fim VNS ;
Figura 15: Algoritmo VNS
Neste algoritmo, parte-se de uma soluo inicial qualquer e a cada iterao seleciona-se
aleatoriamente um vizinho s0 dentro da vizinhana N (k) (s) da soluo s corrente. Esse
vizinho ento submetido a um procedimento de busca local. Se a soluo tima local,
s00 , for melhor que a soluo s corrente, a busca continua de s00 recomeando da primeira
estrutura de vizinhana N (1) (s). Caso contrrio, continua-se a busca a partir da prxima
estrutura de vizinhana N (k+1) (s). Este procedimento encerrado quando uma condio
de parada for atingida, tal como o tempo mximo permitido de CPU, o nmero mximo
de iteraes ou nmero mximo de iteraes consecutivas entre dois melhoramentos. A
soluo s0 gerada aleatoriamente no passo 7 de forma a evitar ciclagem, situao que
pode ocorrer se alguma regra determinstica for usada.
30
4.6
O mtodo Iterated Local Search (ILS) baseado na idia de que um procedimento de busca
local pode ser melhorado gerando-se novas solues de partida, as quais so obtidas por
meio de perturbaes na soluo tima local.
Para aplicar um algoritmo ILS, quatro componentes tm que ser especificadas: (a)
Procedimento GeraSolucaoInicial(), que gera uma soluo inicial s0 para o problema;
(b) Procedimento BuscaLocal, que retorna uma soluo possivelmente melhorada s00 ; (c)
Procedimento P erturbacao, que modifica a soluo corrente s guiando a uma soluo
intermediria s0 e (d) Procedimento CriterioAceitacao, que decide de qual soluo a
prxima perturbao ser aplicada.
Na Figura 16 mostra-se o pseudocdigo do algoritmo ILS bsico.
procedimento ILS
1 s0 GeraSolucaoInicial();
2 s BuscaLocal(s0 );
3 enquanto (os critrios de parada no estiverem satisfeitos) faa
4
s0 P erturbacao(histrico, s);
5
s00 BuscaLocal(s0 );
6
s CriterioAceitacao(s, s00 , histrico);
8 fim-enquanto;
fim ILS;
Figura 16: Algoritmo Iterated Local Search
O sucesso do ILS centrado no conjunto de amostragem de timos locais, juntamente
com a escolha do mtodo de busca local, das perturbaes e do critrio de aceitao. Em
princpio, qualquer mtodo de busca local pode ser usado, mas o desempenho do ILS com
respeito qualidade da soluo final e a velocidade de convergncia depende fortemente do
mtodo escolhido. Normalmente um mtodo de descida usado, mas tambm possvel
aplicar algoritmos mais sofisticados, tais como Busca Tabu ou outras metaheursticas.
O mecanismo de perturbao deve ser forte o suficiente para permitir escapar do timo
local corrente e permitir explorar diferentes regies. Ao mesmo tempo, a modificao
precisa ser fraca o suficiente para guardar caractersticas do timo local corrente.
O critrio de aceitao usado para decidir de qual soluo se continuar a explorao,
bem como qual ser a perturbao a ser aplicada. Um aspecto importante do critrio
de aceitao e da perturbao que eles induzem aos procedimentos de intensificao
e diversificao. A intensificao consiste em permanecer na regio do espao onde a
busca se encontra, procurando explor-la de forma mais efetiva; enquanto a diversificao
consiste em se deslocar para outras regies do espao de solues. A intensificao da
busca no entorno da melhor soluo encontrada obtida, por exemplo, pela aplicao
de pequenas perturbaes sobre ela. A diversificao, por sua vez, pode ser realizada
aceitando-se quaisquer solues s00 e aplicando grandes perturbaes na soluo tima
local.
Um critrio de aceitao comumente utilizado mover-se para o timo local s00 somente
se ele for melhor que o timo local corrente s, isto , somente se f (s00 ) < f (s) em um
problema de minimizao, ou se f (s00 ) > f (s) em um problema de maximizao.
A Figura 17, pgina 31, ilustra o funcionamento do mtodo ILS em um problema
de minimizao. A partir de um timo local s, feita uma perturbao que guia a uma
soluo intermediria s0 . Aps a aplicao de um mtodo de busca local a s0 produzido
31
um novo timo local s00 . Considerando como critrio de aceitao o fato de f (s00 ) ser
melhor que f (s), ento a busca prossegue a partir de s00 .
c
Perturbao
u
s
s'
t
o
s"
Espao de solues
4.7
Guided Local Search ou Busca Local Guiada uma metaheurstica proposta por Christos
Voudouris [47]. Consiste em promover modificaes na funo custo para escapar de timos
locais.
32
4.8
4.8.1
Algoritmos Genticos
Descrio genrica do mtodo
Trata-se de uma metaheurstica que se fundamenta em uma analogia com processos naturais de evoluo, nos quais, dada uma populao, os indivduos com caractersticas
genticas melhores tm maiores chances de sobrevivncia e de produzirem filhos cada vez
mais aptos, enquanto indivduos menos aptos tendem a desaparecer. Foram propostos por
John Holland nos anos 70 [23]. Referenciamos a [23, 39] para um melhor detalhamento do
mtodo.
Nos Algoritmos Genticos (AGs), cada cromossomo (indivduo da populao) est
associado a uma soluo do problema e cada gene est associado a uma componente da
soluo. Um alelo, por sua vez, est associado a um possvel valor que cada componente
da soluo pode assumir. Um mecanismo de reproduo, baseado em processos evolutivos,
aplicado sobre a populao com o objetivo de explorar o espao de busca e encontrar
melhores solues para o problema. Cada indivduo avaliado por uma certa funo de
aptido, a qual mensura seu grau de adaptao ao meio. Quanto maior o valor da funo
de aptido, mais o indivduo est adaptado ao meio.
Um Algoritmo Gentico inicia sua busca com uma populao s01 , s02 , . . . , s0n , normalmente aleatoriamente escolhida, a qual chamada de populao no tempo 0.
t+1
t+1
O procedimento principal um loop que cria uma populao st+1
no
1 , s2 , . . . , sn
tempo t+1 a partir de uma populao do tempo t. Para atingir esse objetivo, os indivduos
da populao do tempo t passam por uma fase de reproduo, a qual consiste em selecionar
indivduos para operaes de recombinao e/ou mutao. H vrias formas de selecionar
indviduos para o processo de reproduo. Uma dessas formas a Binary Tournament
Selection. Nesse processo de seleo, dois indivduos so selecionados aleatoriamente e
aquele que tiver o maior valor para a funo de aptido escolhido para ser o primeiro
pai. O segundo pai escolhido de forma anloga. Outra forma de selecionar os pais
para o processo de seleo escolh-los aleatoriamente. Na operao de recombinao,
os genes de dois cromossomos pais so combinados de forma a gerar cromossomos filhos
(normalmente dois), de sorte que para cada cromossomo filho h um conjunto de genes de
cada um dos cromossomos pais. A operao de mutao consiste em alterar aleatoriamente
uma parte dos genes de cada cromossomo (componentes da soluo). Ambas as operaes
so realizadas com uma certa probabilidade. A operao de recombinao realizada
normalmente com uma probabilidade mais elevada (por exemplo, 80%) e a de mutao,
com uma baixa probabilidade (de 1 a 2%, em geral).
Gerada a nova populao do tempo t + 1, define-se a populao sobrevivente, isto ,
as n solues que integraro a nova populao. A populao sobrevivente definida pela
aptido dos indivduos. Os critrios comumente usados para escolher os cromossomos
sobreviventes so os seguintes: 1) aleatrio; 2) roleta (onde a chance de sobrevivncia
de cada cromossomo proporcional ao seu nvel de aptido) e 3) misto (isto , uma
combinao dos dois critrios anteriores). Em qualquer um desses critrios admite-se,
portanto, a sobrevivncia de indivduos menos aptos. Isto feito tendo-se por objetivo
tentar escapar de timos locais.
A Figura 18 mostra a estrutura de um Algoritmo Gentico bsico.
Os critrios de parada mais comuns so: quando um certo nmero de geraes atingido, quando no h melhora aps um certo nmero de iteraes ou quando o desvio padro
da populao inferior a um certo valor (situao que evidencia uma homogeneidade da
populao).
Os parmetros principais de controle do mtodo so: o tamanho n da populao, a
33
Normalmente uma soluo de um problema est associado a um cromossomo p representado na forma de um vetor (ou lista) com m posies: p = (x1 , x2 , . . . , xm ), onde cada
componente xi representa um gene (ou uma varivel da soluo).
Dentre os tipos de representao de um cromossomo, os mais conhecidos so: representao binria zero-um e a representao por inteiros.
A representao binria a clssica dentro dos AGs. Contudo, existem aplicaes para
as quais mais conveniente o uso de representaes por inteiros.
A seguir, alguns exemplos ilustram os dois tipos de representao:
1. Representao Binria:
Na representao binria, uma soluo do problema representada por um vetor (ou
lista) de 0s e 1s.
Para ilustrar esta representao, considere o seguinte exemplo extrado de Michalewicz (1992), no qual deseja-se maximizar a funo:
f (x) = |11 num(x) 150|,
34
procedimento AG
1 t 0;
2 Gere a populao inicial P (t);
3 Avalie P (t);
4 enquanto (os critrios de parada no estiverem satisfeitos) faa
5
t t + 1;
6
Gere P (t) a partir de P (t 1);
7
Avalie P (t);
8
Defina a populao sobrevivente;
9 fim-enquanto;
fim AG;
Figura 19: Algoritmo Gentico
em que num(x) fornece o nmero de 1s do vetor cromossomo.
Por exemplo, se x = (101001) ento num(x) = 3.
Considere, agora, a representao binria de dois cromossomos compostos de 30
genes:
p1 = (101010101010101010101010101010)
p2 = (110000001100001110000000000000)
Ento f (p1 ) = |11num(p1 )150| = |1115150| = 15 e f (p2 ) = |11num(p2 )
150| = |11 7 150| = 73.
Observe que o cromossomo que fornece um ponto de mximo local dado por:
p0 = (000000000000000000000000000000), com f (p0 ) = 150
J o mximo global de f fornecido pelo cromossomo:
p = (111111111111111111111111111111), com f (p ) = 180
2. Representao por Inteiros:
Na representao por inteiros, uma soluo do problema representada por um vetor
(ou lista) de nmeros inteiros. Por exemplo, considerando o PCV, o cromossomo
p = (1 3 6 5 4 2 7 9 8) pode representar exatamente a ordem de visita do PCV, ou
seja, a rota (tour) t do PCV idntica a p:
t = {1 3 6 5 4 2 7 9 8}
Em um problema de programao de horrios, um cromossomo pode ser uma matriz
de nmeros inteiros, em que cada componente xij representa o nmero da turma
para a qual o professor i ministra aula no horrio j.
35
ponto de corte
A partir dos cortes, so gerados dois filhos, cada qual formado a partir da reunio de
partes de cada um dos pais.
O1 = (p11 | p22 ) = (1 0 1 | 0 0 0)
O2 = (p12 | p21 ) = (1 1 1 | 0 1 0)
4.8.4
36
O1 = (X 2 3 | 1 8 5 9 | X X)
O2 = (X 2 X | 4 5 6 7 | 3 X)
Considere agora o primeiro X de O1 (que deveria ser X = 1, mas forneceria uma
rota ilegal, j que esta cidade j se encontra presente na rota). Como X = 1 p1
no possvel, a cidade correspondente posio em que est a cidade 1 de p1 no
segundo pai p2 , a cidade 4. Assim, esta cidade alocada no primeiro X de O1 .
X
k
p1 = (1 . . .
p2 = (4 . . .
Obtm-se com isto:
O1 = (4 2 3 | 1 8 5 9 | X X)
Repete-se o procedimento para o prximo X O1 (X = 8 p1 )
37
X
k
p1 = (. . . | . . . | 8 . . . )
p2 = (. . . | . . . | 3 . . . )
Mas X = 3 j est presente em O1 , ento toma-se o n de p2 associado ao n 3 de
p1 .
X
k
p1 = (. . . 3 | . . .
p2 = (. . . 6 | . . .
Como X = 6 ainda no est presente em O1 , substitui-se X por 6 em O1 , obtendo-se:
O1 = (4 2 3 | 1 8 5 9 | 6 X)
Repete-se o procedimento para o prximo X O1 (X = 9 p1 )
X
k
p1 = (. . . | . . . | . . . 9)
p2 = (. . . | . . . | . . . 7)
Como X = 7 ainda no est presente em O1 , substitui-se X por 7 em O1 , obtendo-se:
O1 = (4 2 3 | 1 8 5 9 | 6 7)
Analogamente, preenchem-se os Xs de O2 , obtendo-se ao seu final:
O2 = (1 2 8 | 4 5 6 7 | 3 9)
O operador PMX explora a convenincia ou no de se reproduzir cromossomos localmente idnticos a um cromossomo pai. Esta propriedade til, por exemplo,
quando se tm rotas j localmente otimizadas.
2. Operador crossover OX:
Proposto por Davis (1985), o operador Ordenated Crossover (OX) constri um
offspring (cromossomo filho) escolhendo uma subseqncia de uma rota associado a
um cromossomo pai p1 e preservando a ordem relativa das cidades do outro cromossomo pai p2 .
Exemplo: Considere dois cromossomos pais:
38
39
p1 = (1 2 3 4 5 6 7 8 9)
p2 = (4 1 2 8 7 6 9 3 5)
O primeiro filho O1 obtido tomando-se inicialmente a primeira cidade de p1 ,
obtendo-se:
O1 = (1 X X X X X X X X)
Com a 1a posio de O1 j preenchida, ento o elemento da 1a posio de p2 igual
a 4 no pode ser tambm alocado 1a posio de O1 . Portanto, o elemento da 1a
posio de p2 , igual a 4, herdado pelo filho O1 na posio que ele ocupa em p1 . Ou
seja, o n 4 est na 4a posio de p1 , logo estar tambm na 4a posio de O1 .
O1 = (1 X X 4 X X X X X)
A seguir, estando o elemento da 4a posio do outro pai p2 = 8, e o inteiro 8 em p1
(na oitava posio), aloca-se 8 na oitava posio de O1 .
O1 = (1 X X 4 X X X 8 X)
Seguindo esse procedimento, tem-se:
O1 = (1 2 3 4 X X X 8 X)
O ltimo inteiro alocado foi 2, mas na 2a posio em p2 est o inteiro 1 que j est
em O1 . Neste caso, diz-se que foi completado um ciclo.
A partir da, as cidades restantes de O1 so preenchidas do outro pai (p2 ), obtendo-se:
O1 = (1 2 3 4 7 6 9 8 5)
De forma semelhante, tomando inicialmente a 1a cidade do segundo cromossomo pai
p2 , comea-se a construir o segundo cromossomo filho O2 , que ao final ser da forma:
O2 = (4 1 2 8 5 6 7 3 9)
Observe que o operador Cycle Crossover sempre preserva a posio de elementos
de um outro cromossomo pai.
4. Operador crossover ERX:
O operador Edge Recombination (ERX) foi desenvolvido especialmente para o PCV,
j que prioriza o fator adjacncia. Outra caracterstica principal do ERX a
de que um cromossomo filho deve ser construdo sempre que possvel a partir das
arestas presentes em ambos os pais. Whitley, Starkweather e Fuquay (1989)
observaram que em mdia 95% das arestas dos pais so transferidas para os filhos
neste operador reduzindo consideravelmente o percentual de arestas selecionadas
aleatoriamente.
40
1:
2:
3:
4:
5:
6:
(1,
(1,
(2,
(3,
(4,
(5,
2),
2),
3),
4),
5),
6),
(6,
(2,
(3,
(4,
(5,
(6,
1),
3),
4),
5),
6),
1),
(4,
(6,
(5,
(4,
(2,
(6,
1)
2), (2, 5)
3)
1)
5), (5, 3)
2)
41
42
4.9
Scatter Search
43
procedimento ScatterSearch
1 P ;
Use o procedimento Diversificao para construir uma soluo x;
Se x 6 P ento adicione x a P , isto , P P {x}; caso contrrio, descarte x;
Repita este procedimento at que |P | = P Size;
Construa Ref Set = {x1 , , xnbest }, com nbest solues diversificadas em P ;
2 Avalie as solues em RefSet e ordene-as de acordo com a funo de avaliao;
(Considere x1 a melhor soluo e xnbest a pior)
N ewSolutions T RU E;
enquanto (N ewSolutions) faa
3
Gere N ewSubsets, consistindo de todos os pares de solues em RefSet
que inclua pelo menos uma nova soluo;
N ewSolutions F ALSE;
enquanto (N ewSubset 6= ) faa
4
Selecione o prximo subconjunto s em N ewSubsets;
5
Aplique Combinao de Solues a s para obter uma ou mais solues x;
se (x 6 Ref Set e f (x) < f (xnbest ) ento
6
xnbest x e reordene RefSet;
7
N ewSolutions T RU E;
fim-se
8
Remova s de N ewSubsets;
fim-enquanto;
fim-enquanto;
fim ScatterSearch;
Figura 20: Algoritmo Scatter Search
um por vez em ordem lexicogrfica e o procedimento de Combinao de Solues aplicado para gerar uma ou mais solues no passo 5. Se uma nova soluo criada melhora
a pior soluo do conjunto de referncia RefSet corrente, ento ela a substitui e RefSet
reordenado no passo 6. O flag NewSolutions alterado para TRUE e o subconjunto s que
foi combinado removido de NewSubsets nos passos 7 e 8, respectivamente.
4.10
Colnia de Formigas
A metaheurstica Otimizao por Colnia de Formigas, ou simplesmente Colnia de Formigas (Ant Colony Optimization Metaheuristic - ACO), tem sua origem na tese de doutorado
de Marco Dorigo [8], publicada mais tarde em [9].
O mtodo simula o comportamento de um conjunto de agentes (formigas) que se cooperam para resolver um problema de otimizao. A cooperao entre as formigas se d
por meio do feromnio depositado por cada formiga ao se deslocar no espao de busca,
permitindo que esse rastro possa ser usado como informao por outras formigas.
De acordo com [10], informalmente, o comportamento das formigas em um algoritmo
ACO pode ser resumido como segue. Uma colnia de formigas move de forma concorrente e
assncrona construindo caminhos no espao de busca. Elas movem aplicando uma poltica
de deciso local estocstica, que faz uso das trilhas de feromnio e informaes heursticas.
Ao se moverem, as formigas constroem novas solues para o problema de otimizao.
Construda uma soluo, ou durante a construo de uma soluo, a formiga avalia a
soluo (parcial ou completa) e deposita uma trilha de feromnio apenas nas componentes
44
j ki
(46)
lk
i
45
(47)
em que best
ij representa a trilha de feromnio deixada pela formiga que produziu a melhor
soluo (pode ser tanto a melhor soluo de uma iterao envolvendo m formigas ou a
melhor soluo global). A atualizao da trilha de feromnio feita, neste caso, usando
uma forte estratgia elitista, pois somente o feromnio da formiga que produziu a melhor
soluo usado para proceder atualizao da trilha de feromnio em todos os arcos.
Uma outra estratgia elitista consiste em ordenar os comprimentos das rotas geradas
pelas m formigas em cada iterao e considerar que apenas as formigas associadas s w 1
melhores rotas (w < m) e melhor rota global podem depositar feromnio. A r-sima
melhor formiga da colnia contribui com a atualizao de feromnio com um peso dado
por max{0, w r} enquanto a formiga que produziu a melhor soluo global contribui com
um peso w. Nesta situao, o passo 5 da Figura 21 substitudo pela expresso (48):
ij (1 ) ij +
w1
X
(w r) rij + w gb
ij (i, j)
(48)
r=1
em que gb
ij indica a trilha de feromnio deixada pela formiga que produziu a melhor
soluo global at ento.
46
4.11
Algoritmos Memticos
4.12
Annealing Microcannico
Trata-se de uma variante do algoritmo Simulated Annealing, proposta em [1]. Diferentemente de SA, que baseia-se na simulao dos estados de um sistema fsico a temperatura
constante, o algoritmo Annealing Microcannico simula a variao dos estados a energia
constante. Utiliza, para esse propsito, uma verso do Algoritmo de Creutz [5, 32], o qual
introduz uma varivel, chamada de demnio, para modelar as flutuaes de energia.
A partir de uma soluo inicial arbitrria s, geram-se novas solues de forma que
E + D = constante, sendo D a energia do demnio (0 D Dmax ) e E a energia do
sistema (f (s)). O procedimento principal consiste em um loop que gera, randomicamente,
em cada iterao, um nico vizinho s0 da soluo corrente.
Chamando de a variao de energia ao mover-se de s para s0 , o mtodo aceita o
movimento, e a soluo vizinha s0 passa a ser a nova soluo corrente, se 0, com a
condio de que D Dmax , isto , que a energia liberada no supere a capacidade
do demnio. Caso > 0 a soluo vizinha s0 tambm pode ser aceita, desde que < D,
isto , que a energia necessria possa ser suprida pelo demnio. Em ambos os casos, se
houver aceitao, o demnio D recebe (ou libera, respectivamente) a variao de energia
envolvida ao mover-se de s para s0 , isto , D D . Desta forma, a energia total,
E + D, permanece constante.
O demnio assume, inicialmente, um valor Dmax . Aps um certo nmero de iteraes
(o qual representa o nmero de iteraes necessrias para o sistema atingir o equilbrio
trmico numa dada configurao de energia), esse valor gradativamente diminudo at
anular-se.
A vantagem de se usar o algoritmo AM que pode-se estabelecer, com preciso, se
o equilbrio trmico foi atingido [45]. Da fsica estatstica sabe-se que o valor mdio do
= T ) e no equilbrio trmico tem-se D/(D)
47
4.13
Otimizao Microcannica
48
49
50
5.1
51
No percorrer a trajetria completa de s1 at s2 , mas sim apenas parte dela (Reconexo por Caminhos Truncada).
Para a escolha da alternativa mais apropriada, deve-se ter um compromisso entre
tempo de processamento e qualidade da soluo. Em [40] foi observado que a explorao
de duas trajetrias potencialmente diferentes para cada par (s1 , s2 ) de solues consome,
aproximadamente, o dobro do tempo de processamento necessrio para explorar apenas
uma delas, com um ganho marginal muito pequeno em termos de qualidade de soluo.
Tambm foi observado pelos autores que, se apenas uma trajetria deve ser investigada,
melhores solues tendem a ser obtidas quando a Reconexo por Caminhos usa como
soluo inicial a melhor soluo dentre s1 e s2 (Esta a chamada Reconexo por Caminhos
Regressiva - Backward Path Relinking). Como a vizinhana da soluo inicial explorada
com muito mais profundidade do que aquela da soluo guia, usar como soluo inicial a
melhor dentre s1 e s2 oferece mais chances ao algoritmo de investigar mais detalhadamente
a vizinhana da soluo mais promissora. Pela mesma razo, as melhores solues so
normalmente encontradas prximas da soluo inicial, permitindo que o procedimento de
Reconexo por Caminhos seja interrompido aps algumas iteraes, antes de a soluo
guia ser alcanada.
Na Figura 26 representa-se o pseudocdigo do procedimento de reconexo por caminhos
para um problema de minimizao.
Procedimento Reconexo-Caminhos
1: g
s;
2: Atribuir a g 0 a melhor soluo entre s e g;
3: Calcular o conjunto de movimentos possveis (s, g);
4: enquanto |(s, g)| 6= 0 faa
5:
Atribuir a g 00 a melhor soluo obtida aplicando o melhor movimento de (s, g) a
g;
6:
Excluir de (s, g) este movimento;
7:
g g 00 ;
8:
se f (
g ) < f (g 0 ) ento
0
9:
g g;
10:
fim se
11: fim enquanto
12: Retorne g 0 ;
Figura 26: Procedimento de Reconexo por Caminhos
A Figura 26 mostra que o algoritmo de Reconexo por Caminhos unidirecional inicia
determinando o conjunto de movimentos (s, g) que ser aplicado a s (soluo inicial)
at chegar a g (soluo guia) (linha 3). Cada iterao do procedimento de reconexo por
caminhos unidirecional possui os quatro seguintes passos:
aplicar soluo corrente g o melhor movimento do conjunto de movimentos (linha
5), obtendo a soluo g 00 ;
excluir o melhor movimento do conjunto de movimentos ainda possvel (linha 6);
atualizar a soluo corrente (linha 7); e
testar se a soluo corrente, g, melhor que a melhor soluo, g 0 , encontrada ao
longo da trajetria aplicada a s para chegar a g. Em caso afirmativo, atribui-se g
52
53
fim se
se g 0 deve pertencer ao conjunto de solues elite ento
Inserir g 0 no ConjuntoElite;
fim se
se f (s) < f (s ) ento
s s;
M elhorIter Iter;
IterSemM elhora 0;
seno
IterSemM elhora IterSemM elhora + 1;
fim se
Atualize a funo de aspirao A;
fim enquanto
s s ;
Retorne s;
Figura 28: Algoritmo Busca Tabu com Reconexo por Caminhos
54
5.2
5.3
Relaxao Adaptativa
A Relaxao Adaptativa (tambm conhecida como Oscilao Estratgica) est intimamente ligada s origens da Busca Tabu [20]. Esta tcnica prov um meio de se alcanar
uma combinao entre intensificao e diversificao. Ela consiste em orientar movimentos em relao a um nvel crtico, que pode ser identificado por um estgio de construo
ou um intervalo escolhido de valores para uma funo. Tal nvel crtico (ou fronteira de
oscilao) freqentemente representa um ponto onde o mtodo normalmente seria interrompido. Em vez de parar quando esta fronteira alcanada, as regras para selecionar
movimentos so modificadas para permitir que a regio definida pelo nvel crtico seja atravessada. Esta abordagem ento continua at uma dada profundidade alm da fronteira de
oscilao. Encontrado este limite, retorna-se na direo oposta, e assim por diante.
A Figura 29 ilustra o comportamento deste procedimento.
55
56
Algoritmo BTRA
1: s GerarSolucaoInicial();
2: s s;
3: ListaT abu ;
4: repita
5:
Selecione um subconjunto V da vizinhana corrente N ;
6:
melhorM ovimento movimentoRandomico(V );
7:
melhorCustoDinamico ;
8:
para todo Movimento m V faa
9:
se ( f (s m) < f (s ) ) ento
10:
melhorM ovimento m;
11:
interromper;
12:
seno
13:
se (m
/ ListaT abu) ento
14:
se ( f (s m) < f (s) ) ento
15:
melhorM ovimento m;
16:
interromper;
17:
seno
18:
se (CustoP orP esosDinamicos(sm) < melhorCustoDinamico) ento
19:
melhorM ovimento m;
20:
melhorCustoDinamico CustoP orP esosDinamicos(s m);
21:
fim se
22:
fim se
23:
fim se
24:
fim se
25:
fim para
26:
s s melhorM ovimento;
27:
se f (s) < f (s ) ento
28:
s s;
29:
fim se
30:
AtualizarListaT abu();
31:
se IteracaoAtualizacao() ento AtualizarP esosDinamicos();
32: at que Critrio de parada seja alcanado;
33: s s ;
34: Retorne s;
Figura 30: Algoritmo de Busca Tabu com Relaxao Adaptativa
57
Referncias
[1] S. Barnard. Stereo matching by hierarchical microcanonical annealing. In Proceedings
of the 10th International Joint Conference on Artificial Intelligence, Milan, Italy,
1987.
[2] M.P. Bastos and C.C. Ribeiro. Reactive Tabu Search with Path Relinking for the
Steiner Problem in Graphs. In Proceedings of the Third Metaheuristics International
Conference, pages 3136, Angra dos Reis, Brazil, 1999.
[3] R. Battiti. Reactive Search: Toward Self-Tuning Heuristics. In V.J. Rayward-Smith,
I.H. Osman, C.R. Reeves, and G.D. Smith, editors, Modern Heuristic Search Methods,
chapter 4, pages 6183. John Wiley & Sons, New York, 1996.
[4] R. Battiti and G. Tecchiolli. The Reactive Tabu Search. ORSA Journal of Computing,
6:126140, 1994.
[5] M. Creutz. Microcanonical Monte-Carlo Simulation.
50:14111414, 1983.
[6] F. Dammeyer and S. Vo. Dynamic tabu list management using the reverse elimination method. In P.L. Hammer, editor, Tabu Search, volume 41 of Annals of Operations
Research, pages 3146. Baltzer Science Publishers, Amsterdan, 1993.
[7] D. de Werra. Tabu Search Techniques: A Tutorial and an Application to Neural
Networks. OR Spektrum, 11:131141, 1989.
[8] M. Dorigo. Optimization, Learning and Natural Algorithms. Phd thesis, Dipartimento
di Elettronica, Politecnico di Milano, Italy, 1992. 140 pp.
[9] M. Dorigo, V. Maniezzo, and A. Colorni. The Ant System: Optimization by a Colony
of Cooperating Agents. IEEE Transactions on Systems, Man, and Cybernetics - Part
B, 26:2941, 1996.
[10] M. Dorigo and T. Sttzle. The Ant Colony Optimization Metaheuristic: Algorithms,
Applications, and Advances. In F. Glover and G. A. Kochenberger, editors, Handbook
of Metaheuristics, chapter 9, pages 251285. Kluwer Academic Publishers, 2003.
[11] K.A. Dowsland. Simulated Annealing. In C.R. Reeves, editor, Modern Heuristic
Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 2, pages 2069. Blackwell Scientific Publications, London, 1993.
[12] T.A. Feo and M.G.C. Resende. Greedy randomized adaptive search procedures. Journal of Global Optimization, 6:109133, 1995.
[13] M. Gendreau, A. Hertz, and G. Laporte. A tabu search heuristic for the vehicle
routing problem. Management Science, 40:12761290, 1994.
[14] F. Glover. Future paths for Integer Programming and links to Artificial Intelligence.
Computers and Operations Research, 5:553549, 1986.
[15] F. Glover. Tabu Search: Part I. ORSA Journal of Computing, 1:190206, 1989.
[16] F. Glover. Tabu Search: Part II. ORSA Journal of Computing, 2:432, 1990.
58
[17] F. Glover. Tabu Search and adaptive memory programming - advances, applications and challenges. In R. Barr, R. Helgason, and J. Kennington, editors, Interfaces
in Computer Sciences and Operations Research, pages 175. Kluwer Academic Publishers, 1996.
[18] F. Glover and S. Hanafi. Tabu Search and Finite Convergence. To appear in Discrete
Applied Mathematics.
[19] F. Glover and M. Laguna. Tabu Search. In C.R. Reeves, editor, Modern Heuristic
Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 3, pages 70150. Blackwell Scientific Publications, London, 1993.
[20] F. Glover and M. Laguna. Tabu Search. Kluwer Academic Publishers, Boston, 1997.
[21] F. Glover and M. Laguna. Scatter Search and Path Relinking: Advances and Applications. In F. Glover and G. A. Kochenberger, editors, Handbook of Metaheuristics,
chapter 1, pages 135. Kluwer Academic Publishers, 2003.
[22] F. Glover, E. Taillard, and D. de Werra. A users guide to tabu search. In P.L.
Hammer, editor, Tabu Search, volume 41 of Annals of Operations Research, pages
328. Baltzer Science Publishers, Amsterdan, 1993.
[23] D.E. Goldberg. Genetic Algorithms in Search, Optimization and Machine Learning.
Addison-Wesley, Berkeley, 1989.
[24] S. Hanafi. On the Convergence of Tabu Search. To appear in Journal of Heuristics.
[25] P. Hansen. The steepest ascent mildest descent heuristic for combinatorial programming. In Congress on Numerical Methods in Combinatorial Optimization, Capri,
Italy, 1986.
[26] P. Hansen and N. Mladenovi. Variable Neighborhood Search: Methods and Recent
Applications. In Proceedings of the Third Metaheuristics International Conference,
pages 275280, Angra dos Reis, Brazil, 1999.
[27] P. Hansen and N. Mlavenovi. Variable Neighborhood Search: Principles and Applications. European Journal of Operational Research, 130:449467, 2001.
[28] A. Hertz. Finding a feasible course schedule using tabu search. Discrete Applied
Mathematics, 35:255270, 1992.
[29] A. Hertz and D. de Werra. The tabu search metaheuristic: how we used it. Annals
of Mathematics and Artificial Intelligence, 1:111121, 1990.
[30] A. Hertz and M. Widmer. Guidelines for the use of meta-heuristics in combinatorial
optimization. European Journal of Operational Research Society, 151:247252, 2003.
[31] S. Kirkpatrick, D.C. Gellat, and M.P. Vecchi. Optimization by Simulated Annealing.
Science, 220:671680, 1983.
[32] A. Linhares and J.R.A. Torreo. Microcanonical Optimization Applied to the Traveling Salesman Problem. International Journal of Modern Physics C, 9:133146,
1998.
59
[33] H.R. Loureno, O. Martin, and T. Sttzle. Iterated Local Search. In F. Glover
and G. Kochenberger, editors, Handbook of Metaheuristics, pages 321353. Kluwer
Academic Publishers, Norwell, MA, 2003.
[34] N. Mladenovi and P. Hansen. Variable Neighborhood Search. Computers and Operations Research, 24:10971100, 1997.
[35] J. V. Moccellin, M. O. Santos, and M. S. Nagano. Um mtodo heurstico Busca
Tabu-Simulated Annealing para Flowshops Permutacionais . In Anais do XXXIII
Simpsio Brasileiro de Pesquisa Operacional, pages 10881095, 2001.
[36] M. Prais and C.C. Ribeiro. Reactive GRASP: An application to a matrix decomposition problem in TDMA traffic assignment. INFORMS Journal on Computing,
1998.
[37] M. Prais and C.C. Ribeiro. Parameter Variation in GRASP Implementations. In
Proceedings of the Third Metaheuristics International Conference, pages 375380,
Angra dos Reis, Brazil, 1999.
[38] M. Prais and C.C. Ribeiro. Variao de Parmetros em Procedimentos GRASP.
Investigacin Operativa, 1999.
[39] C.R. Reeves. Genetic Algorithms. In C.R. Reeves, editor, Modern Heuristic Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 4, pages 151196. Blackwell Scientific Publications, 1993.
[40] C. C. Ribeiro, E. Uchoa, and R. F. Werneck. A hybrid GRASP with perturbations
for the Steiner problem in graphs. INFORMS Journal on Computing, 14:228246,
2002.
[41] C.C. Ribeiro. Metaheuristics and Applications. In Advanced School on Artificial
Intelligence, Estoril, Portugal, 1996.
[42] I. C. M. Rosseti. Estratgias sequenciais e paralelas de GRASP com reconexo por
caminhos para o problema de sntese de redes a 2-caminhos. Tese de doutorado,
Pontifcia Universidade Catlica do Rio de Janeiro, Rio de Janeiro, 2003.
[43] A. Schaefer. Tabu search techniques for large high-school timetabling problems. In
Proceedings of the 30th National Conference on Artificial Intelligence, pages 363368,
1996.
[44] B. Selman, H. Levesque, and D. Mitchell. A new method for solving hard satisfiability
problems. In Proceedings of the 10th National Conference on Artificial Intelligence,
pages 440446, 1992.
[45] J.R.A. Torreo. Inteligncia Computacional. Notas de aula, Universidade Federal
Fluminense, Niteri, 2004.
[46] J.R.A. Torreo and E. Roe. Microcanonical Optimization Applied to Visual Processing. Physics Letters A, 122:377382, 1980.
[47] Christos Voudouris. Guided Local Search for Combinatorial Optimisation Problems.
Phd thesis, Department of Computer Science, University of Essex, 1997.