Vous êtes sur la page 1sur 59

Inteligncia Computacional para Otimizao, Notas de aula, 2011/1

c Departamento de Computao, Universidade Federal de Ouro Preto.


Inteligncia Computacional para Otimizao
Marcone Jamilson Freitas Souza, Departamento de Computao, Instituto de Cincias
Exatas e Biolgicas, Universidade Federal de Ouro Preto, 35400-000 Ouro Preto, MG. Ho-
mepage: http://www.iceb.ufop.br/decom/prof/marcone, E-mail: marcone@iceb.ufop.br
Sumrio
1 Introduo 2
2 Heursticas Construtivas 3
3 Heursticas de Renamento 9
3.1 Mtodo da Descida/Subida (Descent/Uphill Method) . . . . . . . . . . . . . 10
3.2 Mtodo de Primeira Melhora . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Mtodo de Descida/Subida Randmica . . . . . . . . . . . . . . . . . . . . . 13
3.4 Mtodo No Ascendente/Descendente Randmico . . . . . . . . . . . . . . . 14
3.5 Descida em Vizinhana Varivel . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Metaheursticas 15
4.1 Multi-Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2 Simulated Annealing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 Busca Tabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.4 GRASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.5 Busca em Vizinhana Varivel . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.6 Iterated Local Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.7 Guided Local Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.8 Algoritmos Genticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.8.1 Descrio genrica do mtodo . . . . . . . . . . . . . . . . . . . . . . 32
4.8.2 Representao gentica de solues . . . . . . . . . . . . . . . . . . . 33
4.8.3 Operador crossover clssico . . . . . . . . . . . . . . . . . . . . . . . 35
4.8.4 Operador mutao clssico . . . . . . . . . . . . . . . . . . . . . . . 35
4.8.5 Operadores crossover para o PCV . . . . . . . . . . . . . . . . . . . 35
4.9 Scatter Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.10 Colnia de Formigas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.11 Algoritmos Memticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.12 Annealing Microcannico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.13 Otimizao Microcannica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5 Tcnicas especiais de intensicao e diversicao 50
5.1 Reconexao por Caminhos . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2 Princpio da Otimalidade Prxima . . . . . . . . . . . . . . . . . . . . . . . 54
5.3 Relaxao Adaptativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2 Marcone Jamilson Freitas Souza
1 Introduo
Muitos problemas prticos so modelados da seguinte forma: Dado um conjunto S de
variveis discretas s (chamadas solues) e uma funo objetivo f : S R, que associa
cada soluo s S a um valor real f(s), encontre a soluo s

S, dita tima, para


a qual f(s) tem o valor mais favorvel (valor mnimo, no caso de o problema ter como
objetivo a minimizao de f, ou valor mximo, no caso de o problema ter como objetivo
a maximizao de f.
Grande parte desses problemas so combinatrios, sendo classicados na literatura
como NP-difceis, e assim, ainda no existem algoritmos que os resolvam em tempo poli-
nomial.
Para citar um exemplo, seja o conhecido Problema do Caixeiro Viajante (PCV). O
PCV descrito por um conjunto de n cidades e uma matriz de distncia entre elas, tendo
o seguinte objetivo: o caixeiro viajante deve sair de uma cidade, dita cidade origem, visitar
cada uma das n 1 cidades restantes apenas uma nica vez e retornar cidade origem
percorrendo a menor distncia possvel. Em outras palavras, deve ser encontrada uma rota
fechada (ciclo hamiltoniano) de comprimento mnimo que passe exatamente uma nica vez
por cada cidade.
Para mostrar a diculdade de soluo do PCV, assuma que a distncia de uma cidade
i outra j seja simtrica, isto , que d
ij
= d
ji
. Assim, o nmero total de rotas possveis
(n 1)!/2. Para se ter uma idia da magnitude dos tempos envolvidos na resoluo do
PCV por enumerao completa de todas as possveis solues, para n = 20 tem-se 610
16
rotas possveis. Assim, um computador que avalia uma rota em cerca de 10
8
segundos,
gastaria cerca de 19 anos para encontrar a melhor rota! Mesmo considerando os rpidos
avanos tecnolgicos dos computadores, uma enumerao completa de todas essas rotas
inconcebvel para valores elevados de n. Nos problemas da classe NP-difcil, no possvel
garantir que a rota de custo mnimo seja encontrada em tempo polinomial. Assim, no pior
caso, todas as possveis solues devem ser analisadas.
possvel dar uma certa inteligncia a um mtodo de enumerao, utilizando por
exemplo as tcnicas branch-and-bound ou branch-and-cut, de forma a reduzir o nmero de
solues a analisar no espao de solues. Com isto, pode ser possvel resolver problemas
de dimenses mais elevadas. Entretanto, dada a natureza combinatria do problema, pode
ser que, no pior caso, todas as solues tenham que ser analisadas. Este fato impede o uso
exclusivo destes mtodos, dito exatos, dado o tempo proibitivo de se encontrar a soluo
tima.
Portanto, em problemas desta natureza, o uso de mtodos exatos se torna bastante
restrito. Por outro lado, na prtica, em geral, suciente encontrar uma boa soluo
para o problema, ao invs do timo global, o qual, para esta classe de problemas, somente
pode ser encontrado aps um considervel esforo computacional.
Este o motivo pelo qual os pesquisadores tm concentrado esforos na utilizao de
heursticas para solucionar problemas deste nvel de complexidade. Denimos heurstica
como sendo uma tcnica inspirada em processos intuitivos que procura uma boa soluo
a um custo computacional aceitvel, sem, no entanto, estar capacitada a garantir sua
otimalidade, bem como garantir quo prximo est da soluo tima.
O desao produzir, em tempo reduzido, solues to prximas quanto possvel da
soluo tima. Muitos esforos tm sido feitos nesta direo e heursticas muito ecien-
tes foram desenvolvidas para diversos problemas. Entretanto, a maioria das heursticas
desenvolvidas muito especca para um problema particular, no sendo ecientes (ou
mesmo aplicveis) na resoluo de uma classe mais ampla de problemas.
Somente a partir da dcada de 1980 intensicaram-se os estudos no sentido de se
Inteligncia Computacional para Otimizao 3
desenvolver procedimentos heursticos com uma certa estrutura terica e com carter mais
geral, sem prejudicar a principal caracterstica destes, que a exibilidade.
Esta meta tornou-se mais realista a partir da reunio de conceitos das reas de Otimiza-
o e Inteligncia Articial, viabilizando a construo das chamadas melhores estratgias
ou dos mtodos inteligentemente exveis, comumemente conhecidos como metaheurs-
ticas.
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 exibilidade 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 natu-
rais, 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 exvel para tornar o processo de busca mais ecaz.
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 renamento, destinadas
melhoria de uma soluo. Na seo 4 so apresentadas as principais metaheursticas
referenciadas na literatura e na ltima seo, tcnicas de intensicao e diversicao.
2 Heursticas Construtivas
Uma heurstica construtiva tem por objetivo construir uma soluo, elemento por ele-
mento. 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 gura, t
melhor
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 ,= ) faa
4 g(t
melhor
) = melhorg(t) [ t C;
5 s s t
melhor
;
6 Atualize o conjunto C de elementos candidatos;
7 m-enquanto;
8 Retorne s;
m ConstrucaoGulosa;
Figura 1: Heurstica de construo gulosa de uma soluo inicial
4 Marcone Jamilson Freitas Souza
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 w
j
e um
valor de retorno (benefcio) p
j
. 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) 1 2 3 4 5
Peso (w
j
) 4 5 7 9 6
Benefcio (p
j
) 2 2 3 4 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) 5 4 3 1 2
Peso (w
j
) 6 9 7 4 5
Benefcio (p
j
) 4 4 3 2 2
Representemos uma soluo s por um vetor binrio de n posies.
Passo 1 : Adicionemos, primeiramente, o objeto 5, que traz o maior benefcio p
j
, isto ,
o mais valioso dentre todos os objetos
s = (00001)
t
f(s) = 4
Peso corrente da mochila = 6 < b = 23
Passo 2 : Adicionemos, agora, o objeto 4, que dentre os objetos remanescentes ainda no
avaliados tem o maior valor de retorno p
j
s = (00011)
t
f(s) = 8
Peso corrente da mochila = 15 < b = 23
Passo 3 : Seguindo a estrutura de construo, adicionemos, agora, o objeto 3, para o
qual p
3
o maior dentre os valores de retorno p
3
, p
2
e p
1
s = (00111)
t
f(s) = 11
Peso corrente da mochila = 22 < b = 23
Passo 4 : O objeto a ser alocado agora seria o primeiro. No entanto, esta alocao
faria superar a capacidade da mochila. Neste caso, devemos tentar alocar o prximo
objeto com o maior valor de p
j
ainda no analisado, que o objeto 2. Como tambm
a alocao deste objeto faria superar a capacidade da mochila e no h mais objetos
candidatos, conclumos que a soluo anterior a soluo nal, isto : s

= (00111)
t
com f(s

) = 11.
Uma outra forma muito comum de se gerar uma soluo inicial escolher os elementos
candidatos aleatoriamente. Isto , a cada passo, o elemento a ser inserido na soluo
Inteligncia Computacional para Otimizao 5
aleatoriamente selecionado dentre o conjunto de elementos candidatos ainda no selecio-
nados. A grande vantagem desta metodologia reside na simplicidade de implementao.
Segundo testes empricos, a desvantagem a baixa qualidade em mdia da soluo nal
produzida, que em geral requer um maior esforo computacional na fase de renamento.
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 ,= ) faa
4 Escolha aleatoriamente t
escolhido
C;
5 s s t
escolhido
;
6 Atualize o conjunto C de elementos candidatos;
7 m-enquanto;
8 Retorne s;
m 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
(a) Heurstica do Vizinho Mais Prximo:
Nesta heurstica, parte-se da cidade origem e adiciona-se a cada passo a cidade k
ainda no visitada cuja distncia ltima cidade visitada a menor possvel. O
procedimento de construo termina quando todas as cidades forem visitadas, situao
na qual feita a ligao entre a ltima cidade visitada e a cidade origem.
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).
ii) Passo 2: Adicione a cidade 4 rota, j que sua distncia cidade 3 a menor
dentre as cidades ainda no visitadas (no caso, as cidades 2, 4, 5 e 6).
iii) Passo 3: Adicione a cidade 5 rota, j que sua distncia cidade 4 a menor
dentre todas as cidades ainda no visitadas (no caso, as cidades 2, 5 e 6)
iv) Passo 4: Adicione a cidade 6 rota, j que sua distncia cidade 5 a menor
dentre todas as cidades ainda no visitadas (no caso, as cidades 2 e 6)
6 Marcone Jamilson Freitas Souza
v) Passo 5: Adicione a cidade 2 rota, j que esta a nica cidade ainda no visitada
vi) Passo 6: Faa a ligao da cidade 2 (ltima cidade visitada) cidade 1 (cidade
origem)
Ao nal destes 6 passos, teremos produzido a soluo s = (1 3 4 5 6 2). Para esta
soluo, a distncia total percorrida :
dist = d
13
+d
34
+d
45
+d
56
+d
62
+d
21
= 1 + 3 + 2 + 2 + 2 + 2 = 12.
Complexidade da Heurstica do Vizinho Mais Prximo:
Iterao # operaes Observaes
1 n 1 H n 1 ligaes para serem analisadas
2 n 2 H n 2 ligaes para serem analisadas

n 1 1 H apenas uma cidade ainda no visitada
Total 1 + 2 + + n 1 = n(n 1)/2 operaes
A soma anterior uma Progresso Aritmtica cujo primeiro elemento 1, ltimo
elemento n1, a razo igual a 1 e o nmero de termos n1. A soma dos termos
vale S =
_
a
1
+a
nelem
2
_
nelem =
_
1+(n1)
2
_
(n 1) = n(n 1)/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 d
61
= 1 < d
34
= 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 d
26
= 2 < d
34
= 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 d
34
= 3 < d
52
= 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).
Inteligncia Computacional para Otimizao 7
v) Passo 5: A nica cidade ainda no visitada a cidade 5. Ela dista 7 unidades
de um extremo da rota (cidade 2) e 2 unidades do outro extremo (cidade 4).
Logo, a cidade 5 deve ser conectada cidade 4, isto , a rota corrente passa a ser:
s = (2 6 1 3 4 5).
vi) Passo 6: Como todas as cidades j foram visitadas, resta agora somente conectar
as duas extremidades (cidades 5 e 2) para formar um ciclo hamiltoniano.
Ao nal destes 6 passos, teremos produzido a soluo s = (2 6 1 3 4 5). Para esta
soluo, a distncia total percorrida :
dist = d
26
+d
61
+d
13
+d
34
+d
45
+d
52
= 2 + 1 + 1 + 3 + 2 + 7 = 16.
(c) Heurstica da Insero Mais Barata:
Nesta heurstica, parte-se de uma subrota inicial envolvendo trs cidades e, a cada
passo, adiciona-se uma cidade k ainda no visitada entre as cidades i e j da subrota
cujo custo de insero s
k
ij
dado pela frmula abaixo seja a menor possvel.
s
k
ij
= d
ik
+d
kj
d
ij
As guras a seguir ilustram a insero da cidade k entre as cidades i e j.
(a) Antes da insero (b) Depois da insero
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 ci-
dade 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, d
21
+ d
32
= 2 + 5 = 7.
Ento, a cidade 2 a escolhida e deve ser conectada s cidades 3 e 2, isto , a
8 Marcone Jamilson Freitas Souza
subrota corrente : s = (1 3 2), com a cidade 2 ligada cidade 1. Com
os passos 2 e 3 encerra-se a construo de uma subrota inicial envolvendo trs
cidades. A distncia total percorrida : d(s) = d
13
+d
32
+d
21
= 1 + 5 + 2 = 8.
iii) Passo 3: Das cidades ainda no visitadas (4, 5 e 6), calculemos o custo de insero
entre todas as cidades i e j da subrota. A tabela a seguir mostra os custos de
insero.
i k j s
k
ij
= d
ik
+d
kj
d
ij
1 4 3 s
4
13
= 4 + 3 - 1 = 6
1 5 3 s
5
13
= 9 + 8 - 1 = 16
1 6 3 s
6
13
= 1 + 6 - 1 = 6
3 4 2 s
4
32
= 3 + 9 - 5 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 7
3 6 2 s
6
32
= 6 + 2 - 5 = 3
2 4 1 s
4
21
= 9 + 4 - 2 = 11
2 5 1 s
5
21
= 7 + 9 - 2 = 14
2 6 1 s
6
21
= 2 + 1 - 2 = 1

Como o menor custo de insero s


6
21
, 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
+s
6
21
= 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 k j s
k
ij
= d
ik
+d
kj
d
ij
1 4 3 s
4
13
= 4 + 3 - 1 = 6

1 5 3 s
5
13
= 9 + 8 - 1 = 16
3 4 2 s
4
32
= 3 + 9 - 5 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 7
2 4 6 s
4
26
= 9 + 5 - 2 = 12
2 5 6 s
5
26
= 7 + 2 - 2 = 7
6 4 1 s
4
61
= 5 + 4 - 1 = 8
6 5 1 s
5
61
= 2 + 9 - 1 = 10
Como o menor custo de insero s
4
13
, 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
+s
4
13
= 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 k j s
k
ij
= d
ik
+d
kj
d
ij
1 5 4 s
5
14
= 9 + 2 - 4 = 7

4 5 3 s
5
43
= 2 + 8 - 3 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 10
2 5 6 s
5
26
= 7 + 2 - 2 = 7
6 5 1 s
5
61
= 2 + 9 - 1 = 10
Como o menor custo de insero s
5
14
, 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
+s
5
14
= 15 + 7 = 22.
Inteligncia Computacional para Otimizao 9
3 Heursticas de Renamento
As heursticas de renamento em problemas de otimizao, tambm chamadas de tcnicas
de busca local, constituem uma famlia de tcnicas baseadas na noo de vizinhana. Mais
especicamente, seja S o espao de pesquisa de um problema de otimizao e f a funo
objetivo a minimizar. A funo N, a qual depende da estrutura do problema tratado,
associa a cada soluo s S, sua vizinhana N(S) S. Cada soluo s

N(s)
chamada de vizinho de s. Denomina-se movimento a modicao m que transforma uma
soluo s em outra, s

, que esteja em sua vizinhana. Representa-se esta operao por


s

s m.
Em linhas gerais, esta classe de heursticas parte de uma soluo inicial qualquer (a
qual pode ser obtida por uma heurstica construtiva ou ento gerada aleatoriamente) e
caminha, a cada iterao, de vizinho para vizinho de acordo com a denio de vizinhana
adotada.
Conforme [30], um mtodo de busca local pode ser visto como um procedimento que
percorre um caminho em um grafo no-orientado G = (S, E), onde S representa o conjunto
de solues s do problema e E o conjunto de arestas (s, s

), com s

N(s).
A denio de vizinhana crucial em uma heurstica de renamento. De uma soluo
s do espao de solues deve ser sempre possvel atingir qualquer outra soluo em um
nmero nito de passos, utilizando um determinado tipo ou tipos de movimentos. Por
exemplo, considere no problema da mochila as solues s
(1)
= (01001)
t
e s
(2)
= (11010)
t
do espao de solues. Com o movimento m = {trocar o valor de um bit} possvel
navegar no espao de solues do problema de s
(1)
a s
(2)
. De fato, com esse movimento
m podemos percorrer o seguinte caminho: s
(1)
= (01001)
t
(11001)
t
(11011)
t

(11010)
t
= s
(2)
. No entanto, se denssimos o movimento m como sendo a troca de
dois bits simultaneamente, jamais conseguiramos de s
(1)
chegar a s
(2)
. Desta forma, a
explorao do espao de solues caria prejudicada e, eventualmente, a soluo tima
poderia no ser alcanada.
Em muitos problemas combinatrios tambm difcil at mesmo encontrar uma soluo
vivel. Nessas situaes, pode ser uma m idia caminhar apenas no espao das solues
viveis do problema considerado. Para tais problemas, o espao de busca pode incluir solu-
es inviveis, obtidas a partir do relaxamento de algumas restries do problema original.
Para tanto, basta acrescentar funo de avaliao componentes que penalizam violaes
s restries. Um exemplo tpico de problemas desta natureza o problema de programa-
o de horrios de cursos universitrios (course timetabling). A restrio principal deste
problema requer que as aulas dadas pelo mesmo professor para turmas distintas no se
sobreponham, isto , que no sejam realizadas no mesmo horrio. Considerando como
movimento m a mudana das aulas de um curso de um horrio para outro, dicilmente
geraramos quadros de horrios sem situaes de sobreposio. Relaxando-se estas restri-
es e penalizando-as na funo de avaliao, torna-se muito mais eciente a explorao
do espao de busca [28].
Exempliquemos, agora, como gerar diferentes estruturas de vizinhana. Para tanto,
consideremos o Problema do Caixeiro Viajante, para o qual representamos uma soluo
s por um vetor de n posies, sendo que em cada posio i tem-se a cidade s
i
. Com o
movimento m de troca de posio entre duas cidades denimos a estrutura de vizinhana
N
(T)
. Assim s = (s
1
s
2
s
3
s
n
)
t
tem como vizinhos em N
(T)
(s) as seguintes solues:
s
(1)
= (s
2
s
1
s
3
s
n
)
t
, s
(2)
= (s
3
s
2
s
1
s
n
)
t
, , s
(n1)
= (s
n
s
2
s
3
s
1
)
t
,
s
(n)
= (s
1
s
3
s
2
s
n
)
t
, , s
(n(n1)/2)
= (s
1
s
2
s
3
s
n
s
n1
)
t
. Por outro lado, con-
siderando como movimento m a realocao de uma cidade de uma posio na seqncia de
visita para outra, denimos a estrutura de vizinhana N
(R)
. Nesta estrutura, so vizinhos
10 Marcone Jamilson Freitas Souza
de s = (s
1
s
2
s
3
s
n1
s
n
)
t
as seguintes solues: s
(1)
= (s
2
s
1
s
3
s
n1
s
n
)
t
,
s
(2)
= (s
2
s
3
s
1
s
n1
s
n
)
t
, , s
(n2)
= (s
2
s
3
s
n1
s
1
s
n
)
t
, s
(n1)
=
(s
2
s
3
s
n1
s
n
s
1
)
t
, s
(n)
= (s
1
s
3
s
2
s
n1
s
n
)
t
, s
(n+1)
= (s
1
s
3
s
4
s
2
s
n1
s
n
)
t
,
, s
(2n4)
= (s
1
s
3
s
4
s
n1
s
2
s
n
)
t
, s
(2n3)
= (s
1
s
3
s
4
s
n1
s
n
s
2
)
t
, ,
s
(2n5)
= (s
1
s
3
s
2
s
4
s
n1
s
n
)
t
, , s
(n2)
2
(n1)
= (s
1
s
2
s
3
s
4
s
n
s
n1
)
t
.
Poderamos, tambm, denir como vizinhana de uma soluo s o conjunto de vizinhos
gerados tanto por movimentos de troca quanto por movimentos de realocao, isto ,
N(s) = N
(T)
(s) N
(R)
(s). H outros movimentos mais elaborados, tal como o movi-
mento Or, que consiste em realocar um bloco contguo de cidades em outra posio da
seqncia. Por exemplo, considerando a soluo s = (4 3 1 2)
t
e blocos de tamanho 2,
teramos os seguintes vizinhos para s: s

1
= (1 4 3 2)
t
, s

2
= (4 2 3 1)
t
, s

3
= (4 1 2 3)
t
.
Neste exemplo, o primeiro vizinho gerado pela insero do bloco (4 3) entre as cidades
1 e 2, o segundo vizinho, pela insero do bloco (3 1) entre as cidades 2 e 4 e, nalmente,
o terceiro vizinho, pela insero do bloco (1 2) entre as cidades 4 e 3.
Nas sees 3.1 a 3.4 apresentamos heursticas clssicas de renamento, enquanto na
seo 3.5 apresentada uma heurstica de renamento mais sosticada, que explora o
espao de solues do problema fazendo trocas sistemticas de vizinhanas.
3.1 Mtodo da Descida/Subida (Descent/Uphill Method)
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 = s

N(s) [ f(s

) < f(s);
2 enquanto ([V [ > 0) faa
3 Selecione s

V , onde s

= arg min{f(s

) [ s

V };
4 s s

;
5 V = s

N(s) [ f(s

) < f(s);
6 m-enquanto;
7 Retorne s;
m 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 s

que
diferem de s pelo valor de um bit. Formalmente, representamos N(s) = s

: s

s m,
onde m signica a troca do valor de um bit. necessrio, agora, denir uma funo
de avaliao para guiar a busca no espao de solues do problema. Considerando que
se deseja maximizar o valor de retorno trazido pela utilizao de cada item, h duas
possibilidades para a escolha dessa funo.
Inteligncia Computacional para Otimizao 11
A primeira, considerar a explorao apenas no espao de solues viveis. Neste caso,
a funo de avaliao coincide com a prpria funo objetivo do problema, isto :
f(s) =
n

j=1
p
j
s
j
(31)
com s satisfazendo condio de que
n

j=1
w
j
s
j
b.
Outra possibilidade permitir a gerao de solues inviveis. Neste caso, uma funo
de avaliao apropriada seria:
f(s) =
n

j=1
p
j
s
j
max0,
n

j=1
w
j
s
j
b (32)
sendo uma penalidade, por exemplo, =
n

j=1
p
j
= 15.
Observe que o objetivo da segunda parcela desta ltima funo de avaliao penalizar
a colocao na mochila de objetos que ultrapassam sua capacidade. Como a funo de
avaliao f deve ser maximizada, o sinal desta segunda parcela negativo de forma a no
incentivar a realizao de movimentos que gerem solues inviveis. O valor de deve ser
sucientemente grande para atender a este objetivo.
Apliquemos esta heurstica instncia do problema dado, considerando a possibilidade
de gerao de solues infactveis, isto:
Passo 0 : Seja uma soluo inicial qualquer, por exemplo:
s = (01010)
t
f(s) = 6
Peso corrente da mochila = 14
Passo 1 : Devemos, agora, analisar todos os vizinhos de s e calcular a funo de avaliao
deles usando a funo de avaliao (32).
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s

)
(11010)
t
18 8 8
(00010)
t
9 4 4
(01110)
t
21 9 9
(01000)
t
5 2 2
(01011)
t
20 10 10
Melhor vizinho: s

= (01011)
t
f(s

) = 10
Como s

melhor que s, pois f(s

) > f(s), ento s s

, isto , a nova soluo


corrente passa a ser:
s = (01011)
t
Passo 2 : Determinemos, agora, o melhor vizinho de s = (01011)
t
:
12 Marcone Jamilson Freitas Souza
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s

)
(11011)
t
24 12 -3
(00011)
t
15 8 8
(01111)
t
27 13 -47
(01001)
t
11 6 6
(01010)
t
14 6 6
Melhor vizinho: s

= (00011)
t
f(s

) = 8
Como f(s

) pior que f(s), pois f(s

) < f(s), ento PARE. A soluo anterior um


timo local, isto , o mtodo da subida retorna s

= (01011)
t
, com f(s

) = 10 como
soluo nal.
No exemplo anterior, caso fosse utilizada a funo de avaliao (31), as solues an-
teriores que ultrapassaram a capacidade da mochila, isto , (11011)
t
) e (01111)
t
, sequer
seriam avaliadas!
importante observar que diferentes solues iniciais conduzem, na maioria das vezes,
a diferentes solues nais. 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.
E s p a o d e s o l u e s
s
s*
c
u
s
t
o
s*
s*
s
s
Figura 4: Representao esquemtica do funcionamento do Mtodo da Descida
Uma outra funo de avaliao que poderia ser considerada em substituio da fr-
mula (32) a seguinte:
f(s) =
n

j=1
p
j
s
j
f
1
(s) (33)
sendo f
1
(s) =
_

_
1 se
n

j=1
w
j
s
j
b > 0
0 se
n

j=1
w
j
s
j
b 0
Inteligncia Computacional para Otimizao 13
e uma penalidade, denida como antes, por exemplo, =
n

j=1
p
j
= 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 dicul-
tar a explorao do espao de solues, pois conduz a regies planas, ditas plats, regies
nas quais as heursticas tm diculdade 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 (32).
3.2 Mtodo de Primeira Melhora
O mtodo de descida/subida requer a explorao de toda a vizinhana. Um mtodo al-
ternativo, que evita esta pesquisa exaustiva e muito utilizado na literatura o Mtodo de
Primeira Melhora (First Improvement Method). Nesta variante, interrompe-se a explora-
o da vizinhana quando um vizinho melhor encontrado. Desta forma, apenas no pior
caso, toda a vizinhana explorada. Entretanto, tal como no mtodo da descida/subida,
este mtodo ca preso no primeiro timo local encontrado.
Neste mtodo, desejvel que a ordem de explorao das solues vizinhas seja al-
terada a cada passo. Do contrrio, privilegia-se apenas um caminho determinstico no
espao de solues. Por exemplo, em um problema de programao de tripulaes, ima-
gine 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 m-
todo 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 Mtodo de Descida/Subida Randmica
Como dito anteriormente, o Mtodo de Descida/Subida requer a explorao de toda a
vizinhana. Outro mtodo alternativo, que evita esta pesquisa exaustiva o Mtodo de
Descida/Subida Randmica (Random Descent/Uphill Method). Ele consiste em analisar
um vizinho qualquer e o aceitar somente se ele for estritamente melhor que a soluo
corrente; no o sendo, a soluo corrente permanece inalterada e outro vizinho gerado.
O procedimento interrompido aps um nmero xo de iteraes sem melhora no valor
da melhor soluo obtida at ento.
Como neste mtodo no feita a explorao de toda a vizinhana da soluo corrente,
no h garantia de que a soluo nal seja um timo local.
Na Figura 5 mostra-se o pseudocdigo do Mtodo de Descida Randmica aplicado
ao renamento de uma soluo s em um problema de minimizao de uma funo f(.),
utilizando uma estrutura de vizinhana N(.). Nesta gura, IterMax representa o nmero
mximo de iteraes sem melhora no valor da funo de avaliao.
14 Marcone Jamilson Freitas Souza
procedimento DescidaRandomica(f(.), N(.), IterMax, s);
1 Iter 0; {Contador de iteraes sem melhora }
2 enquanto (Iter < IterMax) faa
3 Iter Iter + 1;
4 Selecione aleatoriamente s

N(s);
5 se (f(s

) < f(s)) ento


6 Iter 0;
7 s s

;
8 m-se;
9 m-enquanto;
10 Retorne s;
m DescidaRandomica;
Figura 5: Mtodo de Descida Randmica
3.4 Mtodo No Ascendente/Descendente Randmico
O mtodo no ascendente randmico (RNA) (respectivamente, Mtodo No Descendente
Randmico - RND) uma variante do mtodo de descida randmica (respectivamente,
mtodo da subida), diferindo dele por aceitar o vizinho gerado aleatoriamente se ele for
melhor ou igual soluo corrente. Este mtodo pra, tambm, aps um nmero xo de
iteraes sem melhora no valor da melhor soluo produzida.
Por este mtodo possvel navegar pelo espao de busca por movimentos laterais [43].
Assim, ele tem condies de percorrer caminhos de descida/subida que passam por regies
planas. Ou seja, se a busca chega em um regio dessas, o mtodo tem condies de
mover-se nela e sair atravs de uma soluo diferente daquela que a ela chegou.
O mtodo RNA/RND , portanto, um procedimento que explora o espao de solues
combinando movimentos de descida/subida com movimentos laterais. Tal como no mtodo
de descida randmica, no h garantia de que a soluo nal seja um timo local.
3.5 Descida em Vizinhana Varivel
O Mtodo de Descida em Vizinhana Varivel (Variable Neighborhood Descent, VND),
proposto por Nenad Mladenovi e Pierre Hansen [33], um mtodo de renamento que
consiste em explorar o espao de solues por meio de trocas sistemticas de estruturas
de vizinhana, aceitando somente solues de melhora da soluo corrente e retornando
primeira estrutura quando uma soluo melhor encontrada.
O pseudocdigo deste mtodo, em que se considera o renamento de uma soluo s
utilizando uma funo de avaliao f, a ser minimizada, e um conjunto de r diferentes
vizinhanas N = N
(1)
, N
(2)
, , N
(r)
, apresentado pela Figura 6.
Dependendo do problema abordado, a busca pelo melhor vizinho (linha 4 da Figura
6) pode ser cara computacionalmente. Nesta situao comum fazer a busca pela pri-
meira soluo de melhora (vide o mtodo da seo 3.2, pgina 13). Outra alternativa
considerar a explorao apenas em um certo percentual da vizinhana, isto , procurar
o melhor vizinho somente em PercViz % de uma vizinhana V N
(k)
(s), sendo PercViz
um parmetro do mtodo. Uma terceira alternativa, bastante utilizada nestas situaes,
aplicar o Mtodo de Descida Randmica (vide seo 3.3, pgina 13), para cada vizinhana
explorada.
Segundo os autores, o mtodo VND baseia-se em trs princpios bsicos:
Inteligncia Computacional para Otimizao 15
procedimento VND(f(.),N(.),r,s)
1 Seja r o nmero de estruturas diferentes de vizinhana;
2 k 1; {Tipo de estrutura de vizinhana corrente}
3 enquanto (k r) faa
4 Encontre o melhor vizinho s

N
(k)
(s);
5 se (f(s

) < f(s))
6 ento
7 s s

;
8 k 1;
9 seno
10 k k + 1;
11 m-se;
12 m-enquanto;
13 Retorne s;
m VND;
Figura 6: Algoritmo VND
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 vizi-
nhana;
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.
4 Metaheursticas
As metaheursticas so procedimentos destinados a encontrar uma boa soluo, eventual-
mente a tima, consistindo na aplicao, em cada passo, de uma heurstica subordinada,
a qual tem que ser modelada para cada problema especco [40].
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.
16 Marcone Jamilson Freitas Souza
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 melho-
res. 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.
4.1 Multi-Start
A metaheurstica Multi-Start consiste em fazer amostragens do espao de solues, apli-
cando a cada soluo gerada um procedimento de renamento. As amostras so obtidas
por meio da gerao de solues aleatrias. Com este procedimento, h uma diversica-
o 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 MultiStart(f(.), N(.), CriterioParada, 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 m-se;
9 m-enquanto;
10 s s

;
11 Retorne s;
m MultiStart;
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.
Inteligncia Computacional para Otimizao 17
4.2 Simulated Annealing
Trata-se de uma tcnica de busca local probabilstica, proposta originalmente por Kirkpa-
trick 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 procedi-
mento principal consiste em um loop que gera aleatoriamente, em cada iterao, um nico
vizinho s

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(s

) 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 T
0
. Aps um nmero xo
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 T
k
T
k1
, sendo 0 < < 1. Com esse pro-
cedimento, 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
que diminui a probabilidade de se aceitar movimentos de piora
_
T 0 = e
/T
0
_
A Figura 8 mostra a inuncia da variao da temperatura na funo de probabilidade.
Para melhor entendimento desta funo, considera-se que a variao de energia a
mesma durante toda a busca, no caso, xado em uma unidade. Observe que no incio
do processo, quando a temperatura elevada, a funo de probabilidade assume valores
prximos unidade, enquanto que no nal do processo, quando a temperatura se aproxima
de zero, o valor da funo de probabilidade tambm se aproxima de zero.
0 10 20 30 40 50
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0

Temperatura T
exp(1/T)
Figura 8: Comportamento da funo de probabilidade
O procedimento pra quando a temperatura chega a um valor prximo de zero e ne-
nhuma soluo de piora da soluo corrente mais aceita, isto , quando o sistema est
18 Marcone Jamilson Freitas Souza
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 T
0
.
Apresenta-se, pela Figura 9, o algoritmo Simulated Annealing bsico aplicado a um
problema de minimizao.
procedimento SA(f(.), N(.), , SAmax, T
0
, s)
1 s

s; {Melhor soluo obtida at ento}


2 IterT 0; {Nmero de iteraes na temperatura T}
3 T T
0
; {Temperatura corrente}
4 enquanto (T > 0) faa
5 enquanto (IterT < SAmax) faa
6 IterT IterT + 1;
7 Gere um vizinho qualquer s

N(s);
8 = f(s

) f(s);
9 se ( < 0)
10 ento
11 s s

;
12 se (f(s

) < f(s

)) ento s

;
13 seno
14 Tome x [0, 1];
15 se (x < e
/T
) ento s s

;
16 m-se;
17 m-enquanto;
18 T T;
19 IterT 0;
20 m-enquanto;
21 s s

;
22 Retorne s;
m SA;
Figura 9: Algoritmo Simulated Annealing
Observamos que no caso de o problema ser de maximizao, as seguintes modicaes
devem ser feitas na Figura 9: Na linha 9, considerar que > 0; na linha 12, substituir
pelo teste (f(s

) > f(s

)) e, nalmente, 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 T
k
, deve ser calculada com base na expresso (44):
T
k
=
c
ln(1 +k)
(44)
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 (45):
Inteligncia Computacional para Otimizao 19
T
k
=
T
k1
1 +
_
T
k1
k 1 (45)
em que T
k
representa a temperatura na iterao k do mtodo, isto , na k-sima vez em
que h alterao no valor da temperatura e uma constante tal que 0 < < 1. Valores
de prximos a zero indicam resfriamento muito lento.
Outra alternativa, usada em [34], consiste em fazer o resfriamento por meio da expres-
so:
T
k
=
_
_
_
T
k1
se k = 1
T
k1
1 +T
k1
se k 2
(46)
sendo =
T
0
T
k1
(k1)T
0
T
k1
, T
0
a temperatura inicial, T
k
a temperatura na k-sima iterao
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 tur-
mas, 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 renamento 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 gura, a
taxa de aumento da temperatura ( > 1), a taxa mnima de aceitao de solues
vizinhas (por exemplo, = 0.95) e T
0
uma temperatura de partida para o mtodo, por
exemplo, T
0
= 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 Marcone Jamilson Freitas Souza
procedimento TemperaturaInicial(f(.), N(.), , , SAmax, T
0
, s)
1 T T
0
; {Temperatura corrente}
2 Continua TRUE;
3 enquanto (Continua) faa
4 Aceitos 0; {Nmero de vizinhos aceitos na temperatura T}
5 para IterT = 1 at SAmax faa
6 Gere um vizinho qualquer s

N(s);
7 = f(s

) f(s);
8 se ( < 0)
9 ento
10 Aceitos Aceitos + 1;
11 seno
12 Tome x [0, 1];
13 se (x < e
/T
) ento Aceitos Aceitos + 1;
14 m-se;
15 m-para;
16 se (Aceitos SAmax)
17 ento Continua FALSE;
18 seno T T;
19 m-se;
20 m-enquanto;
21 Retorne T;
m TemperaturaInicial;
Figura 10: Determinao autoadaptativa da temperatura inicial
Em teoria, a temperatura nal deve ser zero. Entretanto, na prtica suciente chegar
a uma temperatura prxima de zero, devido preciso limitada da implementao compu-
tacional [44]. Um valor tpico tomar T
f
= 0, 001. Alternativamente, pode-se identicar
o congelamento do sistema quando a taxa de aceitao de movimentos car abaixo de um
valor predeterminado.
Observa-se, nalmente, como regra geral, que os parmetros mais adequados para uma
dada aplicao do algoritmo s podem ser estabelecidos por experimentao [44].
Inteligncia Computacional para Otimizao 21
4.3 Busca Tabu
Descrevemos, a seguir, de forma resumida, os princpios bsicos da Busca Tabu - BT
(Tabu Search), tcnica originada nos trabalhos independentes de Fred Glover [14] e Pierre
Hansen [25]. Referenciamos a [14, 15, 16, 22, 19, 20, 7, 29] para um melhor detalhamento
do mtodo.
A Busca Tabu um mtodo de busca local que consiste em explorar o espao de
solues movendo-se de uma soluo para outra que seja seu melhor vizinho. Esta estra-
tgia, juntamente com uma estrutura de memria para armazenar as solues geradas (ou
caractersticas destas) permite que a busca no que presa em um timo local.
Mais especicamente, comeando com uma soluo inicial s
0
, um algoritmo BT explora,
a cada iterao, um subconjunto V da vizinhana N(s) da soluo corrente s. O membro
s

de V com melhor valor nesta regio segundo a funo f(.) torna-se a nova soluo
corrente mesmo que s

seja pior que s, isto , que f(s

) > f(s) para um problema de


minimizao.
O critrio de escolha do melhor vizinho utilizado para escapar de um timo local.
Esta estratgia, entretanto, pode fazer com que o algoritmo cicle, isto , que retorne a
uma mesma sequncia de soluo j geradas anteriormente.
De forma a evitar que isto ocorra, existe uma lista tabu T, a qual uma lista de
movimentos proibidos. A lista tabu clssica contm os movimentos reversos aos ltimos
[T[ movimentos realizados (onde [T[ um parmetro do mtodo) e funciona como uma la
de tamanho xo, isto , quando um novo movimento adicionado lista, o mais antigo sai.
Assim, na explorao do subconjunto V da vizinhana N(s) da soluo corrente s, cam
excludos da busca os vizinhos s

que so obtidos de s por movimentos m que constam na


lista tabu.
A lista tabu se, por um lado, reduz o risco de ciclagem (uma vez que ela garante
o no retorno, por [T[ iteraes, a uma soluo j visitada anteriormente); por outro,
tambm pode proibir movimentos para solues que ainda no foram visitadas [7]. Assim,
existe tambm uma funo de aspirao, que um mecanismo que retira, sob certas
circunstncias, o status tabu de um movimento. Mais precisamente, para cada possvel
valor v da funo objetivo existe um nvel de aspirao A(v): uma soluo s

em V pode
ser gerada se f(s

) < A(f(s)), mesmo que o movimento m esteja na lista tabu. A funo de


aspirao A tal que, para cada valor v da funo objetivo, retorna outro valor A(v), que
representa o valor que o algoritmo aspira ao chegar de v. Um exemplo simples de aplicao
desta idia considerar A(f(s)) = f(s

) onde s

a melhor soluo encontrada at ento.


Neste caso, aceita-se um movimento tabu somente se ele conduzir a um vizinho melhor
que s

. Esta a chamada aspirao por objetivo. Esse critrio se fundamenta no fato


de que solues melhores que a soluo s

corrente, ainda que geradas por movimentos


tabu, no foram visitadas anteriormente, evidenciando que a lista de movimentos tabu
pode impedir no somente o retorno a uma soluo j gerada anteriormente mas tambm
a outras solues ainda no geradas.
Duas regras so normalmente utilizadas de forma a interromper o procedimento. Pela
primeira, pra-se quando atingido um certo nmero mximo de iteraes sem melhora no
valor da melhor soluo. Pela segunda, quando o valor da melhor soluo chega a um limite
inferior conhecido (ou prximo dele). Esse segundo critrio evita a execuo desnecessria
do algoritmo quando uma soluo tima encontrada ou quando uma soluo julgada
sucientemente boa.
Os parmetros principais de controle do mtodo de Busca Tabu so a cardinalidade [T[
da lista tabu, a funo de aspirao A, a cardinalidade do conjunto V de solues vizinhas
testadas em cada iterao e BTmax, o nmero mximo de iteraes sem melhora no valor
22 Marcone Jamilson Freitas Souza
da melhor soluo.
Apresenta-se, pela Figura 11, o pseudocdigo de um algoritmo de Busca Tabu bsico
para o caso de minimizao. Neste procedimento, f
min
o valor mnimo conhecido da
funo f, informao esta que em alguns casos est disponvel.
procedimento BT(f(.), N(.), A(.), [V [, f
min
, [T[, BTmax, s)
1 s

s; {Melhor soluo obtida at ento}


2 Iter 0; {Contador do nmero de iteraes}
3 MelhorIter 0; {Iterao mais recente que forneceu s

}
4 T ; {Lista Tabu}
5 Inicialize a funo de aspirao A;
6 enquanto (f(s) > f
min
e Iter MelhorIter BTmax) faa
7 Iter Iter + 1;
8 Seja s

s m o melhor elemento de V N(s) tal que


o movimento m no seja tabu (m , T) ou
s

atenda a condio de aspirao (f(s

) < A(f(s)));
9 Atualize a lista tabu T;
10 s s

;
11 se (f(s) < f(s

)) ento
12 s

s;
13 MelhorIter Iter;
14 m-se;
15 Atualize a funo de aspirao A;
16 m-enquanto;
17 s s

;
18 Retorne s;
m BT;
Figura 11: Algoritmo de Busca Tabu
comum em mtodos de Busca Tabu incluir estratgias de intensicao, 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 des-
tas 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, per-
manecendo as demais componentes xas. Um critrio de trmino, tal como um nmero
xo de iteraes, utilizado para encerrar o perodo de intensicao. Na seo 5.1, pgina
50, detalha-se um procedimento de intensicao, a Reconexo por Caminhos, mecanismo
que comumente associado a implementaes Busca Tabu.
Mtodos baseados em Busca Tabu incluem, tambm, estratgias de diversicao. O
objetivo destas estratgias, que tipicamente utilizam uma memria de longo prazo, re-
direcionar a pesquisa para regies ainda no sucientemente exploradas do espao de
solues. Estas estratgias procuram, ao contrrio das estratgias de intensicao, gerar
solues que tm atributos signicativamente diferentes daqueles encontrados nas melho-
res solues obtidas. A diversicao, 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-
Inteligncia Computacional para Otimizao 23
mentos. Um nmero xo 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 diversicao, a Relaxao Adaptativa.
Mtodos de Busca Tabu incluem, tambm, listas tabu dinmicas [6, 42], 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 [t
min
, t
max
],
sendo t
min
= 0, 9n e t
max
= 1, 1n, com n representando o nmero de cidades da instncia
considerada. Nesta aplicao, depois que o tamanho da lista escolhido aleatoriamente
no intervalo [t
min
, t
max
], ele mantido constante por 2t
max
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 ca reduzida.
Aspectos de convergncia do mtodo so estudados em [18] e [24].
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. Consi-
deremos 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 BTmax = 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; MelhorIter = 0;
Passo 1 : Devemos, agora, analisar todos os vizinhos de s e calcular a funo de avaliao
deles por meio da expresso (32), denida pgina 11.
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s

)
(11010)
t
18 8 8
(00010)
t
9 4 4
(01110)
t
21 9 9
(01000)
t
5 2 2
(01011)
t
20 10 10
Melhor vizinho: s

= (01011)
t
, com f(s

) = 10
Como s

o melhor vizinho de s, ento s s

, isto , a nova soluo corrente passa


a ser: s = (01011)
t
Lista tabu = T = 5 (indicando que o bit da quinta posio no pode ser modi-
cado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s

= (01011)
t
e f(s

) = 10 (pois f(s

) > f(s

))
Iter = 1; MelhorIter = 1;
Como Iter MelhorIter = 1 1 = 0 BTmax = 1, ento o procedimento de
24 Marcone Jamilson Freitas Souza
explorao do espao de solues deve continuar.
Passo 2 : Determinemos, agora, o melhor vizinho de s = (01011)
t
:
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s

)
(11011)
t
24 12 -3
(00011)
t
15 8 8
(01111)
t
27 13 -47
(01001)
t
11 6 6
(01010)
t
14 6 6
Melhor vizinho: s

= (00011)
t
, com f(s

) = 8
Como s

o melhor vizinho de s, ento s s

(mesmo sendo f(s

) pior que f(s)),


isto , a nova soluo corrente passa a ser: s = (00011)
t
Lista tabu = T = 2 (observa-se que, como a cardinalidade da lista tabu foi xada
em um, ento o movimento proibido anterior sai e entra o novo movimento proibido,
isto , o bit da segunda posio no pode ser modicado, a no ser que o critrio de
aspirao seja satisfeito)
Melhor soluo at ento: s

= (01011)
t
e f(s

) = 10
Iter = 2; MelhorIter = 1;
Como Iter MelhorIter = 2 1 = 1 BTmax = 1, ento o procedimento BT
continua.
Passo 3 : Determinemos, agora, o melhor vizinho de s = (00011)
t
:
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s

)
(10011)
t
19 10 10
(01011)
t
20 10 10
(00111)
t
22 11 11
(00001)
t
6 4 4
(00010)
t
9 4 4
Melhor vizinho: s

= (00111)
t
, com f(s

) = 11
Como s

o melhor vizinho de s, ento s s

, isto , a nova soluo corrente passa


a ser: s = (00111)
t
Lista tabu = T = 3 (indicando que o bit da terceira posio no pode ser modi-
cado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s

= (00111)
t
e f(s

) = 11 (pois f(s

) > f(s

))
Iter = 3; MelhorIter = 3;
Como Iter MelhorIter = 3 3 = 0 BTmax = 1, ento prossegue-se com o
procedimento de explorao do espao de solues.
Inteligncia Computacional para Otimizao 25
Passo 4 : Determinemos, agora, o melhor vizinho de s = (00111)
t
:
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s

)
(10111)
t
24 13 -2
(01111)
t
25 13 -17
(00011)
t
15 8 8
(00101)
t
13 7 7
(00110)
t
16 7 7
Observe que o vizinho com o melhor valor para a funo de avaliao s

= (00011)
t
,
com f(s

) = 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(s

) = 8 f(s

) = 11, esta soluo no aceita. Desta forma, considera-se o


melhor vizinho no tabu, a saber:
Melhor vizinho: s

= (00101)
t
, com f(s

) = 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 s

o melhor vizinho de s (mesmo sendo de piora), ento s s

, 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 modi-
cado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s

= (00111)
t
e f(s

) = 11
Iter = 4; MelhorIter = 3;
Como Iter MelhorIter = 4 3 = 1 BTmax = 1, ento a busca prossegue.
Passo 5 : Determinemos, agora, o melhor vizinho de s = (00101)
t
:
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s

)
(10101)
t
17 9 9
(01101)
t
18 9 9
(00001)
t
6 4 4
(00111)
t
23 11 11
(00100)
t
7 3 3
Observe que o vizinho com o melhor valor para a funo de avaliao s

= (00111)
t
,
com f(s

) = 11. Entretanto, esta soluo tabu, uma vez que o bit da quarta posi-
o est na lista tabu. Como o critrio de aspirao desta soluo no satisfeito,
pois f(s

) = 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: s

= (10101)
t
, com f(s

) = 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 modi-
cado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s

= (00111)
t
e f(s

) = 11
Iter = 5; MelhorIter = 3;
Como Iter MelhorIter = 5 3 = 2 > BTmax = 1, ento PARE. O mtodo de
Busca Tabu retorna, ento, s

= (00111)
t
como soluo nal, com valor f(s

) = 11.
26 Marcone Jamilson Freitas Souza
A aplicao deste mtodo mostra que a soluo nal obtida melhor que aquela encon-
trada 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.
Inteligncia Computacional para Otimizao 27
4.4 GRASP
GRASP (Greedy Randomized Adaptive Search Procedure - Procedimento de busca adap-
tativa gulosa e randmica) 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 reali-
zadas retornada como resultado. O pseudocdigo descrito pela Figura 12 ilustra um
procedimento GRASP para um problema de minimizao.
procedimento GRASP(f(.), g(.), N(.), GRASPmax, s)
1 f

;
2 para (Iter = 1, 2, . . . , GRASPmax) faa
3 Construcao(g(.), , s);
4 BuscaLocal(f(.), N(.), s);
5 se (f(s) < f

) ento
6 s

s;
7 f

f(s);
8 m-se;
9 m-para;
10 s s

;
11 Retorne s;
m 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 so-
luo 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 ', 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 reetir 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 pro-
cedimento 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 cons-
truo do GRASP provavelmente no so localmente timas com respeito denio 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 bsi-
co de busca local com respeito a uma certa vizinhana N(.) de s para um problema de
minimizao.
A ecincia da busca local depende da qualidade da soluo construda. O procedi-
28 Marcone Jamilson Freitas Souza
procedimento Construcao(g(.), , s);
1 s ;
2 Inicialize o conjunto C de candidatos;
3 enquanto (C ,= ) faa
4 g(t
min
) = ming(t) [ t C;
5 g(t
max
) = maxg(t) [ t C;
6 LCR = t C [ g(t) g(t
min
) +(g(t
max
) g(t
min
));
7 Selecione, aleatoriamente, um elemento t LCR;
8 s s t;
9 Atualize o conjunto C de candidatos;
10 m-enquanto;
11 Retorne s;
m Construcao;
Figura 13: Fase de construo de um algoritmo GRASP
procedimento BuscaLocal(f(.), N(.), s);
1 V = s

N(s) [ f(s

) < f(s);
2 enquanto ([V [ > 0) faa
3 Selecione s

V ;
4 s s

;
5 V = s

N(s) [ f(s

) < f(s);
6 m-enquanto;
7 Retorne s;
m BuscaLocal;
Figura 14: Fase de Busca Local de um algoritmo GRASP
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, basica-
mente 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 nais de qualidade muito prxima quela obtida de forma
puramente gulosa, obtidas com um baixo esforo computacional. Em contrapartida, pro-
vocam 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 sosticados incluem estratgias adaptativas para o par-
metro . 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 xo [35, 36, 37].
Inteligncia Computacional para Otimizao 29
4.5 Busca em Vizinhana Varivel
A Busca em Vizinhana Varivel, ou Mtodo de Pesquisa em Vizinhana Varivel (Vari-
able Neighborhood Search, VNS), proposta por Nenad Mladenovi e Pierre Hansen [33],
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 [33, 26, 27].
procedimento VNS()
1 Seja s
0
uma soluo inicial;
2 Seja r o nmero de estruturas diferentes de vizinhana;
3 s s
0
; {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 s

N
(k)
(s);
8 s

BuscaLocal(s

);
9 se (f(s

) < f(s))
10 ento
11 s s

;
12 k 1;
13 seno
14 k k + 1;
15 m-se;
16 m-enquanto;
17 m-enquanto;
18 Retorne s;
m VNS;
Figura 15: Algoritmo VNS
Neste algoritmo, parte-se de uma soluo inicial qualquer e a cada iterao seleciona-se
aleatoriamente um vizinho s

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,
s

, for melhor que a soluo s corrente, a busca continua de s

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 s

gerada aleatoriamente no passo 7 de forma a evitar ciclagem, situao que


pode ocorrer se alguma regra determinstica for usada.
Se a busca local realizada no passo 8 for convencional, o mtodo recebe a denominao
Basic Variable Neighborhood Search. Se, por outro lado, essa busca local for a Descida em
30 Marcone Jamilson Freitas Souza
Vizinhana Varivel (VND), descrita na seo 3.5, ento o mtodo recebe a denominao
General Variable Neighborhood Search (GVNS).
4.6 Iterated Local Search
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 especicadas: (a)
Procedimento GeraSolucaoInicial(), que gera uma soluo inicial s
0
para o problema;
(b) Procedimento BuscaLocal, que retorna uma soluo possivelmente melhorada s

; (c)
Procedimento Perturbacao, que modica a soluo corrente s guiando a uma soluo
intermediria s

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 s
0
GeraSolucaoInicial();
2 s BuscaLocal(s
0
);
3 enquanto (os critrios de parada no estiverem satisfeitos) faa
4 s

Perturbacao(histrico, s);
5 s

BuscaLocal(s

);
6 s CriterioAceitacao(s, s

, histrico);
8 m-enquanto;
m 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 nal e a velocidade de convergncia depende fortemente do
mtodo escolhido. Normalmente um mtodo de descida usado, mas tambm possvel
aplicar algoritmos mais sosticados, tais como Busca Tabu ou outras metaheursticas.
A intensidade da perturbao deve ser forte o suciente para permitir escapar do timo
local corrente e permitir explorar diferentes regies. Ao mesmo tempo, ela precisa ser fraca
o suciente 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 intensicao
e diversicao. A intensicao consiste em permanecer na regio do espao onde a
busca se encontra, procurando explor-la de forma mais efetiva; enquanto a diversicao
consiste em se deslocar para outras regies do espao de solues. A intensicao da
busca no entorno da melhor soluo encontrada obtida, por exemplo, pela aplicao
de pequenas perturbaes sobre ela. A diversicao, por sua vez, pode ser realizada
aceitando-se quaisquer solues s

e aplicando grandes perturbaes na soluo tima


local.
Um critrio de aceitao comumente utilizado mover-se para o timo local s

somente
se ele for melhor que o timo local corrente s, isto , somente se f(s

) < f(s) em um
problema de minimizao, ou se f(s

) > f(s) em um problema de maximizao.


Inteligncia Computacional para Otimizao 31
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 s

. Aps a aplicao de um mtodo de busca local a s

produzido
um novo timo local s

. Considerando como critrio de aceitao o fato de f(s

) ser
melhor que f(s), ento a busca prossegue a partir de s

.
E s p a o d e s o l u e s
s
s'
s"
Perturbao
c
u
s
t
o
Figura 17: Representao esquemtica do funcionamento do ILS
Para denir o que seria uma perturbao no Problema do Caixeiro Viajante, conside-
remos uma estrutura de vizinhana que utilize movimentos de troca de posio de duas
cidades para gerar vizinhos. Uma perturbao poderia ser dividida em vrios nveis de in-
tensidade. Assim, por exemplo, uma perturbao de nvel 1 poderia consistir na realizao
de duas trocas aleatrias. A perturbao de nvel 2 consistiria na execuo de trs trocas
aleatrias sobre uma mesma soluo e assim sucessivamente. O algoritmo ento funciona-
ria da seguinte maneira: Para cada nvel de perturbao seria realizada uma busca local,
a qual, se bem sucedida, faria retornar ao nvel mnimo de perturbao; caso contrrio,
seriam realizadas mais algumas buscas locais no mesmo nvel de perturbao. Em caso
de insucesso destas buscas locais, o nvel de perturbao seria gradativamente aumentado.
O mtodo se encerraria aps um certo nmero de iteraes sem melhora ou quando um
tempo limite fosse atingido.
Para o problema da mochila 0-1 tratado nestas notas, em que se considera como movi-
mento a troca no valor de um bit, uma perturbao de nvel 1 poderia ser a troca no valor
de dois bits simultaneamente, a perturbao de nvel 2 seria a troca no valor de trs bits
simultaneamente e assim sucessivamente. Igualmente ao caso anterior, para cada nvel
de perturbao (nperturb) seriam executadas vrias buscas locais, digamos nbuscas. Esta
estratgia se justica uma vez que sendo a perturbao aleatria, poderiam ser produzidos
diferentes timos locais em funo da soluo intermediria gerada em um mesmo nvel
de perturbao.
4.7 Guided Local Search
Guided Local Search ou Busca Local Guiada uma metaheurstica proposta por Christos
Voudouris [46]. Consiste em promover modicaes na funo custo para escapar de timos
locais.
32 Marcone Jamilson Freitas Souza
4.8 Algoritmos Genticos
4.8.1 Descrio genrica do mtodo
Trata-se de uma metaheurstica que se fundamenta em uma analogia com processos na-
turais de evoluo, nos quais, dada uma populao, os indivduos com caractersticas
genticas melhores tm maiores chances de sobrevivncia e de produzirem lhos cada vez
mais aptos, enquanto indivduos menos aptos tendem a desaparecer. Foram propostos por
John Holland nos anos 70 [23]. Referenciamos a [23, 38] 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
_
s
0
1
, s
0
2
, . . . , s
0
n
_
, normal-
mente aleatoriamente escolhida, a qual chamada de populao no tempo 0.
O procedimento principal um loop que cria uma populao
_
s
t+1
1
, s
t+1
2
, . . . , s
t+1
n
_
no
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 lhos
(normalmente dois), de sorte que para cada cromossomo lho 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, dene-se a populao sobrevivente, isto ,
as n solues que integraro a nova populao. A populao sobrevivente denida 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 atin-
gido, 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
Inteligncia Computacional para Otimizao 33
Figura 18: Estrutura de um Algoritmo Gentico bsico
probabilidade da operao crossover, a probabilidade de mutao, o nmero de geraes
e o nmero de iteraes sem melhora.
O pseudocdigo de um Algoritmo Gentico bsico est descrito na Figura 19.
4.8.2 Representao gentica de solues
Normalmente uma soluo de um problema est associado a um cromossomo p represen-
tado na forma de um vetor (ou lista) com m posies: p = (x
1
, x
2
, . . . , x
m
), onde cada
componente x
i
representa um gene (ou uma varivel da soluo).
Dentre os tipos de representao de um cromossomo, os mais conhecidos so: repre-
sentao 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 Micha-
lewicz (1992), no qual deseja-se maximizar a funo:
f(x) = [11 num(x) 150[,
34 Marcone Jamilson Freitas Souza
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 Dena a populao sobrevivente;
9 m-enquanto;
m 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:
p
1
= (101010101010101010101010101010)
p
2
= (110000001100001110000000000000)
Ento f(p
1
) = [11num(p
1
)150[ = [1115150[ = 15 e f(p
2
) = [11num(p
2
)
150[ = [11 7 150[ = 73.
Observe que o cromossomo que fornece um ponto de mximo local dado por:
p
0
= (000000000000000000000000000000), com f(p
0
) = 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 x
ij
representa o nmero da turma
para a qual o professor i ministra aula no horrio j.
Inteligncia Computacional para Otimizao 35
4.8.3 Operador crossover clssico
A idia do operador crossover clssico a de efetuar cruzamentos entre dois ou mais
cromossomos pais e formar cromossomos lhos (osprings) a partir da unio de segmentos
de genes de cada pai.
Inicialmente so feitos cortes aleatrios nos pais. Por exemplo, considere dois pais e
um ponto de corte realizado na parte central dos cromossomos pais.
p
1
= (1 0 1 | 0 1 0) = (p
1
1
| p
2
1
)
p
2
= (1 1 1 | 0 0 0) = (p
2
1
| p
2
2
)

ponto de corte
A partir dos cortes, so gerados dois lhos, cada qual formado a partir da reunio de
partes de cada um dos pais.
O
1
= (p
1
1
| p
2
2
) = (1 0 1 | 0 0 0)
O
2
= (p
1
2
| p
2
1
) = (1 1 1 | 0 1 0)
4.8.4 Operador mutao clssico
Operadores mutao consistem em alterar um ou mais genes de um cromossomo. Para
ilustrar um operador mutao clssico, seja o cromossomo p de 7 genes, dado por: p =
(x
1
x
2
x
3
. . . x
7
) = (1 0 1 0 1 0 1).
Considerando como mutao a alterao de um gene de um valor 1 para um valor 0
ou vice-versa, ento o cromossomo p

= (1 1 1 0 1 0 1) representa uma mutao de p, no


qual o gene x
2
foi alterado do valor 0 para o valor 1.
4.8.5 Operadores crossover para o PCV
No caso especco do PCV, a representao por inteiros considerada mais adequada
que a representao binria; primeiro por melhor se relacionar com uma soluo (rota)
do PCV, que consiste de uma lista de n nmeros inteiros (cidades) e segundo porque a
representao por inteiros favorece a construo de cromossomos que representem solues
viveis no PCV.
Infelizmente, o simples uso de operadores clssicos conduzem freqentemente a solues
inviveis, sendo necessrio, nesses casos, incorporar regras adicionais para viabilizar tais
solues.
Para ilustrar este fato, considere dois cromossomos pais:
p
1
= (1 2 3 | 4 5 6) associado rota t
1
= 1 2 3 4 5 6 1}
p
2
= (3 5 6 | 2 1 4) associado rota t
1
= 1 4 3 5 6 2 1}
Neste caso, so gerados dois cromossomos lhos O
1
e O
2
:
O
1
= (p
1
1
| p
2
2
) = (1 2 3 | 2 1 4)
O
2
= (p
1
2
| p
2
1
) = (3 5 6 | 4 5 6)
36 Marcone Jamilson Freitas Souza
As rotas associadas aos cromossomos lhos O
1
e O
2
so inviveis porque em O
1
foi
gerada uma rota contendo apenas as cidades 1, 2, 3 e 4 repetindo as visitas s cidades
i = 1 e i = 2. Igualmente, em O
2
foram repetidas visitas em i = 5 e i = 6 e no foram
visitadas as cidades i = 1 e i = 2.
A seguir, so mostrados alguns operadores crossover tpicos para o Problema do Cai-
xeiro Viajante, os quais geram lhos viveis.
1. Operador Crossover PMX:
O operador Partial Mapped Crossover (PMX) trabalha da seguinte forma: considere
dois cromossomos pais p
1
e p
2
. Selecione dois cortes em p
1
e p
2
aleatoriamente. No
caso de serem gerados dois cromossomos lhos O
1
e O
2
, os genes localizados entre
os dois cortes de p
1
e p
2
so herdados integralmente por O
2
e O
1
, respectivamente,
preservando a ordem e a posio de cada cidade.
Para ilustrar seu funcionamento considere o seguinte exemplo:
p
1
= (1 2 3 | 4 5 6 7 | 8 9)
p
2
= (4 2 6 | 1 8 5 9 | 3 7)
Ento:
O
1
= (X X X | 1 8 5 9 | X X)
O
2
= (X X X | 4 5 6 7 | X X)
A seguir tenta-se preencher cada componente X de O
1
pela componente correspon-
dente de p
1
e as de O
2
com p
2
, caso no formem uma rota ilegal para o PCV.

O
1
= (X 2 3 | 1 8 5 9 | X X)
O
2
= (X 2 X | 4 5 6 7 | 3 X)
Considere agora o primeiro X de O
1
(que deveria ser X = 1, mas forneceria uma
rota ilegal, j que esta cidade j se encontra presente na rota). Como X = 1 p
1
no possvel, a cidade correspondente posio em que est a cidade 1 de p
1
no
segundo pai p
2
, a cidade 4. Assim, esta cidade alocada no primeiro X de O
1
.
X
|
p
1
= (1 . . .

p
2
= (4 . . .
Obtm-se com isto:
O
1
= (4 2 3 | 1 8 5 9 | X X)
Repete-se o procedimento para o prximo X O
1
(X = 8 p
1
)
Inteligncia Computacional para Otimizao 37
X
|
p
1
= (. . . | . . . | 8 . . . )

p
2
= (. . . | . . . | 3 . . . )
Mas X = 3 j est presente em O
1
, ento toma-se o n

de p
2
associado ao n

3 de
p
1
.
X
|
p
1
= (. . . 3 | . . .

p
2
= (. . . 6 | . . .
Como X = 6 ainda no est presente em O
1
, substitui-se X por 6 em O
1
, obtendo-se:

O
1
= (4 2 3 | 1 8 5 9 | 6 X)
Repete-se o procedimento para o prximo X O
1
(X = 9 p
1
)
X
|
p
1
= (. . . | . . . | . . . 9)

p
2
= (. . . | . . . | . . . 7)
Como X = 7 ainda no est presente em O
1
, substitui-se X por 7 em O
1
, obtendo-se:
O
1
= (4 2 3 | 1 8 5 9 | 6 7)
Analogamente, preenchem-se os Xs de O
2
, obtendo-se ao seu nal:
O
2
= (1 2 8 | 4 5 6 7 | 3 9)
O operador PMX explora a convenincia ou no de se reproduzir cromossomos lo-
calmente 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
ospring (cromossomo lho) escolhendo uma subseqncia de uma rota associado a
um cromossomo pai p
1
e preservando a ordem relativa das cidades do outro cromos-
somo pai p
2
.
Exemplo: Considere dois cromossomos pais:
38 Marcone Jamilson Freitas Souza
p
1
= (1 2 3 | 4 5 6 7 | 8 9)
p
2
= (4 5 2 | 1 8 7 6 | 9 3)
Os lhos O
1
e O
2
herdam a faixa entre os dois cortes de p
1
e p
2
, respectivamente.
O
1
= (X X X | 4 5 6 7 | X X)
O
2
= (X X X | 1 8 7 6 | X X)
Agora, partindo-se do segundo corte de um pai p
2
, copia-se em uma lista as n cidades
de p
2
. A seguir, remove-se desta lista as cidades contidas entre os dois cortes do outro
pai (p
1
). A subseqncia resultante enxertada no lho O
1
associado a p
1
a partir
do segundo corte seguindo a ordem da subseqncia.
Assim, considerando o exemplo, partindo-se de p
2
tem-se a lista:
9 3 4 5 2 1 8 7 6
Removem-se 4, 5, 6 e 7 desta lista, uma vez que estas cidades j foram visitadas,
resultando na subseqncia: 9 3 2 1 8. Esta subseqncia enxertada em
O
1
, nesta ordem, a partir do seu segundo corte.
O
1
= (X X X | 4 5 6 7 | X X)
ou
O
1
= (2 1 8 | 4 5 6 7 | 9 3)
Analogamente, partindo de p
1
, tem-se a lista 8 9 1 2 3 4 5 6 7.
Removendo-se 1, 8, 7 e 6 tem-se a subseqncia: 92345, a qual enxertada
em O
2
a partir do segundo corte, obtendo-se:
O
2
= (3 4 5 | 1 8 7 6 | 9 2)
O operador OX prioriza a ordem das cidades e no suas posies na rota. A posio
das cidades na rota no importante no PCV e sim, a ordem de visitas, ou seja, no
PCV importante saber quem so os vizinhos de uma dada cidade i.
A irrelevncia das posies na rota pode ser vista no exemplo a seguir:
T
1
: 5 3 1 2 4
T
2
: 3 1 2 4 5
Em T
1
e T
2
as cidades aparecem em posies diferentes, mas tanto a rota T
1
quanto
a rota T
2
representam a mesma soluo.
3. Operador crossover CX:
Proposto por Oliver e outros (1987), o operador Cycle Crossover (CX) preserva a
posio absoluta das cidades nos cromossomos pais.
Para ilustr-lo, considere o seguinte exemplo com dois cromossomos pais:
Inteligncia Computacional para Otimizao 39
p
1
= (1 2 3 4 5 6 7 8 9)
p
2
= (4 1 2 8 7 6 9 3 5)
O primeiro lho O
1
obtido tomando-se, inicialmente, a primeira cidade de p
1
,
obtendo-se:
O
1
= (1 X X X X X X X X)
Com a 1
a
posio de O
1
j preenchida, ento o elemento da 1
a
posio de p
2
igual
a 4 no pode ser tambm alocado 1
a
posio de O
1
. Portanto, o elemento da 1
a
posio de p
2
, igual a 4, herdado pelo lho O
1
na posio que ele ocupa em p
1
. Ou
seja, o n

4 est na 4
a
posio de p
1
, logo estar tambm na 4
a
posio de O
1
.
O
1
= (1 X X 4 X X X X X)
A seguir, estando o elemento da 4
a
posio do outro pai p
2
= 8, e o inteiro 8 em p
1
(na oitava posio), aloca-se 8 na oitava posio de O
1
.
O
1
= (1 X X 4 X X X 8 X)
Seguindo esse procedimento, tem-se:
O
1
= (1 2 3 4 X X X 8 X)
O ltimo inteiro alocado foi 2, mas na 2
a
posio em p
2
est o inteiro 1 que j est
em O
1
. Neste caso, diz-se que foi completado um ciclo.
A partir da, as cidades restantes de O
1
so preenchidas do outro pai (p
2
), obtendo-se:
O
1
= (1 2 3 4 7 6 9 8 5)
De forma semelhante, tomando inicialmente a 1
a
cidade do segundo cromossomo pai
p
2
, comea-se a construir o segundo cromossomo lho O
2
, que ao nal ser da forma:
O
2
= (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 lho 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 lhos,
reduzindo consideravelmente o percentual de arestas selecionadas aleatoriamente.
40 Marcone Jamilson Freitas Souza
No ERX, o signicativo nmero de arestas transferidas de cromossomos pais para
cromossomos lhos uma conseqncia do seguinte procedimento:
Criar uma lista de arestas de ambos os pais. A lista de arestas produz
para cada cidade, todas as outras cidades a ela conectadas em pelo menos
um dos cromossomos pais. Isto signica que para cada cidade, existem
no mnimo duas e no mximo quatro cidades conectadas.
Exemplo: Considere duas rotas do PCV, ou, equivalentemente, na representao
por caminhos, dois cromossomos.
p
1
= (1 2 3 4 5 6)
p
2
= (3 4 1 6 2 5)
A lista de arestas ser:
cidade 1: (1, 2), (6, 1), (4, 1)
cidade 2: (1, 2), (2, 3), (6, 2), (2, 5)
cidade 3: (2, 3), (3, 4), (5, 3)
cidade 4: (3, 4), (4, 5), (4, 1)
cidade 5: (4, 5), (5, 6), (2, 5), (5, 3)
cidade 6: (5, 6), (6, 1), (6, 2)
Neste caso supe-se que (i, j) = (j, i).
Construo do Cromossomo Filho:
O operador ERX pode, a partir de dois cromossomos pais, gerar um ou dois lhos.
A verso para gerar um lho a seguinte:
Selecione a cidade inicial de um dos pais (no caso, cidade 1 ou cidade 3). A cidade
inicial quela associada ao menor nmero de arestas, conforme ser justicado mais
adiante. Como no exemplo considerado houve empate, escolhe-se arbitrariamente a
cidade 1.
A cidade 1 est diretamente ligada s cidades 2, 4 e 6. A prxima cidade no cromos-
somo lho ser dentre estas cidades, aquela que possui o menor nmero de arestas
(no exemplo, escolhe-se a cidade 4). A rota parcial ser, ento: 14. . . ou O
1
= (1
4 X X X X).
Dentre as cidades conectadas diretamente cidade 4, seleciona-se aquela que possui
o menor nmero de arestas e que ainda no esteja na rota parcial O
1
. Caso no
existam candidatos, a seleo da prxima aresta feita aleatoriamente dentre as
cidades no pertencentes rota parcial. No exemplo, os vizinhos de 4 so: 3, 5 e 1,
mas a cidade 1 j est na rota, ento escolhe-se entre 3 e 5. Como a cidade 3 possui
menos arestas, ela selecionada, obtendo:
O
1
= (1 4 3 X X X)
Inteligncia Computacional para Otimizao 41
Seguindo o mesmo procedimento, escolhe-se a cidade 2:
O
1
= (1 4 3 2 X X)
A prxima cidade a ser escolhida a 6:
O
1
= (1 4 3 2 6 X)
Finalmente, a cidade 5 incluida na rota:
O
1
= (1 4 3 2 6 5)
Observe que o cromossomo lho O
1
foi, neste exemplo, construdo inteiramente de
arestas de um dos pais sem a necessidade de gerar arestas aleatoriamente. Isso, em
parte, se deve ao critrio da escolha da prxima cidade.
Escolhendo a cidade com o menor nmero de arestas na lista de arestas, a tendncia
obter uma rota com arestas herdadas de um dos pais.
A idia de iniciar com cidades com poucas arestas, deixando-se para o nal as cidades
com o nmero maior de arestas (vizinhos), que o risco de ter que gerar uma aresta
aleatoriamente cresce apenas no nal do procedimento, devido ao maior nmero de
cidades j includas na rota parcial.
Uma variante do ERX, chamada EERX (Enhanced Edge Recombination) prioriza
as arestas comuns aos dois pais, para ser herdada pelo cromossomo lho. Para
distinguir estes casos, basta notar que se uma cidade possui duas arestas ento,
necessariamente, as duas sero comuns aos dois pais. Se uma cidade possui trs
arestas, uma destas arestas ser comum aos dois pais e, nalmente, se uma cidade
possui quatro arestas ento no existe nenhuma aresta em comum.
42 Marcone Jamilson Freitas Souza
4.9 Scatter Search
Scatter Search ou Busca Dispersa um mtodo de busca populacional que consiste em
construir solues pela combinao de outras solues, tendo sua origem em estratgias
originalmente propostas no contexto de programao inteira.
A Busca Dispersa projetada para trabalhar com um conjunto de solues, denominado
Conjunto de Referncia, o qual contm boas solues obtidas ao longo da busca preguessa.
O conceito de uma soluo de boa qualidade vai alm do seu valor propriamente dito da
funo de avaliao e inclui critrios especiais tais como diversidade. O mtodo gera
combinaes de solues de referncia para criar novas solues do espao de busca.
O mtodo organizado para (1) capturar informaes no contidas separadamente nas
solues originais, (2) levar vantagem de mtodos de soluo heurstica auxiliares (para
avaliar as combinaes produzidas e gerar novas solues) e (3) fazer uso de estratgias es-
peccas ao invs de estratgias aleatrias de busca. A Busca Dispersa envolve basicamente
cinco procedimentos:
1. Um procedimento de Diversicao, para gerar um conjunto de solues diversica-
das, usando uma ou mais solues aleatrias como entrada;
2. Um procedimento de Renamento, para transformar uma soluo em uma ou mais
solues melhoradas;
3. Um procedimento de Atualizao do Conjunto de Referncia, para construir e manter
o Conjunto de Referncia, o qual contm as nbest melhores solues encontradas
(sendo o valor de nbest tipicamente pequeno, por exemplo, no mais que 20 [21]).
Vrios critrios alternativos podem ser usados para incluir ou remover solues do
conjunto de referncia.
4. Um procedimento de Gerao de Subconjuntos para operar o conjunto de referncia
e escolher um subconjunto de suas solues como base para criar combinaes de
solues. O procedimento de gerao de subconjuntos mais comum consiste em gerar
todos os pares de solues de referncia, isto , todos os subconjuntos de tamanho
2;
5. Um procedimento de Combinao de Solues para transformar um dado subcon-
junto de solues produzidas pelo procedimento Gerao de Subconjuntos em uma
ou mais solues combinadas. O procedimento de combinao anlogo ao operador
crossover de Algoritmos Genticos, embora ele seja capaz de combinar mais do que
duas solues.
O procedimento da Figura 20, que descreve o mtodo, inicia com a criao de um con-
junto de referncia (RefSet). Para isso, o procedimento Diversicao usado para cons-
truir um conjunto P de solues diversicadas. A cardinalidade de P, PSize, tipicamente
10 vezes o tamanho de RefSet [21]. Inicialmente, o conjunto de referncia RefSet consiste
de nbest solues distintas e bastante diversas retiradas de P. As solues em RefSet so
ordenadas de acordo com sua qualidade, sendo a melhor colocada na primeira posio
da lista. A busca ento iniciada atribuindo-se o valor TRUE varivel booleana New-
Solutions. No passo 3, NewSubsets construdo e NewSolutions trocado para FALSE.
Considerando subconjuntos de tamanho 2, por exemplo, a cardinalidade de NewSubsets
(relativa ao conjunto de referncia inicial) dada por (nbest
2
nbest)/2, que corresponde a
todos os possveis pares de solues em RefSet. Os pares em NewSubsets so selecionados
um por vez em ordem lexicogrca e o procedimento Combinao de Solues aplicado
Inteligncia Computacional para Otimizao 43
procedimento ScatterSearch
1 P ;
Use o procedimento Diversicao para construir uma soluo x;
Se x , P ento adicione x a P, isto , P P x; caso contrrio, descarte x;
Repita este procedimento at que [P[ = PSize;
Construa RefSet = x
1
, , x
nbest
, com nbest solues diversicadas de P;
2 Avalie as solues em RefSet e ordene-as de acordo com a funo de avaliao;
(Considere x
1
a melhor soluo e x
nbest
a pior)
NewSolutions TRUE;
enquanto (NewSolutions) faa
3 Gere NewSubsets, isto , todos os pares de solues de RefSet
desde que haja pelo menos uma nova soluo, isto , que NewSolutions = TRUE;
NewSolutions FALSE;
enquanto (NewSubsets ,= ) faa
4 Selecione o prximo subconjunto s em NewSubsets;
5 Aplique Combinao de Solues a s para obter uma ou mais solues x;
se (x , RefSet e f(x) < f(x
nbest
) ento
6 x
nbest
x e reordene RefSet;
7 NewSolutions TRUE;
m-se
8 Remova s de NewSubsets;
m-enquanto;
m-enquanto;
m ScatterSearch;
Figura 20: Algoritmo Scatter Search
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 reorde-
nado no passo 6. O ag 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 Formi-
gas (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 co-
operam 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 Marcone Jamilson Freitas Souza
ou conexes usadas durante o caminho. Esta informao de feromnio usada para
direcionar a busca das outras formigas.
Alm das atividades das formigas, um algoritmo ACO inclui dois procedimentos adici-
onais: evaporao da trilha de feromnio e aes daemon, sendo esta ltima componente
opcional. A evaporao de feromnio o processo pelo qual o feromnio depositado pelas
formigas decresce ao longo do tempo. Do ponto de vista prtico, a evaporao de fero-
mnio necessria para evitar uma convergncia prematura do algoritmo em uma regio
subtima. Este procedimento implementa uma forma til de esquecimento, favorecendo a
explorao de novas regies do espao de busca. As aes daemon podem ser usadas para
implementar aes centralizadas, as quais no seriam realizadas pelas formigas tomadas
isoladamente. Como exemplos destas aes podemos citar a ativao de um procedimento
de busca local ou uma coleo de informaes globais que podem ser usadas para decidir
se til ou no depositar feromnio adicional para guiar a busca sob uma perspectiva no
local. Como um exemplo prtico, o daemon pode observar o caminho encontrado por cada
formiga da colnia e escolher para depositar uma quantidade extra de feromnio apenas
nas componentes usadas pela formiga que construiu a melhor soluo. Atualizaes de
feromnio realizadas por daemon so chamadas atualizaes de feromnio o-line.
Apresenta-se, pela Figura 21, uma implementao bsica da metaheurstica Colnia
de Formigas aplicada ao Problema do Caixeiro Viajante. Nesta implementao, m a
quantidade de formigas, Q a quantidade de feromnio depositada por uma formiga aps
concluir uma rota,
0
a quantidade inicial de feromnio em cada arco, d
ij
a distncia
entre as cidades i e j,
ij
a quantidade de feromnio em cada arco (i, j),
k
ij
a
quantidade de feromnio depositada por cada formiga k em cada arco (i, j), a taxa
de evaporao de feromnio e a quantidade de feromnio depositada por todas as
formigas no arco (i, j).
Para a obteno de uma rota para uma formiga (passo 3(b) da Figura 21), o algoritmo
pressupe que a formiga lembra-se das cidades j visitadas. Estando na cidade i, a formiga
k escolhe a cidade j, dentre as ainda no visitadas, com uma probabilidade dada pela
expresso (47):
p
k
ij
=
[
ij
]

[
ij
]

l
k
i
[
il
]

[
il
]

j
k
i
(47)
em que
k
i
representa o conjunto de cidades ainda no visitadas pela formiga k,
ij
= 1/d
ij
uma informao heurstica disponvel a priori e e so dois parmetros que deter-
minam a inuncia relativa da trilha de feromnio e da informao heurstica, respectiva-
mente. Se = 0 ento a probabilidade de seleo proporcional [
ij
]

e as cidades mais
prximas tm maiores chances de serem escolhidas. Neste caso, o algoritmo comporta-se
como um mtodo guloso estocstico (diz-se estocstico porque as formigas so inicialmente
aleatoriamente distribudas entre o conjunto de cidades e, assim, h mltiplos pontos de
partida). Se = 0, ento somente a utilizao de feromnio tem inuncia, induzindo a
uma estagnao rpida da busca, isto , todas as formigas seguindo o mesmo caminho e
construindo as mesmas solues.
Observe, no passo 3(e) da Figura 21, que a quantidade de feromnio depositada em cada
arco (i, j) visitado por uma formiga proporcional ao comprimento do arco, uma vez que
a quantidade unitria de feromnio (Q/L
k
) depositada pela formiga k multiplicada pelo
comprimento d
ij
do arco. Assume-se, tambm, ao contrrio do caso real, que a formiga s
deposita o feromnio aps concluir a rota e no durante o percurso. Nas implementaes
apresentadas em [10], considera-se apenas
k
ij
1/L
k
, desprezando-se o comprimento
Inteligncia Computacional para Otimizao 45
procedimento ColoniaFormigas
1 Seja Q e
0
constantes;
f

;
2 Faa
ij
0 e
ij

0
para todo arco (i, j);
3 Para (cada formiga k = 1, , m) faa
(a) Selecione a cidade inicial para a k-sima formiga
(b) Obtenha uma rota R
k
para cada formiga k
(c) Seja L
k
o comprimento da rota R
k
(d) se ( L
k
< f

) ento s

R
k
e f

f(s

)
(e) Calcule a quantidade de rastro deixado pela formiga k:
se (arco (i, j) pertence rota R
k
)
ento
k
ij
d
ij
Q/L
k
seno
k
ij
0
m-se
(f) Faa
ij

ij
+
k
ij
4 m-para;
5 Faa
ij
(1 )
ij
+
ij
(i, j)
6 se (a melhor rota s

no foi alterada nas ltimas IterMax iteraes)


7 ento PARE: s

a melhor soluo
8 seno Retorne ao Passo 3
9 m-se
m ColoniaFormigas;
Figura 21: Algoritmo Colnia de Formigas
de cada arco e a quantidade Q de feromnio depositada por cada formiga aps concluir
uma rota.
Uma extenso interessante do algoritmo ACO apresentado na Figura 21 consiste em
substituir o passo 5 pela expresso (48):

ij
(1 )
ij
+
best
ij
(i, j) (48)
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 w1
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 max0, wr 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 (49):

ij
(1 )
ij
+
w1

r=1
_
(w r)
r
ij
_
+w
gb
ij
(i, j) (49)
em que
gb
ij
indica a trilha de feromnio deixada pela formiga que produziu a melhor
soluo global at ento.
46 Marcone Jamilson Freitas Souza
4.11 Algoritmos Memticos
A metaheurstica Algoritmos Memticos (Memetic Algorithms) foi proposta por ...
Basicamente, o mtodo uma variao de Algoritmos Genticos, consistindo no re-
namento dos indivduos antes de se submeterem s operaes de recombinao e mutao.
4.12 Annealing Microcannico
Trata-se de uma variante do algoritmo Simulated Annealing, proposta em [1]. Diferente-
mente 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 utuaes 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 D
max
) e E a energia do
sistema (f(s)). O procedimento principal consiste em um loop que gera, randomicamente,
em cada iterao, um nico vizinho s

da soluo corrente.
Chamando de a variao de energia ao mover-se de s para s

, o mtodo aceita o
movimento, e a soluo vizinha s

passa a ser a nova soluo corrente, se 0, com a


condio de que D D
max
, isto , que a energia liberada no supere a capacidade
do demnio. Caso > 0 a soluo vizinha s

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 s

, isto , D D . Desta forma, a energia total,


E +D, permanece constante.
O demnio assume, inicialmente, um valor D
max
. Aps um certo nmero de iteraes
(o qual representa o nmero de iteraes necessrias para o sistema atingir o equilbrio
trmico numa dada congurao 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 [44]. Da fsica estatstica sabe-se que o valor mdio do
demnio igual temperatura (

D = T) e no equilbrio trmico tem-se

D/(D) = 1, onde
(D) o desvio-padro dos valores do demnio. Entretanto, sob o ponto de vista prtico,
custoso avaliar computacionalmente se tal equilbrio foi atingido. Assim, ao invs de
avali-lo durante o progresso da pesquisa, prexa-se um nmero mximo de iteraes em
um dado nvel de energia, o qual passa a ser um parmetro de controle do mtodo.
Os parmetros de controle do procedimento so, pois, a taxa de diminuio da
capacidade do demnio, o nmero de iteraes em um dado nvel de energia (AMmax), o
valor D
i
do demnio no incio de cada fase e a capacidade inicial do demnio D
max
.
Apresentamos, pela Figura 22, o pseudocdigo de um algoritmo Annealing Microcan-
nico bsico.
Inteligncia Computacional para Otimizao 47
procedimento AM(f(.), N(.), AMmax, , D
i
, D
max
, s)
1 s

s; {Melhor soluo obtida at ento}


2 enquanto (D
max
> 0) faa
3 D D
i
;
4 para (IterE = 1, 2, . . . , AMmax) faa
5 Gere um vizinho qualquer s

N(s);
6 = f(s

) f(s);
7 se ( 0)
8 ento
9 se (D D
max
) ento
10 s s

;
11 D D ;
12 se (f(s

) < f(s

)) ento s

;
13 m-se;
14 seno
15 se (D 0) ento
16 s s

;
17 D D ;
18 m-se;
19 m-se;
20 m-para;
21 D
max
D
max
;
22 m-enquanto;
23 s s

;
24 Retorne s;
m AM;
Figura 22: Algoritmo Annealing Microcannico
4.13 Otimizao Microcannica
Trata-se de uma alternativa ao Annealing Microcannico, proposta originalmente em [45].
Referenciamos a [45, 32, 44] para uma descrio mais detalhada do mtodo.
O algoritmo de Otimizao Microcannica (OM), descrito pela Figura 23, consiste de
dois procedimentos, os quais so aplicados alternadamente: inicializao e amostragem.
Na fase de inicializao, OM realiza somente movimentos de melhora, guiando a uma
congurao de mnimo local. Para tentar escapar desta congurao, executa-se a amos-
tragem, fase na qual um grau extra de liberdade (denominada demnio) produz pequenas
perturbaes na soluo corrente. Em cada iterao desta fase, movimentos randmicos
so propostos, sendo aceitos apenas aqueles nos quais o demnio capaz de absorver ou
liberar a diferena de custo envolvida. Aps a fase de amostragem, uma nova inicializao
realizada e o algoritmo assim prossegue, alternando entre as duas fases, at que uma
condio de parada seja satisfeita.
O demnio denido por dois parmetros: sua capacidade D
max
e seu valor inicial
D
i
. A fase de amostragem gera uma sequncia de estados cuja energia conservada,
exceto para pequenas utuaes, as quais so modeladas pelo demnio. Chamando de
E
i
a energia (custo) da soluo obtida na fase de inicializao, de D e E a energia do
demnio e da soluo, respectivamente, em um dado instante da fase de amostragem,
tem-se E + D = E
i
+ D
i
= constante. Portanto, esta fase gera solues no intervalo
48 Marcone Jamilson Freitas Souza
procedimento OM(f(.), N(.), OMmax, s)
1 s

s; {Melhor soluo obtida at ento}


2 Iter 0; {Nmero de iteraes}
3 MelhorIter 0; {Iterao mais recente que forneceu s

}
4 enquanto (Iter MelhorIter < OMmax) faa
5 Iter Iter + 1;
6 InicializacaoOM(f(.), N(.), Imax, s);
7 se (f(s) < f(s

)) ento
8 s

s;
9 MelhorIter Iter;
10 m-se;
11 AmostragemOM(f(.), N(.), D
i
, D
max
, Amax, s);
12 m-enquanto;
13 s s

;
14 Retorne s;
m OM;
Figura 23: Algoritmo de Otimizao Microcannica
[E
i
D
max
+D
i
, E
i
+D
i
].
Os parmetros principais de controle do algoritmo OM so o nmero mximo OMmax
de iteraes consecutivas sem melhora em OM, o nmero mximo de iteraes consecutivas
sem melhora na fase de inicializao Imax, o nmero mximo de iteraes de amostragem
Amax, o valor inicial D
i
do demnio e a sua capacidade mxima D
max
.
Apresentamos, pelas guras 24 e 25, os pseudocdigos das fases de inicializao e
amostragem, respectivamente, de um algoritmo de Otimizao Microcannica bsico.
Inteligncia Computacional para Otimizao 49
procedimento InicializacaoOM(f(.), N(.), Imax, s)
1 s

s; {Melhor soluo obtida at ento}


2 Iter 0; {Nmero de iteraes}
3 MelhorIter 0; {Iterao mais recente que forneceu s

}
4 enquanto (Iter MelhorIter < Imax) faa
5 Iter Iter + 1;
6 Gere um vizinho qualquer s

N(s);
7 = f(s

) f(s);
8 se ( < 0)
9 ento
10 s s

;
11 se (f(s

) < f(s

)) ento
12 s

;
13 MelhorIter Iter;
14 m-se;
15 seno Ponha na lista dos movs rejeitados;
16 m-se;
17 m-enquanto;
18 s s

;
19 Retorne s;
m InicializacaoOM;
Figura 24: Fase de inicializao do algoritmo de Otimizao Microcannica
procedimento AmostragemOM(f(.), N(.), D
i
, D
max
, Amax, s)
1 Seja s soluo advinda da fase de inicializao;
2 Escolha D
max
e D
I
da lista de movimentos rejeitados;
3 D D
i
; {Valor corrente do demnio}
4 para (Iter = 1, 2, . . . , Amax) faa
5 Gere um vizinho qualquer s

N(s);
6 = f(s

) f(s);
7 se ( 0)
8 ento
9 se (D D
max
) ento
10 s s

;
11 D D ;
12 m-se;
13 seno
14 se (D 0) ento
15 s s

;
16 D D ;
17 m-se;
18 m-se;
19 m-para;
20 Retorne s;
m AmostragemOM;
Figura 25: Fase de amostragem do algoritmo de Otimizao Microcannica
50 Marcone Jamilson Freitas Souza
5 Tcnicas especiais de intensicao e diversicao
5.1 Reconexao por Caminhos
A tcnica Reconexo por Caminhos ou Religao de Caminhos, conhecida na literatura
inglesa como Path Relinking, foi proposta por [17] como uma estratgia de intensicao
para explorar trajetrias que conectavam solues elite obtida pelo mtodo Busca Tabu
ou Scatter Search [20].
Esta busca por solues de melhor qualidade consiste em gerar e explorar caminhos no
espao de solues partindo de uma ou mais solues elite e levando a outras solues elite.
Para tal nalidade, so selecionados movimentos que introduzem atributos das solues
guia na soluo corrente. Desse modo, a Reconexo por Caminhos pode ser vista como
uma estratgia que objetiva incorporar atributos de solues de boa qualidade, favorecendo
a seleo de movimentos que as contenham.
A Reconexo por Caminhos pode ser aplicada segundo duas estratgias bsicas [41]:
Reconexo por Caminhos aplicada como uma estratgia de ps-otimizao entre
todos os pares de solues elite;
Reconexo por Caminhos aplicada como uma estratgia de intensicao a cada
timo local obtido aps a fase de busca local.
A aplicao da tcnica de Reconexo por Caminhos como um procedimento de inten-
sicao a cada timo local mais ecaz do que empreg-la como um procedimento de
ps-otimizao [41]. Neste caso, a Reconexo por Caminhos aplicada a pares (s
1
, s
2
) de
solues, onde s
1
a soluo corrente obtida aps o procedimento de busca local e s
2

uma soluo selecionada aleatoriamente de um conjunto formado por um nmero limitado,
TamConjElite, de solues elite encontradas durante a explorao do espao de solues.
Este conjunto est, inicialmente, vazio. Cada soluo obtida ao nal de uma busca local
considerada como uma candidata a ser inserida no conjunto elite, desde que ela seja
melhor que a soluo de pior qualidade desse conjunto e apresente um percentual mnimo
de diferena em relao a cada soluo do conjunto elite (PercDif). Esta estratgia
adotada para evitar que o conjunto elite contenha solues muito parecidas. Se o conjunto
estiver vazio, a soluo simplesmente inserida no conjunto. Se o conjunto elite j possui
TamConjElite solues e a soluo corrente candidata a ser inserida neste conjunto,
ento esta substitui a soluo de pior qualidade.
O algoritmo inicia computando a diferena simtrica (s
1
, s
2
) entre s
1
e s
2
, resultando
no conjunto de movimentos que deve ser aplicado a uma delas, dita soluo inicial, para
alcanar a outra, dita soluo guia. A partir da soluo inicial, o melhor movimento
ainda no executado de (s
1
, s
2
) aplicado soluo corrente at que a soluo guia
seja atingida. A melhor soluo encontrada ao longo desta trajetria considerada como
candidata insero no conjunto elite e a melhor soluo j encontrada atualizada.
Diversas alternativas tm sido consideradas e combinadas em implementaes recentes
[41]:
No aplicar Reconexo por Caminhos a cada iterao, mas sim periodicamente, para
no onerar o tempo nal do algoritmo;
Explorar duas trajetrias potencialmente diferentes, usando s
1
como soluo inicial
e depois s
2
no mesmo papel;
Explorar apenas uma trajetria, usando s
1
ou s
2
como soluo inicial e
Inteligncia Computacional para Otimizao 51
No percorrer a trajetria completa de s
1
at s
2
, mas sim apenas parte dela (Reco-
nexo por Caminhos Truncada).
Para a escolha da alternativa mais apropriada, deve-se ter um compromisso entre
tempo de processamento e qualidade da soluo. Em [39] foi observado que a explorao
de duas trajetrias potencialmente diferentes para cada par (s
1
, s
2
) 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 s
1
e s
2
(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 s
1
e s
2
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

a melhor soluo entre s e g;


3: Calcular o conjunto de movimentos possveis (s, g);
4: enquanto [(s, g)[ ,= 0 faa
5: Atribuir a g

a melhor soluo obtida aplicando o melhor movimento de (s, g) a


g;
6: Excluir de (s, g) este movimento;
7: g g

;
8: se f( g) < f(g

) ento
9: g

g;
10: m se
11: m enquanto
12: Retorne g

;
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

;
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

, encontrada ao
longo da trajetria aplicada a s para chegar a g. Em caso armativo, atribui-se g
52 Marcone Jamilson Freitas Souza
a g

(linha 9). No incio do mtodo de reconexo por caminhos, atribui-se a g

a
melhor soluo dentre s e g (linha 2).
Quando a soluo corrente chega a g, o algoritmo de Reconexo por Caminhos pra
(linha 4 da Figura 26) e retorna a soluo g

(linha 12).
A Figura 27 ilustra o funcionamento da Reconexo por Caminhos em um problema de
programao de tripulaes (Crew Scheduling Problem). Nesta gura representa-se uma
soluo por uma matriz cujos elementos (1, . . . , 9) so tarefas a serem alocadas a jornadas
de trabalho. Cada linha da matriz constitue uma jornada de trabalho.
Figura 27: Mecanismo de intensicao Reconexo por Caminhos aplicado ao PPT
Para computar a diferena (s
1
, s
2
) entre as solues inicial e guia, vericado se cada
jornada da soluo guia est na soluo inicial. Para tornar este passo mais otimizado,
pode-se utilizar o seguinte esquema de comparao entre jornadas:
1. Compara-se, inicialmente, a funo de avaliao de cada jornada envolvida. Se forem
diferentes, conclui-se que as jornadas so diferentes. Caso contrrio, passa-se para o
passo seguinte;
2. Compara-se o nmero de tarefas de cada jornada envolvida. Se forem diferentes,
conclui-se que as jornadas so diferentes. Caso contrrio, analisa-se o passo seguinte;
3. Compara-se tarefa por tarefa de cada jornada envolvida. Se houver alguma tarefa
diferente, conclui-se que as jornadas so diferentes; caso contrrio, as jornadas so
iguais.
Aps ser computada a diferena entre as solues inicial e guia, incorpora-se na soluo
inicial cada jornada presente na diferena. A seguir xada a jornada adicionada e feita
a consistncia da soluo, eliminando-se as tarefas redundantes, confome ilustrado na
Figura 27(a). Cada soluo intermediria ento submetida a uma busca local mantendo-
se xa a jornada adicionada. O procedimento Reconexo por Caminhos prossegue com a
melhor soluo intermediria (Figura 27(b)). Como a soluo intermediria desse exemplo
Inteligncia Computacional para Otimizao 53
incorporou a segunda jornada da soluo guia, ento so analisadas a incorporao
soluo corrente da primeira e terceira jornadas da soluo guia. Retirada a redundncia
das solues e aplicada a busca local (mantendo-se xas as jornadas incorporadas), o
procedimento pra com a melhor das solues intermedirias encontradas.
Apresenta-se na Figura 28 o pseudocdigo dos principais blocos de um algoritmo Busca
Tabu com intensicao por Reconexo por Caminhos para um problema de minimizao.
Algoritmo BTRC
1: Entrada: f(.), N(.), A(.), [V [, f
min
, [T[, BTmax, s, IterAtivRC, IteracoesRC
2: s

s;
3: Iter 0;
4: MelhorIter 0;
5: T ;
6: ConjuntoElite ;
7: IterSemMelhora 0;
8: Inicialize a funo de aspirao A;
9: enquanto Critrio de parada no satisfeito faa
10: Iter Iter + 1;
11: Seja s

s m tal que o movimento m no seja tabu (m / T) ou f(s

) < A(f(s));
12: Atualize a lista tabu;
13: s s

;
14: se s deve pertencer ao conjunto de solues elite ento
15: Inserir s no ConjuntoElite;
16: m se
17: se (IterSemMelhora mod IterAtivRC < IteracoesRC) e (Iter IterAtivRC) ento
18: Escolher aleatoriamente g ConjuntoElite com probabilidade uniforme;
19: Atribuir a g

a melhor soluo obtida aplicando reconexo por caminhos ao par (s, g);
20: s g

;
21: m se
22: se g

deve pertencer ao conjunto de solues elite ento


23: Inserir g

no ConjuntoElite;
24: m se
25: se f(s) < f(s

) ento
26: s

s;
27: MelhorIter Iter;
28: IterSemMelhora 0;
29: seno
30: IterSemMelhora IterSemMelhora + 1;
31: m se
32: Atualize a funo de aspirao A;
33: m enquanto
34: s s

;
35: Retorne s;
Figura 28: Algoritmo Busca Tabu com Reconexo por Caminhos
Na Figura 28, IterAtivRC um parmetro que representa o nmero de iteraes sem
melhora da Busca Tabu a partir do qual deve-se acionar o procedimento Reconexo por
Caminhos e IteracoesRC indica quantas vezes o procedimento RC ser acionado.
54 Marcone Jamilson Freitas Souza
5.2 Princpio da Otimalidade Prxima
Pelo Princpio da Otimalidade Prxima (Proximate Optimality Principle), boas solues
em um nvel esto prximas de boas solues em um nvel adjacente [20].
Uma implementao deste princpio no contexto de uma heurstica construtiva consiste
em renar a soluo parcial periodicamente durante o processo de construo.
Por exemplo, considerando o Problema do Caixeiro Viajante, imagine que uma solu-
o parcial envolvendo 6 cidades seja s = (1 3 4 5). Ento, antes de prosseguir com a
escolha das duas cidades ainda no visitadas, a saber, as cidades 2 e 6, esta soluo parcial
deve ser renada por um mtodo qualquer, por exemplo, o mtodo da Descida. Assim, a
construo s prossegue aps o renamento, que, no caso, pode alterar a ordem de visita
das cidades previamente visitadas. Inserida a prxima cidade, feito outro renamento
e assim sucessivamente. Como o renamento aps cada insero pode ser custoso com-
putacionalmente, tambm comum aplic-lo a cada IterPOP inseres, sendo IterPOP
um parmetro para o procedimento. Outra estratgia comumente adotada consiste em
prosseguir com o renamento at que um percentual mximo de inseres seja atingido.
Por exemplo, no caso do PCV, far-se-iam as inseres seguidas de renamento at que
75% das cidades fossem inseridas. Aps esse percentual, a construo seguiria sem a fase
de renamento.
5.3 Relaxao Adaptativa
A Relaxao Adaptativa (tambm conhecida como Oscilao Estratgica) est intima-
mente ligada s origens da Busca Tabu [20]. Esta tcnica prov um meio de se alcanar
uma combinao entre intensicao e diversicao. Ela consiste em orientar movimen-
tos em relao a um nvel crtico, que pode ser identicado 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 inter-
rompido. Em vez de parar quando esta fronteira alcanada, as regras para selecionar
movimentos so modicadas para permitir que a regio denida pelo nvel crtico seja atra-
vessada. 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.
O processo de repetidamente abordar e atravessar o nvel crtico a partir de diferentes
direes cria um comportamento oscilatrio, o qual d o nome ao mtodo. O controle sobre
esse comportamento estabelecido por meio da gerao de avaliaes e regras modicadas
para os movimentos, dependendo da regio navegada e da direo da busca. A possibili-
dade de percorrer uma trajetria j visitada evitada por mecanismos tabu padres, tais
como aqueles estabelecidos pelas funes da memria de curto prazo.
Em [42] apresenta-se um mecanismo de relaxao adaptativa onde os pesos, para cada
fonte de inviabilidade da funo de avaliao, so ajustados dinamicamente como proposto
por [13]. Para cada fonte de inviabilidade i o peso w
i
multiplicado por um fator
i
que
varia de acordo com o seguinte esquema:
1. No incio da busca
i
1.
2. A cada k movimentos:
se todas as k solues visitadas so factveis em relao inviabilidade i ento

i

i
/;
Inteligncia Computacional para Otimizao 55
Figura 29: Oscilao Estratgica
se todas as k solues visitadas so infactveis em relao inviabilidade i ento

i

i
;
se algumas solues so factveis e algumas outras so infactveis ento
i
per-
manece inalterado.
O parmetro neste esquema randomicamente selecionado, a cada vez, no intervalo
[1, 8; 2, 2]. Em [13], deterministicamente xado no valor 2. Em [42] optou-se por
randomizar tal valor para evitar que escolhas determinsticas pudessem guiar a busca.
Cada valor de
i
limitado por duas constantes
i,min
e
i,max
. Isso implica que
se
i
assumir um valor superior a
i,max
, ento ele recebe o valor
i,max
. De maneira
semelhante, se
i
assumir um valor inferior a
i,min
, ele recebe o valor
i,min
. A limitao
do valor de
i
tem como objetivo no perder o referencial de avaliao das solues, fato
que ocorreria aps uma longa seqncia de solues infactveis ou factveis, em decorrncia
de valores muito altos ou muito baixos, respectivamente, para esse parmetro.
Na Figura 30 apresentado o pseudocdigo de um algoritmo Busca Tabu que faz
uso de um procedimento de Relaxao Adaptativa. O mtodo de Busca Tabu implemen-
tado interrompe a busca do melhor vizinho da soluo corrente em duas situaes: (1)
quando o vizinho gerado melhor que a melhor soluo gerada at ento (linha 11) e (2)
quando um vizinho no tabu melhor que a soluo corrente (linha 15). Nesta gura,
IteracaoAtualizacao() indica quando os pesos dinmicos devem ser atualizados.
56 Marcone Jamilson Freitas Souza
Algoritmo BTRA
1: s GerarSolucaoInicial();
2: s

s;
3: ListaTabu ;
4: repita
5: Selecione um subconjunto V da vizinhana corrente N;
6: melhorMovimento movimentoRandomico(V );
7: melhorCustoDinamico ;
8: para todo Movimento m V faa
9: se ( f(s m) < f(s

) ) ento
10: melhorMovimento m;
11: interromper;
12: seno
13: se (m / ListaTabu) ento
14: se ( f(s m) < f(s) ) ento
15: melhorMovimento m;
16: interromper;
17: seno
18: se (CustoPorPesosDinamicos(sm) < melhorCustoDinamico) ento
19: melhorMovimento m;
20: melhorCustoDinamico CustoPorPesosDinamicos(s m);
21: m se
22: m se
23: m se
24: m se
25: m para
26: s s melhorMovimento;
27: se f(s) < f(s

) ento
28: s

s;
29: m se
30: AtualizarListaTabu();
31: se IteracaoAtualizacao() ento AtualizarPesosDinamicos();
32: at que Critrio de parada seja alcanado;
33: s s

;
34: Retorne s;
Figura 30: Algoritmo de Busca Tabu com Relaxao Adaptativa
Inteligncia Computacional para Otimizao 57
Referncias
[1] S. Barnard. Stereo matching by hierarchical microcanonical annealing. In Proceedings
of the 10th International Joint Conference on Articial 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. Physical Review Letters,
50:14111414, 1983.
[6] F. Dammeyer and S. Vo. Dynamic tabu list management using the reverse elimina-
tion 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 Scientic Publications, London, 1993.
[12] T.A. Feo and M.G.C. Resende. Greedy randomized adaptive search procedures. Jour-
nal 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 Articial 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 Marcone Jamilson Freitas Souza
[17] F. Glover. Tabu Search and adaptive memory programming - advances, applicati-
ons and challenges. In R. Barr, R. Helgason, and J. Kennington, editors, Interfaces
in Computer Sciences and Operations Research, pages 175. Kluwer Academic Pu-
blishers, 1996.
[18] F. Glover and S. Hana. Tabu Search and Finite Convergence. Discrete Applied
Mathematics, 119:336, 2002.
[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 Scientic Publications, London, 1993.
[20] F. Glover and M. Laguna. Tabu Search. Kluwer Academic Publishers, Boston, 1997.
[21] F. Glover, M. Laguna, and R. Marti. Scatter Search and Path Relinking: Advan-
ces 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. Hana. On the Convergence of Tabu Search. Journal of Heuristics, 7:4758, 2001.
[25] P. Hansen. The steepest ascent mildest descent heuristic for combinatorial program-
ming. 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 Appli-
cations. 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 Articial 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 Tra-
veling Salesman Problem. International Journal of Modern Physics C, 9:133146,
1998.
[33] N. Mladenovi and P. Hansen. Variable Neighborhood Search. Computers and Ope-
rations Research, 24:10971100, 1997.
Inteligncia Computacional para Otimizao 59
[34] 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.
[35] 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.
[36] M. Prais and C.C. Ribeiro. Reactive GRASP: An application to a matrix decom-
position problem in TDMA trac assignment. INFORMS Journal on Computing,
12:164176, 2000.
[37] M. Prais and C.C. Ribeiro. Variao de Parmetros em Procedimentos GRASP.
Investigacin Operativa, 9:120, 2000.
[38] C.R. Reeves. Genetic Algorithms. In C.R. Reeves, editor, Modern Heuristic Te-
chniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 4, pages 151196. Blackwell Scientic Publications, 1993.
[39] 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.
[40] C.C. Ribeiro. Metaheuristics and Applications. In Advanced School on Articial
Intelligence, Estoril, Portugal, 1996.
[41] 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.
[42] A. Schaefer. Tabu search techniques for large high-school timetabling problems. In
Proceedings of the 30th National Conference on Articial Intelligence, pages 363368,
1996.
[43] B. Selman, H. Levesque, and D. Mitchell. A new method for solving hard satisability
problems. In Proceedings of the 10th National Conference on Articial Intelligence,
pages 440446, 1992.
[44] J.R.A. Torreo. Inteligncia Computacional. Notas de aula, Universidade Federal
Fluminense, Niteri, 2004.
[45] J.R.A. Torreo and E. Roe. Microcanonical Optimization Applied to Visual Proces-
sing. Physics Letters A, 122:377382, 1980.
[46] Christos Voudouris. Guided Local Search for Combinatorial Optimisation Problems.
Phd thesis, Department of Computer Science, University of Essex, 1997.

Vous aimerez peut-être aussi