Vous êtes sur la page 1sur 59

Inteligncia Computacional para Otimizao, Notas de aula, 2008/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.
Homepage: http://www.decom.ufop.br/prof/marcone, E-mail: marcone@iceb.ufop.br

Sumrio
1 Introduo

2 Heursticas Construtivas

3 Heursticas de Refinamento
3.1 Mtodo da Descida/Subida (Descent/Uphill Method)
3.2 Busca pelo Primeiro de Melhora . . . . . . . . . . .
3.3 Mtodo Randmico de Descida/Subida . . . . . . . .
3.4 Mtodo Randmico No Ascendente/Descendente . .
3.5 Descida em Vizinhana Varivel . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

9
10
12
13
14
14

4 Metaheursticas
4.1 Multi-Start . . . . . . . . . . . . . . . . .
4.2 Simulated Annealing . . . . . . . . . . . .
4.3 Busca Tabu . . . . . . . . . . . . . . . . .
4.4 GRASP . . . . . . . . . . . . . . . . . . .
4.5 Busca em Vizinhana Varivel . . . . . . .
4.6 Iterated Local Search . . . . . . . . . . . .
4.7 Guided Local Search . . . . . . . . . . . .
4.8 Algoritmos Genticos . . . . . . . . . . . .
4.8.1 Descrio genrica do mtodo . . .
4.8.2 Representao gentica de solues
4.8.3 Operador crossover clssico . . . .
4.8.4 Operador mutao clssico . . . .
4.8.5 Operadores crossover para o PCV
4.9 Scatter Search . . . . . . . . . . . . . . . .
4.10 Colnia de Formigas . . . . . . . . . . . .
4.11 Algoritmos Memticos . . . . . . . . . . .
4.12 Annealing Microcannico . . . . . . . . .
4.13 Otimizao Microcannica . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

15
16
17
21
27
29
30
31
32
32
33
35
35
35
42
43
46
46
47

5 Tcnicas especiais de intensificao


5.1 Reconexao por Caminhos . . . .
5.2 Princpio da Otimalidade Prxima
5.3 Relaxao Adaptativa . . . . . . .

e
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

diversificao
50
. . . . . . . . . . . . . . . . . . . . . . 50
. . . . . . . . . . . . . . . . . . . . . . 54
. . . . . . . . . . . . . . . . . . . . . . 54

Marcone Jamilson Freitas Souza

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 classificados na literatura
como NP-difceis, e assim, ainda no existem algoritmos que os resolvam em tempo polinomial.
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 dificuldade de soluo do PCV, assuma que a distncia de uma cidade
i outra j seja simtrica, isto , que dij = dji . 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
6 1016 rotas possveis. Assim, um computador que avalia uma rota em cerca de 108
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, suficiente 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. Definimos 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 desafio produzir, em tempo reduzido, solues to prximas quanto possvel da
soluo tima. Muitos esforos tm sido feitos nesta direo e heursticas muito eficientes foram desenvolvidas para diversos problemas. Entretanto, a maioria das heursticas
desenvolvidas muito especfica para um problema particular, no sendo eficientes (ou
mesmo aplicveis) na resoluo de uma classe mais ampla de problemas.
Somente a partir da dcada de 1980 intensificaram-se os estudos no sentido de se

Inteligncia Computacional para Otimizao

desenvolver procedimentos heursticos com uma certa estrutura terica e com carter mais
geral, sem prejudicar a principal caracterstica destes, que a flexibilidade.
Esta meta tornou-se mais realista a partir da reunio de conceitos das reas de Otimizao e Inteligncia Artificial, viabilizando a construo das chamadas melhores estratgias
ou dos mtodos inteligentemente flexveis, comumemente conhecidos como metaheursticas.
Esses mtodos, situados em domnios tericos ainda pouco explorados pela literatura,
possuem como caracterstica bsica estruturas com uma menor rigidez que as encontradas
nos mtodos clssicos de otimizao sem, contudo, emergir em uma flexibilidade catica.
Dentre os procedimentos enquadrados como metaheursticas que surgiram ao longo
das ltimas dcadas, destacam-se: Algoritmos Genticos (AGs), Redes Neurais, Simulated
Annealing (SA), Busca Tabu (BT), GRASP, VNS, Colnia de Formigas etc.
As duas primeiras metaheursticas fundamentam-se em analogias com processos naturais, sendo que os AGs so procedimentos inspirados em princpios da evoluo natural.
O SA explora uma possvel analogia com a termodinmica, enquanto a BT faz uso de
uma memria flexvel para tornar o processo de busca mais eficaz.
Estas notas de aula esto organizadas como segue. Na seo 2 so apresentadas as
heursticas construtivas, destinadas gerao de uma soluo inicial para um problema de
otimizao. Na seo 3 so apresentadas as heursticas clssicas de refinamento, destinadas
melhoria de uma soluo. Na seo 4 so apresentadas as principais metaheursticas
referenciadas na literatura e na ltima seo, tcnicas de intensificao e diversificao.

Heursticas Construtivas

Uma heurstica construtiva tem por objetivo construir uma soluo, elemento por elemento. A forma de escolha de cada elemento a ser inserido a cada passo varia de acordo
com a funo de avaliao adotada, a qual, por sua vez, depende do problema abordado.
Nas heursticas clssicas, os elementos candidatos so geralmente ordenados segundo uma
funo gulosa, que estima o benefcio da insero de cada elemento, e somente o melhor
elemento inserido a cada passo.
A Figura 1 mostra o pseudocdigo para a construo de uma soluo inicial para um
problema de otimizao que utiliza uma funo gulosa g(.). Nesta figura, tmelhor indica
o membro do conjunto de elementos candidatos com o valor mais favorvel da funo de
avaliao g, isto , aquele que possui o menor valor de g no caso de o problema ser de
minimizao ou o maior valor de g no caso de o problema ser de maximizao.
procedimento ConstrucaoGulosa(g(.), s);
1 s ;
2 Inicialize o conjunto C de elementos candidatos;
3 enquanto (C 6= ) faa
4
g(tmelhor ) = melhor{g(t) | t C};
5
s s {tmelhor };
6
Atualize o conjunto C de elementos candidatos;
7 fim-enquanto;
8 Retorne s;
fim ConstrucaoGulosa;
Figura 1: Heurstica de construo gulosa de uma soluo inicial

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 wj e um
valor de retorno (benefcio) pj . Considerando a existncia de uma unidade de cada objeto,
o objetivo determinar o conjunto de objetos que devem ser colocados na mochila de
forma a maximizar o valor de retorno respeitando a capacidade da mochila.
Seja, ento, uma mochila de capacidade b = 23 e os 5 objetos da tabela a seguir, com
os respectivos pesos e benefcios.
Objeto (j)
Peso (wj )
Benefcio (pj )

1
4
2

2
5
2

3
7
3

4
9
4

5
6
4

Para construir uma soluo adicionemos mochila a cada passo, o objeto mais valioso
que no ultrapasse a capacidade da mochila. Em caso de empate, escolheremos o objeto
com menor peso. Reordenando os objetos de acordo com este critrio, obtemos:
Objeto (j)
Peso (wj )
Benefcio (pj )

5
6
4

4
9
4

3
7
3

1
4
2

2
5
2

Representemos uma soluo s por um vetor binrio de n posies.


Passo 1 : Adicionemos, primeiramente, o objeto 5, que traz o maior benefcio pj , 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 pj
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 p3 o maior dentre os valores de retorno p3 , p2 e p1
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 pj 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 final, 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

aleatoriamente selecionado dentre o conjunto de elementos candidatos ainda no selecionados. A grande vantagem desta metodologia reside na simplicidade de implementao.
Segundo testes empricos, a desvantagem a baixa qualidade da soluo final produzida,
que em geral requer um maior esforo computacional na fase de refinamento.
A Figura 2 mostra o pseudocdigo para a construo de uma soluo inicial aleatria
para um problema de otimizao.
procedimento ConstrucaoAleatoria(g(.), s);
1 s ;
2 Inicialize o conjunto C de elementos candidatos;
3 enquanto (C 6= ) faa
4
Escolha aleatoriamente tescolhido C;
5
s s {tescolhido };
6
Atualize o conjunto C de elementos candidatos;
7 fim-enquanto;
8 Retorne s;
fim ConstrucaoAleatoria;
Figura 2: Heurstica de construo aleatria de uma soluo inicial
Ilustremos, agora, aplicaes de heursticas construtivas para o Problema do Caixeiro
Viajante. Sero apresentadas trs heursticas: (a) Heurstica do Vizinho Mais Prximo;
(b) Heurstica de Nemhauser e Bellmore e (c) Heurstica da Insero Mais Barata.
As heursticas sero ilustradas considerando um exemplo com 6 cidades e as distncias
dadas pela tabela a seguir:
Cidade
1
2
3
4
5
6

1
0
2
1
4
9
1

2
2
0
5
9
7
2

3
1
5
0
3
8
6

4
4
9
3
0
2
5

5
9
7
8
2
0
2

6
1
2
6
5
2
0

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

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 final destes 6 passos, teremos produzido a soluo s = (1 3 4 5 6 2). Para esta
soluo, a distncia total percorrida :
dist = d13 + d34 + d45 + d56 + d62 + d21 = 1 + 3 + 2 + 2 + 2 + 2 = 12.
Complexidade da Heurstica do Vizinho Mais Prximo:
Iterao
1
2

n1
Total

# operaes
n1
n2

1
1 + 2 + + n 1

Observaes
H n 1 ligaes para serem analisadas
H n 2 ligaes para serem analisadas
H apenas uma cidade ainda no visitada
= n(n 1)/2 operaes

A soma anterior uma Progresso Aritmtica cujo primeiro elemento 1, ltimo


elemento n 1, a razo igual
de termos n 1. A soma dos termos
a 1 e o nmero

vale S = a1 +a2nelem nelem = 1+(n1)


(n

1)
= n(n 1)/2
2
(b) Heurstica de Bellmore e Nemhauser:
Nesta heurstica, adicionamos rota corrente a cidade k ainda no visitada que esteja
mais prxima dos extremos da subrota, isto , a cidade k se liga a uma cidade que
esteja em uma extremidade da subrota ou outra extremidade.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, tem-se:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor
(A cidade 6 dista de mesmo valor, e tambm poderia ser escolhida em lugar da
cidade 3).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 6 a que menos
dista de um extremo da rota (cidade 1) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d61 = 1 < d34 = 3, ento a cidade
6 a escolhida e deve ser conectada cidade 1, isto , a rota corrente passa a ser:
s = (6 1 3).
iii) Passo 3: Das cidades ainda no visitadas (2, 4 e 5), a cidade 2 a que menos
dista de um extremo da rota (cidade 6) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d26 = 2 < d34 = 3, ento a cidade
2 a escolhida e deve ser conectada cidade 6, isto , a rota corrente passa a
ser: s = (2 6 1 3). A cidade 5 tambm poderia ter sido escolhida para se
conectar cidade 6, pois tem a mesma distncia da cidade 2 cidade 6.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), a cidade 5 a que menos dista
de um extremo da rota (cidade 2) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d34 = 3 < d52 = 7, ento a cidade
4 a escolhida e deve ser conectada cidade 3, isto , a rota corrente passa a ser:
s = (2 6 1 3 4).

Inteligncia Computacional para Otimizao

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 final destes 6 passos, teremos produzido a soluo s = (2 6 1 3 4 5). Para esta
soluo, a distncia total percorrida :
dist = d26 + d61 + d13 + d34 + d45 + d52 = 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 skij dado pela frmula abaixo seja a menor possvel.
skij = dik + dkj dij
As figuras 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 cidade inserida), adicione a cidade ainda no visitada cuja soma das distncias s duas
extremidades seja a menor.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, constri-se
uma soluo com os seguintes passos:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor (A
cidade 6 tambm tem mesma distncia, e tambm poderia ser escolhida).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 2 a aquela cuja
distncia s cidades extremas 1 e 3 a menor, no caso, d21 + d32 = 2 + 5 = 7.
Ento, a cidade 2 a escolhida e deve ser conectada s cidades 3 e 2, isto , a

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) = d13 + d32 + d21 = 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
1
1
1
3
3
3
2
2
2

k
4
5
6
4
5
6
4
5
6

j
3
3
3
2
2
2
1
1
1

skij = dik + dkj dij


s413 = 4 + 3 - 1 = 6
s513 = 9 + 8 - 1 = 16
s613 = 1 + 6 - 1 = 6
s432 = 3 + 9 - 5 = 7
s532 = 8 + 7 - 5 = 7
s632 = 6 + 2 - 5 = 3
s421 = 9 + 4 - 2 = 11
s521 = 7 + 9 - 2 = 14
s621 = 2 + 1 - 2 = 1

Como o menor custo de insero s621 , ento a cidade 6 deve ser inserida entre
as cidades 2 e 1. Logo, a subrota corrente passa a ser: s = (1 3 2 6). A
distncia associada a esta subrota : d(s) = d(s)anterior + s621 = 8 + 1 = 9.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), calculemos o custo de insero
entre todas as cidades i e j da subrota corrente. A tabela a seguir mostra os
custos de insero.
i
1
1
3
3
2
2
6
6

k
4
5
4
5
4
5
4
5

j
3
3
2
2
6
6
1
1

skij = dik + dkj dij


s413 = 4 + 3 - 1 = 6
s513 = 9 + 8 - 1 = 16
s432 = 3 + 9 - 5 = 7
s532 = 8 + 7 - 5 = 7
s426 = 9 + 5 - 2 = 12
s526 = 7 + 2 - 2 = 7
s461 = 5 + 4 - 1 = 8
s561 = 2 + 9 - 1 = 10

Como o menor custo de insero s413 , ento a cidade 4 deve ser inserida entre as
cidades 1 e 3. Logo, a subrota corrente passa a ser: s = (1 4 3 2 6).
A distncia associada a esta subrota : d(s) = d(s)anterior + s413 = 9 + 6 = 15.
v) Passo 5: A nica cidade ainda no visitada a cidade 5. A tabela a seguir mostra
os custos de insero desta cidade entre todas as arestas da subrota corrente.
i
1
4
3
2
6

k
5
5
5
5
5

j
4
3
2
6
1

skij = dik + dkj dij


s514 = 9 + 2 - 4 = 7
s543 = 2 + 8 - 3 = 7
s532 = 8 + 7 - 5 = 10
s526 = 7 + 2 - 2 = 7
s561 = 2 + 9 - 1 = 10

Como o menor custo de insero s514 , ento a cidade 5 deve ser inserida entre
as cidades 1 e 4. Logo, a rota resultante : s = (1 5 4 3 2 6). A
distncia associada a esta rota : d(s) = d(s)anterior + s514 = 15 + 7 = 22.

Inteligncia Computacional para Otimizao

Heursticas de Refinamento

As heursticas de refinamento em problemas de otimizao, tambm chamadas de tcnicas


de busca local, constituem uma famlia de tcnicas baseadas na noo de vizinhana. Mais
especificamente, 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 s0 N (s)
chamada de vizinho de s. Denomina-se movimento a modificao m que transforma uma
soluo s em outra, s0 , que esteja em sua vizinhana. Representa-se esta operao por
s0 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 definio 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, s0 ), com s0 N (s).
A definio de vizinhana crucial em uma heurstica de refinamento. De uma soluo
s do espao de solues deve ser sempre possvel atingir qualquer outra soluo em um
nmero finito 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 definssimos 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 ficaria 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 solues 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 programao 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, dificilmente
geraramos quadros de horrios sem situaes de sobreposio. Relaxando-se estas restries e penalizando-as na funo de avaliao, torna-se muito mais eficiente a explorao
do espao de busca [28].
Exemplifiquemos, 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 si . Com o
movimento m de troca de posio entre duas cidades definimos a estrutura de vizinhana
N (T ) . Assim s = (s1 s2 s3 sn )t tem como vizinhos em N (T ) (s) as seguintes solues:
s(1) = (s2 s1 s3 sn )t , s(2) = (s3 s2 s1 sn )t , , s(n1) = (sn s2 s3 s1 )t ,
s(n) = (s1 s3 s2 sn )t , , s(n(n1)/2) = (s1 s2 s3 sn sn1 )t . Por outro lado, considerando como movimento m a realocao de uma cidade de uma posio na seqncia de
visita para outra, definimos a estrutura de vizinhana N (R) . Nesta estrutura, so vizinhos

10

Marcone Jamilson Freitas Souza

de s = (s1 s2 s3 sn1 sn )t as seguintes solues: s(1) = (s2 s1 s3 sn1 sn )t ,


s(2) = (s2 s3 s1 sn1 sn )t , , s(n2) = (s2 s3 sn1 s1 sn )t , s(n1) =
(s2 s3 sn1 sn s1 )t , s(n) = (s1 s3 s2 sn1 sn )t , s(n+1) = (s1 s3 s4 s2 sn1 sn )t ,
, s(2n4) = (s1 s3 s4 sn1 s2 sn )t , s(2n3) = (s1 s3 s4 sn1 sn s2 )t , ,
2
s(2n5) = (s1 s3 s2 s4 sn1 sn )t , , s(n2) (n1) = (s1 s2 s3 s4 sn sn1 )t .
Poderamos, tambm, definir 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 movimento 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,
0
0
0
teramos os seguintes vizinhos para s: s1 = (1 4 3 2)t , s2 = (4 2 3 1)t , s3 = (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, finalmente,
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 refinamento, enquanto na
seo 3.5 apresentada uma heurstica de refinamento mais sofisticada, 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 = {s0 N (s) | f (s0 ) < f (s)};
2 enquanto (|V | > 0) faa
3
Selecione s0 V , onde s0 = arg min{f (s0 ) | s0 V };
4
s s0 ;
5
V = {s0 N (s) | f (s0 ) < f (s)};
6 fim-enquanto;
7 Retorne s;
fim Descida;
Figura 3: Mtodo da Descida
Para o problema da mochila, representemos uma soluo s por um vetor binrio de
n posies e consideremos como movimento m a troca do valor de um bit. Assim, a
vizinhana de uma soluo s, e se escreve N (s), o conjunto de todos os vizinhos s0 que
diferem de s pelo valor de um bit. Formalmente, representamos N (s) = {s0 : s0 s m},
onde m significa a troca do valor de um bit. necessrio, agora, definir uma funo de
avaliao. Considerando que se deseja maximizar o valor de retorno trazido pela utilizao
de cada item, uma funo de avaliao apropriada seria:

Inteligncia Computacional para Otimizao

f (s) =

n
X

11

pj sj max{0,

j=1

sendo uma penalidade, por exemplo, =

n
X

wj sj b}

(31)

j=1
n
P
j=1

pj = 15.

Observe que o objetivo da segunda parcela desta 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
suficientemente grande para atender a este objetivo.
Apliquemos esta heurstica instncia do problema dado:
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 (31).
Vizinhos de s
(11010)t
(00010)t
(01110)t
(01000)t
(01011)t

Peso dos vizinhos de s


18
9
21
5
20

Benefcio dos vizinhos de s


8
4
9
2
10

f (s0 )
8
4
9
2
10

Melhor vizinho: s0 = (01011)t


f (s0 ) = 10
Como s0 melhor que s, pois f (s0 ) > f (s), ento s s0 , isto , a nova soluo
corrente passa a ser:
s = (01011)t
Passo 2 : Determinemos, agora, o melhor vizinho de s = (01011)t :
Vizinhos de s
(11011)t
(00011)t
(01111)t
(01001)t
(01010)t

Peso dos vizinhos de s


24
15
27
11
14

Benefcio dos vizinhos de s


12
8
13
6
6

f (s0 )
-3
8
-47
6
6

Melhor vizinho: s0 = (00011)t


f (s0 ) = 8
Como f (s0 ) pior que f (s), pois f (s0 ) < 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 final.

12

Marcone Jamilson Freitas Souza

importante observar que diferentes solues iniciais conduzem, na maioria das vezes,
a diferentes solues finais. A Figura 4, em que s indica um ponto de partida e s um timo
local encontrado a partir da aplicao do Mtodo da Descida a s, ilustra esta situao.

c
u
s
t
o
s
s

s*

s*

s*

Espao de solues

Figura 4: Representao esquemtica do funcionamento do Mtodo da Descida


Uma outra funo de avaliao que poderia ser considerada em substituio da frmula (31) a seguinte:
f (s) =

n
X

pj sj f1 (s)

(32)

j=1

sendo f1 (s) =

se

se

n
P
j=1
n
P
j=1

wj sj b > 0
wj sj b 0

e uma penalidade, definida como antes, por exemplo, =

n
P
j=1

pj = 15.

Nesta formulao no se faz diferena entre o nvel de inviabilidade, pois qualquer que
seja o excesso de peso na mochila, a penalizao a mesma. Esta modelagem pode dificultar a explorao do espao de solues, pois conduz a regies planas, ditas plats, regies
nas quais as heursticas tm dificuldade para escapar. Em [30] os autores argumentam que
uma forma comum de evitar esta topologia no espao de busca adicionar componentes
funo de avaliao de forma a discriminar solues que teriam o mesmo valor da funo
custo original. Assim, no exemplo mencionado da mochila, das duas funes de avaliao
apresentadas, a mais adequada para guiar a busca a da frmula (31).

3.2

Busca pelo Primeiro de Melhora

O mtodo de descida/subida requer a explorao de toda a vizinhana. Um mtodo


alternativo, que evita esta pesquisa exaustiva e muito utilizado na literatura a Busca
pelo Primeiro de Melhora, ou Mtodo Primeiro de Melhora (First Improvement Method ).
Nesta variante, interrompe-se a explorao da vizinhana quando um vizinho melhor
encontrado. Desta forma, apenas no pior caso, toda a vizinhana explorada. Entretanto,

Inteligncia Computacional para Otimizao

13

tal como no mtodo da descida/subida, este mtodo fica preso no primeiro timo local
encontrado.
Neste mtodo, desejvel que a ordem de explorao das solues vizinhas seja alterada a cada passo. Do contrrio, privilegia-se apenas um caminho determinstico no
espao de solues. Por exemplo, em um problema de programao de tripulaes, imagine que um movimento consista em realocar uma tarefa de uma tripulao para outra
tripulao. Se a cada passo, a ordem de explorao das solues vizinhas comear com a
movimentao da primeira tarefa do primeiro tripulante para o segundo tripulante, depois
para o terceiro, a seguir para o quarto e assim sucessivamente, ento os tripulantes iniciais
sero privilegiados. Para evitar isso, uma alternativa de soluo utilizar uma seqncia
diferente de tripulaes a cada iterao do mtodo. Assim, na primeira iterao do mtodo poder-se-ia usar uma seqncia de tripulantes, por exemplo, (1, 2, 3, 4, , n); outra
seqncia diferente na segunda iterao, por exemplo, (7, 4, 1, 9, ) e assim por diante.

3.3

Mtodo Randmico de Descida/Subida

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
Randmico de Descida/Subida (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 fixo 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 final seja um timo local.
Na Figura 5 mostra-se o pseudocdigo do Mtodo Randmico de Descida aplicado
ao refinamento de uma soluo s em um problema de minimizao de uma funo f (.),
utilizando uma estrutura de vizinhana N (.). Nesta figura, IterMax representa o nmero
mximo de iteraes sem melhora no valor da funo de avaliao.
procedimento RandomicoDescida(f (.), N (.), IterMax, s);
1 Iter 0;
{Contador de iteraes sem melhora }
2 enquanto (Iter < IterMax) faa
3
Iter Iter + 1;
4
Selecione aleatoriamente s0 N (s);
5
se (f (s0 ) < f (s)) ento
6
Iter 0;
7
s s0 ;
8
fim-se;
9 fim-enquanto;
10 Retorne s;
fim RandomicoDescida;
Figura 5: Mtodo Randmico de Descida

14

3.4

Marcone Jamilson Freitas Souza

Mtodo Randmico No Ascendente/Descendente

O mtodo randmico no ascendente (RNA) (respectivamente, Mtodo Randmico No


Descendente - RND) uma variante do mtodo randmico de descida (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 fixo de
iteraes sem melhora no valor da melhor soluo produzida.
Por este mtodo possvel navegar pelo espao de busca por movimentos laterais [44].
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
randmico de descida, no h garantia de que a soluo final 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 [34], um mtodo de refinamento 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 refinamento 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.
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 s0 N (k) (s);
5
se (f (s0 ) < f (s))
6
ento
7
s s0 ;
8
k 1;
9
seno
10
k k + 1;
11
fim-se;
12 fim-enquanto;
13 Retorne s;
fim VND;
Figura 6: Algoritmo VND
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 primeira soluo de melhora (vide o mtodo da seo 3.2, pgina 12). 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,

Inteligncia Computacional para Otimizao

15

aplicar o Mtodo Randmico de Descida (vide seo 3.3, pgina 13), para cada vizinhana
explorada.
Segundo os autores, o mtodo VND baseia-se em trs princpios bsicos:
Um timo local com relao a uma dada estrutura de vizinhana no corresponde
necessariamente a um timo local com relao a uma outra estrutura de vizinhana;
Um timo global corresponde a um timo local para todas as estruturas de vizinhana;
Para muitos problemas, timos locais com relao a uma ou mais estruturas de
vizinhana so relativamente prximas.
Ainda de acordo os autores, o ltimo princpio, de natureza emprica, indica que um
timo local freqentemente fornece algum tipo de informao sobre o timo global. Este
o caso em que os timos local e global compartilham muitas variveis com o mesmo valor,
o que sugere uma investigao sistemtica da vizinhana de um timo local at a obteno
de uma nova soluo de melhor valor.

Metaheursticas

As metaheursticas so procedimentos destinados a encontrar uma boa soluo, eventualmente a tima, consistindo na aplicao, em cada passo, de uma heurstica subordinada,
a qual tem que ser modelada para cada problema especfico [41].
Contrariamente s heursticas convencionais, as metaheursticas so de carter geral e
providas de mecanismos para tentar escapar de timos locais ainda distantes dos timos
globais.
As metaheursticas diferenciam-se entre si basicamente pelo mecanismo usado para sair
das armadilhas dos timos locais. Elas se dividem em duas categorias, de acordo com o
princpio usado para explorar o espao de solues: busca local e busca populacional.
Nas metaheursticas baseadas em busca local, a explorao do espao de solues feita
por meio de movimentos, os quais so aplicados a cada passo sobre a soluo corrente,
gerando outra soluo promissora em sua vizinhana. Busca Tabu, Simulated Annealing,
Busca em Vizinhana Varivel (Variable Neighborhood Search) e Iterated Local Search so
exemplos de mtodos que se enquadram nesta categoria.
Os mtodos baseados em busca populacional, por sua vez, consistem em manter um
conjunto de boas solues e combin-las de forma a tentar produzir solues ainda melhores. Exemplos clssicos de procedimentos desta categoria so os Algoritmos Genticos, os
Algoritmos Memticos e o Algoritmo Colnia de Formigas.
Apresentamos, a seguir, as principais metaheursticas referenciadas na literatura.

16

4.1

Marcone Jamilson Freitas Souza

Multi-Start

A metaheurstica Multi-Start consiste em fazer amostragens do espao de solues, aplicando a cada soluo gerada um procedimento de refinamento. As amostras so obtidas
por meio da gerao de solues aleatrias. Com este procedimento, h uma diversificao no espao de busca, possibilitando escapar dos timos locais. A grande vantagem do
mtodo que ele de fcil implementao.
Na Figura 7 apresenta-se o pseudocdigo de um procedimento Multi-Start bsico para
um problema de minimizao. Um nmero mximo de iteraes ou um tempo mximo de
processamento normalmente utilizado como critrio de parada.
procedimento M ultiStart(f (.), N (.), CriterioP arada, s)
1 f ? ;
{Valor associado a s? }
2 enquanto (Critrio de parada no atendido) faa
3
s ConstruaSolucao(); {Gere uma soluo s do espao de solues}
4
s BuscaLocal(s);
{Aplique um procedimento de melhora em s}
5
se (f (s) < f (s? )) ento
6
s? s;
7
f ? f (s);
8
fim-se;
9 fim-enquanto;
10 s s? ;
11 Retorne s;
fim M ultiStart;
Figura 7: Metaheurstica Multi-Start
Uma variao comum no procedimento Multi-Start consiste em partir de uma soluo
inicial gerada por um procedimento construtivo guloso. Assim, na Figura 7 cria-se uma
linha 0 e substitui-se a linha 1, tal como se segue:
0 s? ConstruaSolucaoGulosa(); {Melhor soluo at ento}
1 f ? f (s? );
{Valor associado a s? }
O procedimento ContruaSolucaoGulosa() encontra-se descrito na Figura 1, pgina
3 destas notas de aula.

Inteligncia Computacional para Otimizao

4.2

17

Simulated Annealing

Trata-se de uma tcnica de busca local probabilstica, proposta originalmente por Kirkpatrick et al. [31], que se fundamenta em uma analogia com a termodinmica, ao simular o
resfriamento de um conjunto de tomos aquecidos, operao conhecida como recozimento
[11].
Esta tcnica comea sua busca a partir de uma soluo inicial qualquer. O procedimento principal consiste em um loop que gera aleatoriamente, em cada iterao, um nico
vizinho s0 da soluo corrente s.
Considerando um problema de minimizao, seja a variao de valor da funo
objetivo ao mover-se para uma soluo vizinha candidata, isto , = f (s0 ) f (s). O
mtodo aceita o movimento e a soluo vizinha passa a ser a nova soluo corrente se
< 0. Caso 0 a soluo vizinha candidata tambm poder ser aceita, mas neste
caso, com uma probabilidade e/T , onde T um parmetro do mtodo, chamado de
temperatura e que regula a probabilidade de se aceitar solues de pior custo.
A temperatura T assume, inicialmente, um valor elevado T0 . Aps um nmero fixo
de iteraes (o qual representa o nmero de iteraes necessrias para o sistema atingir o
equilbrio trmico em uma dada temperatura), a temperatura gradativamente diminuda
por uma razo de resfriamento , tal que Tk Tk1 , sendo 0 < < 1. Com esse procedimento, d-se, no incio uma chance maior para escapar de mnimos locais e, medida
que T aproxima-se de zero, o algoritmo comporta-se como o mtodo
de descida, uma vez

que diminui a probabilidade de se aceitar movimentos de piora T 0 = e/T 0


A Figura 8 mostra a influncia 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, fixado em uma unidade. Observe que no incio
do processo, quando a temperatura elevada, a funo de probabilidade assume valores
prximos unidade, enquanto que no final do processo, quando a temperatura se aproxima
de zero, o valor da funo de probabilidade tambm se aproxima de zero.
exp(1/T)
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1

Temperatura T

0
0

10

20

30

40

50

Figura 8: Comportamento da funo de probabilidade


O procedimento pra quando a temperatura chega a um valor prximo de zero e nenhuma 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 T0 .
Apresenta-se, pela Figura 9, o algoritmo Simulated Annealing bsico aplicado a um
problema de minimizao.
procedimento SA(f (.), N (.), , SAmax, T0 , s)
1 s? s;
{Melhor soluo obtida at ento}
2 IterT 0;
{Nmero de iteraes na temperatura T}
3 T T0 ;
{Temperatura corrente}
4 enquanto (T > 0) faa
5
enquanto (IterT < SAmax) faa
6
IterT IterT + 1;
7
Gere um vizinho qualquer s0 N (s);
8
= f (s0 ) f (s);
9
se ( < 0)
10
ento
11
s s0 ;
12
se (f (s0 ) < f (s? )) ento s? s0 ;
13
seno
14
Tome x [0, 1];
15
se (x < e/T ) ento s s0 ;
16
fim-se;
17
fim-enquanto;
18
T T;
19
IterT 0;
20 fim-enquanto;
21 s s? ;
22 Retorne s;
fim SA;
Figura 9: Algoritmo Simulated Annealing
Observamos que no caso de o problema ser de maximizao, as seguintes modificaes
devem ser feitas na Figura 9: Na linha 9, considerar que > 0; na linha 12, substituir
pelo teste (f (s0 ) > f (s? )) e, finalmente, na linha 15, substituir por (x < e/T ).
Dependendo do processo de resfriamento, pode ser mostrada a convergncia do mtodo
a uma soluo que seja globalmente tima [11]. Para tal, a temperatura na iterao k do
mtodo, dada por Tk , deve ser calculada com base na expresso (43):
Tk =

c
ln(1 + k)

(43)

em que c da ordem do valor do timo local mais profundo (no caso de o problema
ser de minimizao) ou mais elevado (no caso de o problema ser de maximizao). A
convergncia garantida quando k .
Tal resultado, entretanto, de utilidade prtica restrita, uma vez que o resfrimento
muito lento, requerendo um nmero proibitivo de iteraes do mtodo.
H vrias outras formas de fazer o resfriamento, alm do geomtrico. Uma alternativa
fazer o decaimento da temperatura por meio da expresso (44):

Inteligncia Computacional para Otimizao

Tk =

Tk1
p
k 1
1 + Tk1

19

(44)

em que Tk 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 [35], consiste em fazer o resfriamento por meio da expresso:

Tk1
se k = 1
Tk =
(45)
T
k1

se
k

2
1 + Tk1
T0 Tk1
, T0 a temperatura inicial, Tk a temperatura na k-sima iterao
sendo = (k1)T
0 Tk1
e um parmetro para corrigir a imperfeio do resfriamento (0 < < 1). Igualmente,
valores de prximos a zero indicam resfriamento muito lento.
Algoritmos baseados em SA normalmente incluem reaquecimento, seguido de novo
resfriamento, quando a quantidade de movimentos consecutivamente rejeitados alta [11].
comum, tambm, trabalhar nas temperaturas mais altas com uma taxa de resfriamento
menor e aument-la quando a temperatura reduzir-se.
A estimao do nmero mximo de iteraes em uma dada temperatura, isto , SAmax,
normalmente feita em funo das dimenses do problema tratado. Por exemplo, em um
problema de programao de horrios em escolas (school timetabling), envolvendo n turmas, m professores e p horrios reservados para a realizao das aulas, o valor de SAmax
pode ser estimado em SAmax = k p m n, sendo k uma constante a determinar.
J em um problema de programao de tripulaes (crew scheduling) envolvendo ntrip
tripulantes e ntarefas tarefas, SAmax estimado em SAmax = k ntrip ntarefas.
H pelo menos duas prescries para a determinao autoadaptativa da temperatura
inicial: por simulao ou pelo custo das solues.
A primeira delas consiste em determinar a temperatura inicial por simulao. Por
este mecanismo, parte-se de uma soluo s e de uma temperatura de partida baixa. A
seguir, contam-se quantos vizinhos desta soluo s so aceitos em SAmax iteraes do
mtodo nesta temperatura. Caso esse nmero de vizinhos aceitos seja elevado, algo como
95% dos vizinhos, ento retorna-se a temperatura corrente como a temperatura inicial
para o processo de refinamento pelo mtodo. Caso o nmero de vizinhos aceitos no
atinja o valor mnimo requerido, aumenta-se a temperatura segundo uma certa taxa, por
exemplo 10%, e repete-se a contagem do nmero de vizinhos aceitos naquela temperatura.
O procedimento prossegue at que se obtenha o nmero mnimo de vizinhos aceitos. A
temperatura na qual esta condio ocorre representa a temperatura inicial para o mtodo
Simulated Annealing. A Figura 10 mostra o pseudocdigo para determinar a temperatura
inicial por este mtodo, considerando um problema de minimizao. Nesta figura, a
taxa de aumento da temperatura ( > 1), a taxa mnima de aceitao de solues
vizinhas (por exemplo, = 0.95) e T0 uma temperatura de partida para o mtodo, por
exemplo, T0 = 1.
Outra prescrio para determinar a temperatura inicial consiste em partir de uma dada
soluo e gerar todos os seus possveis vizinhos ou uma frao destes. Para cada um desses
vizinhos, calcular o respectivo custo segundo a funo de avaliao considerada. Repetir
este procedimento para outros pontos iniciais, j que dependendo da soluo inicial o custo
das solues vizinhas pode ser diferente. O maior custo encontrado uma estimativa para
a temperatura inicial.

20

Marcone Jamilson Freitas Souza

procedimento T emperaturaInicial(f (.), N (.), , , SAmax, T0 , s)


1 T T0 ;
{Temperatura corrente}
2 Continua T RU E;
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 s0 N (s);
7
= f (s0 ) 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
fim-se;
15
fim-para;
16
se (Aceitos SAmax)
17
ento Continua F ALSE;
18
seno T T ;
19
fim-se;
20 fim-enquanto;
21 Retorne T ;
fim T emperaturaInicial;
Figura 10: Determinao autoadaptativa da temperatura inicial
Em teoria, a temperatura final deve ser zero. Entretanto, na prtica suficiente chegar
a uma temperatura prxima de zero, devido preciso limitada da implementao computacional [45]. Um valor tpico tomar Tf = 0, 001. Alternativamente, pode-se identificar
o congelamento do sistema quando a taxa de aceitao de movimentos ficar abaixo de um
valor predeterminado.
Observa-se, finalmente, como regra geral, que os parmetros mais adequados para uma
dada aplicao do algoritmo s podem ser estabelecidos por experimentao [45].

Inteligncia Computacional para Otimizao

4.3

21

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 estratgia, juntamente com uma estrutura de memria para armazenar as solues geradas (ou
caractersticas destas) permite que a busca no fique presa em um timo local.
Mais especificamente, comeando com uma soluo inicial s0 , um algoritmo BT explora,
a cada iterao, um subconjunto V da vizinhana N (s) da soluo corrente s. O membro
s0 de V com melhor valor nesta regio segundo a funo f (.) torna-se a nova soluo
corrente mesmo que s0 seja pior que s, isto , que f (s0 ) > 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 soluo j gerada 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 fila
de tamanho fixo, 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, ficam
excludos da busca os vizinhos s0 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 s0 em V pode
ser gerada se f (s0 ) < 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
suficientemente 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 BT max, 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, fmin o valor mnimo conhecido da
funo f , informao esta que em alguns casos est disponvel.
procedimento BT (f (.), N (.), A(.), |V |, fmin , |T |, BT max, s)
1 s? s;
{Melhor soluo obtida at ento}
2 Iter 0;
{Contador do nmero de iteraes}
3 M elhorIter 0; {Iterao mais recente que forneceu s? }
4 T ;
{Lista Tabu}
5 Inicialize a funo de aspirao A;
6 enquanto (f (s) > fmin e Iter M elhorIter BT max) faa
7
Iter Iter + 1;
8
Seja s0 s m o melhor elemento de V N (s) tal que
o movimento m no seja tabu (m 6 T ) ou
s0 atenda a condio de aspirao (f (s0 ) < A(f (s)));
9
Atualize a lista tabu T ;
10
s s0 ;
11
se (f (s) < f (s? )) ento
12
s? s;
13
M elhorIter Iter;
14
fim-se;
15
Atualize a funo de aspirao A;
16 fim-enquanto;
17 s s? ;
18 Retorne s;
fim BT ;
Figura 11: Algoritmo de Busca Tabu
comum em mtodos de Busca Tabu incluir estratgias de intensificao, as quais
tm por objetivo concentrar a pesquisa em determinadas regies consideradas promissoras.
Uma estratgia tpica retornar uma soluo j visitada para explorar sua vizinhana
de forma mais efetiva. Outra estratgia consiste em incorporar atributos das melhores
solues j encontradas durante o progresso da pesquisa e estimular componentes destas solues a tornar parte da soluo corrente. Nesse caso, so consideradas livres no
procedimento de busca local apenas as componentes no associadas s boas solues, permanecendo as demais componentes fixas. Um critrio de trmino, tal como um nmero
fixo de iteraes, utilizado para encerrar o perodo de intensificao. Na seo 5.1, pgina
50, detalha-se um procedimento de intensificao, a Reconexo por Caminhos, mecanismo
que comumente associado a implementaes Busca Tabu.
Mtodos baseados em Busca Tabu incluem, tambm, estratgias de diversificao. O
objetivo destas estratgias, que tipicamente utilizam uma memria de longo prazo, redirecionar a pesquisa para regies ainda no suficientemente exploradas do espao de
solues. Estas estratgias procuram, ao contrrio das estratgias de intensificao, gerar
solues que tm atributos significativamente diferentes daqueles encontrados nas melhores solues obtidas. A diversificao, em geral, utilizada somente em determinadas
situaes, como, por exemplo, quando dada uma soluo s, no existem movimentos m
de melhora para ela, indicando que o algoritmo j exauriu a anlise naquela regio. Para
escapar desta regio, a idia estabelecer uma penalidade w(s, m) para uso desses movi-

Inteligncia Computacional para Otimizao

23

mentos. Um nmero fixo de iteraes sem melhora no valor da soluo tima corrente ,
em geral, utilizado para acionar estas estratgias. Na seo 5.3, pgina 54, detalha-se um
procedimento de diversificao, a Relaxao Adaptativa.
Mtodos de Busca Tabu incluem, tambm, listas tabu dinmicas [6, 43], muitas das
quais atualizadas de acordo com o progresso da pesquisa [4, 3, 2]. A grande vantagem de se
usar uma lista tabu de tamanho dinmico que se minimiza a possibilidade de ocorrncia
de ciclagem. Em [22] os autores resolvem um problema de roteamento de veculos por
meio de Busca Tabu utilizando uma lista tabu dinmica que varia no intervalo [tmin , tmax ],
sendo tmin = 0, 9n e tmax = 1, 1n, com n representando o nmero de cidades da instncia
considerada. Nesta aplicao, depois que o tamanho da lista escolhido aleatoriamente
no intervalo [tmin , tmax ], ele mantido constante por 2tmax iteraes. A idia por trs da
utilizao da lista dinmica que, se com um dado tamanho de lista h ciclagem, ento
aumentando ou diminuindo esse tamanho haver alterao da quantidade de movimentos
tabu e, assim, diferentes solues podero ser geradas. Com esta possibilidade de mudana
de trajetria no espao de busca, a ocorrncia de ciclagem fica reduzida.
Recentemente, [18] e [24] provaram a convergncia finita de alguns mtodos de Busca
Tabu baseados em memria por recenticidade e por frequncia.
De forma a ilustrar o mtodo de Busca Tabu, apliquemos esta metodologia heurstica
instncia do problema da mochila apresentado no incio destas notas de aula. Consideremos uma lista tabu T de cardinalidade |T | = 1 e como atributo tabu a posio do
bit alterado. Utilizemos o critrio de aspirao por objetivo, isto , um movimento tabu
somente ser realizado se a soluo produzida melhorar a melhor soluo gerada at ento.
O critrio de parada ser BT max = 1, isto , apenas uma iterao sem melhora.
Passo 0 : Seja uma soluo inicial qualquer, por exemplo:
s = (01010)t
f (s) = 6
Peso corrente da mochila = 14
Lista tabu = T =
Melhor soluo at ento: s = (01010)t e f (s ) = 6
Iter = 0; M elhorIter = 0;
Passo 1 : Devemos, agora, analisar todos os vizinhos de s e calcular a funo de avaliao
deles por meio da expresso (31), definida pgina 11.
Vizinhos de s
(11010)t
(00010)t
(01110)t
(01000)t
(01011)t

Peso dos vizinhos de s


18
9
21
5
20

Benefcio dos vizinhos de s


8
4
9
2
10

f (s0 )
8
4
9
2
10

Melhor vizinho: s0 = (01011)t , com f (s0 ) = 10


Como s0 o melhor vizinho de s, ento s s0 , 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 modificado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s = (01011)t e f (s ) = 10 (pois f (s0 ) > f (s ))
Iter = 1; M elhorIter = 1;

24

Marcone Jamilson Freitas Souza


Como Iter M elhorIter = 1 1 = 0 BT max = 1, ento o procedimento de
explorao do espao de solues deve continuar.

Passo 2 : Determinemos, agora, o melhor vizinho de s = (01011)t :


Vizinhos de s
(11011)t
(00011)t
(01111)t
(01001)t
(01010)t

Peso dos vizinhos de s


24
15
27
11
14

Benefcio dos vizinhos de s


12
8
13
6
6

f (s0 )
-3
8
-47
6
6

Melhor vizinho: s0 = (00011)t , com f (s0 ) = 8


Como s0 o melhor vizinho de s, ento s s0 (mesmo sendo f (s0 ) 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 fixada
em um, ento o movimento proibido anterior sai e entra o novo movimento proibido,
isto , o bit da segunda posio no pode ser modificado, a no ser que o critrio de
aspirao seja satisfeito)
Melhor soluo at ento: s = (01011)t e f (s ) = 10
Iter = 2; M elhorIter = 1;
Como Iter M elhorIter = 2 1 = 1 BT max = 1, ento o procedimento BT
continua.
Passo 3 : Determinemos, agora, o melhor vizinho de s = (00011)t :
Vizinhos de s
(10011)t
(01011)t
(00111)t
(00001)t
(00010)t

Peso dos vizinhos de s


19
20
22
6
9

Benefcio dos vizinhos de s


10
10
11
4
4

f (s0 )
10
10
11
4
4

Melhor vizinho: s0 = (00111)t , com f (s0 ) = 11


Como s0 o melhor vizinho de s, ento s s0 , 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 modificado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s = (00111)t e f (s ) = 11 (pois f (s0 ) > f (s ))
Iter = 3; M elhorIter = 3;
Como Iter M elhorIter = 3 3 = 0 BT max = 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
(10111)t
(01111)t
(00011)t
(00101)t
(00110)t

Peso dos vizinhos de s


24
25
15
13
16

Benefcio dos vizinhos de s


13
13
8
7
7

f (s0 )
-2
-17
8
7
7

Observe que o vizinho com o melhor valor para a funo de avaliao s0 = (00011)t ,
com f (s0 ) = 8, mas esta soluo tabu, uma vez que o bit da terceira posio est
na lista tabu. Como o critrio de aspirao desta soluo no satisfeito, pois
f (s0 ) = 8 f (s ) = 11, esta soluo no aceita. Desta forma, considera-se o
melhor vizinho no tabu, a saber:
Melhor vizinho: s0 = (00101)t , com f (s0 ) = 7 (Em caso de empate, como o caso, a
soluo escolhida aquela que satisfaz um determinado critrio, como por exemplo,
aquela associada ao menor peso ou menor ndice)
Como s0 o melhor vizinho de s (mesmo sendo de piora), ento s s0 , isto , a
nova soluo corrente passa a ser: s = (00101)t
Lista tabu = T = {4} (indicando que o bit da quarta posio no pode ser modificado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s = (00111)t e f (s ) = 11
Iter = 4; M elhorIter = 3;
Como Iter M elhorIter = 4 3 = 1 BT max = 1, ento a busca prossegue.
Passo 5 : Determinemos, agora, o melhor vizinho de s = (00101)t :
Vizinhos de s
(10101)t
(01101)t
(00001)t
(00111)t
(00100)t

Peso dos vizinhos de s


17
18
6
23
7

Benefcio dos vizinhos de s


9
9
4
11
3

f (s0 )
9
9
4
11
3

Observe que o vizinho com o melhor valor para a funo de avaliao s0 = (00111)t ,
com f (s0 ) = 11. Entretanto, esta soluo tabu, uma vez que o bit da quarta posio est na lista tabu. Como o critrio de aspirao desta soluo no satisfeito,
pois f (s0 ) = 11 f (s ) = 11, esta soluo no aceita. Desta forma, considera-se o
melhor vizinho no tabu, a saber (j aplicado um critrio de desempate):
Melhor vizinho: s0 = (10101)t , com f (s0 ) = 9
Desta forma, a nova soluo corrente passa a ser: s = (10101)t , com f (s) = 9
Lista tabu = T = {1} (indicando que o bit da primeira posio no pode ser modificado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s = (00111)t e f (s ) = 11
Iter = 5; M elhorIter = 3;
Como Iter M elhorIter = 5 3 = 2 > BT max = 1, ento PARE. O mtodo de
Busca Tabu retorna, ento, s = (00111)t como soluo final, com valor f (s ) = 11.

26

Marcone Jamilson Freitas Souza

A aplicao deste mtodo mostra que a soluo final obtida melhor que aquela obtida
com a aplicao do mtodo da subida, apresentado na pgina 10. Isto foi possvel devido
aceitao de movimentos de piora, no caso, com o passo 2 do mtodo. Esta estratgia
possibilitou escapar de um timo local, atingindo uma outra regio do espao de solues,
na qual uma soluo melhor foi encontrada.

Inteligncia Computacional para Otimizao

4.4

27

GRASP

GRASP (Greedy Randomized Adaptive Search Procedure - Procedimento de busca adaptativa gulosa e randomizada) um mtodo iterativo, proposto em [12], que consiste de
duas fases: uma fase de construo, na qual uma soluo gerada, elemento a elemento,
e de uma fase de busca local, na qual um timo local na vizinhana da soluo construda
pesquisado. A melhor soluo encontrada ao longo de todas as iteraes GRASP realizadas retornada como resultado. O pseudocdigo descrito pela Figura 12 ilustra um
procedimento GRASP para um problema de minimizao.
procedimento GRASP (f (.), g(.), N (.), GRASP max, s)
1 f ? ;
2 para (Iter = 1, 2, . . . , GRASP max) faa
3
Construcao(g(.), , s);
4
BuscaLocal(f (.), N (.), s);
5
se (f (s) < f ? ) ento
6
s? s;
7
f ? f (s);
8
fim-se;
9 fim-para;
10 s s? ;
11 Retorne s;
fim GRASP
Figura 12: Algoritmo GRASP
Na fase de contruo, uma soluo iterativamente construda, elemento por elemento.
A cada iterao desta fase, os prximos elementos candidatos a serem includos na soluo so colocados em uma lista C de candidatos, seguindo um critrio de ordenao
pr-determinado. Este processo de seleo baseado em uma funo adaptativa gulosa
g : C 7 <, que estima o benefcio da seleo de cada um dos elementos. A heurstica
dita adaptativa porque os benefcios associados com a escolha de cada elemento so
atualizados em cada iterao da fase de construo para refletir as mudanas oriundas da
seleo do elemento anterior. A componente probabilstica do procedimento reside no fato
de que cada elemento selecionado de forma aleatria a partir de um subconjunto restrito
formado pelos melhores elementos que compem a lista de candidatos. Este subconjunto
recebe o nome de lista de candidatos restrita (LCR). Esta tcnica de escolha permite que
diferentes solues sejam geradas em cada iterao GRASP. O pseudocdigo representado
pela Figura 13, onde [0, 1] um parmetro do mtodo, descreve a fase de construo
GRASP.
Observamos que o parmetro controla o nvel de gulosidade e aleatoriedade do procedimento Construcao. Um valor = 0 faz gerar solues puramente gulosas, enquanto
= 1 faz produzir solues totalmente aleatrias.
Assim como em muitas tcnicas determinsticas, as solues geradas pela fase de construo do GRASP provavelmente no so localmente timas com respeito definio de
vizinhana adotada. Da a importncia da fase de busca local, a qual objetiva melhorar
a soluo construda. A Figura 14 descreve o pseudo-cdigo de um procedimento bsico de busca local com respeito a uma certa vizinhana N (.) de s para um problema de
minimizao.
A eficincia da busca local depende da qualidade da soluo construda. O procedi-

28

Marcone Jamilson Freitas Souza

procedimento Construcao(g(.), , s);


1 s ;
2 Inicialize o conjunto C de candidatos;
3 enquanto (C 6= ) faa
4
g(tmin ) = min{g(t) | t C};
5
g(tmax ) = max{g(t) | t C};
6
LCR = {t C | g(t) g(tmin ) + (g(tmax ) g(tmin ))};
7
Selecione, aleatoriamente, um elemento t LCR;
8
s s {t};
9
Atualize o conjunto C de candidatos;
10 fim-enquanto;
11 Retorne s;
fim Construcao;
Figura 13: Fase de construo de um algoritmo GRASP
procedimento BuscaLocal(f (.), N (.), s);
1 V = {s0 N (s) | f (s0 ) < f (s)};
2 enquanto (|V | > 0) faa
3
Selecione s0 V ;
4
s s0 ;
5
V = {s0 N (s) | f (s0 ) < f (s)};
6 fim-enquanto;
7 Retorne s;
fim 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, basicamente o nico parmetro a ser ajustado na implementao de um procedimento GRASP.
Em [12] discute-se o efeito do valor de na qualidade da soluo e na diversidade das
solues geradas durante a fase de construo. Valores de que levam a uma lista de
candidatos restrita de tamanho muito limitado (ou seja, valor de prximo da escolha
gulosa) implicam em solues finais de qualidade muito prxima quela obtida de forma
puramente gulosa, obtidas com um baixo esforo computacional. Em contrapartida, provocam uma baixa diversidade de solues construdas. J uma escolha de prxima da
seleo puramente aleatria leva a uma grande diversidade de solues construdas mas,
por outro lado, muitas das solues construdas so de qualidade inferior, tornando mais
lento o processo de busca local.
O procedimento GRASP procura, portanto, conjugar bons aspectos dos algoritmos
puramente gulosos, com aqueles dos procedimentos aleatrios de construo de solues.
Procedimentos GRASP mais sofisticados incluem estratgias adaptativas para o parmetro . O ajuste deste parmetro ao longo das iteraes GRASP, por critrios que levam
em considerao os resultados obtidos nas iteraes anteriores, produz solues melhores
do que aquelas obtidas considerando-o fixo [36, 37, 38].

Inteligncia Computacional para Otimizao

4.5

29

Busca em Vizinhana Varivel

A Busca em Vizinhana Varivel, ou Mtodo de Pesquisa em Vizinhana Varivel (Variable Neighborhood Search, VNS), proposta por Nenad Mladenovi e Pierre Hansen [34],
um mtodo de busca local que consiste em explorar o espao de solues por meio de
trocas sistemticas de estruturas de vizinhana. Contrariamente outras metaheursticas
baseadas em mtodos de busca local, o mtodo VNS no segue uma trajetria, mas sim
explora vizinhanas gradativamente mais distantes da soluo corrente e focaliza a busca
em torno de uma nova soluo se e somente se um movimento de melhora realizado. O
mtodo inclui, tambm, um procedimento de busca local a ser aplicado sobre a soluo
corrente. Esta rotina de busca local tambm pode usar diferentes estruturas de vizinhana.
Na sua verso original, o mtodo VNS faz uso do mtodo VND para fazer a busca local.
O pseudocdigo do mtodo apresentado pela Figura 15. Detalhes adicionais podem
ser encontrados em [34, 26, 27].

procedimento VNS ()
1 Seja s0 uma soluo inicial;
2 Seja r o nmero de estruturas diferentes de vizinhana;
3 s s0 ;
{Soluo corrente}
4 enquanto (Critrio de parada no for satisfeito) faa
5
k 1;
{Tipo de estrutura de vizinhana corrente}
6
enquanto (k r) faa
7
Gere um vizinho qualquer s0 N (k) (s);
8
s00 BuscaLocal(s0 );
9
se (f (s00 ) < f (s))
10
ento
11
s s00 ;
12
k 1;
13
seno
14
k k + 1;
15
fim-se;
16
fim-enquanto;
17 fim-enquanto;
18 Retorne s;
fim VNS ;
Figura 15: Algoritmo VNS
Neste algoritmo, parte-se de uma soluo inicial qualquer e a cada iterao seleciona-se
aleatoriamente um vizinho s0 dentro da vizinhana N (k) (s) da soluo s corrente. Esse
vizinho ento submetido a um procedimento de busca local. Se a soluo tima local,
s00 , for melhor que a soluo s corrente, a busca continua de s00 recomeando da primeira
estrutura de vizinhana N (1) (s). Caso contrrio, continua-se a busca a partir da prxima
estrutura de vizinhana N (k+1) (s). Este procedimento encerrado quando uma condio
de parada for atingida, tal como o tempo mximo permitido de CPU, o nmero mximo
de iteraes ou nmero mximo de iteraes consecutivas entre dois melhoramentos. A
soluo s0 gerada aleatoriamente no passo 7 de forma a evitar ciclagem, situao que
pode ocorrer se alguma regra determinstica for usada.

30

4.6

Marcone Jamilson Freitas Souza

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 especificadas: (a)
Procedimento GeraSolucaoInicial(), que gera uma soluo inicial s0 para o problema;
(b) Procedimento BuscaLocal, que retorna uma soluo possivelmente melhorada s00 ; (c)
Procedimento P erturbacao, que modifica a soluo corrente s guiando a uma soluo
intermediria s0 e (d) Procedimento CriterioAceitacao, que decide de qual soluo a
prxima perturbao ser aplicada.
Na Figura 16 mostra-se o pseudocdigo do algoritmo ILS bsico.
procedimento ILS
1 s0 GeraSolucaoInicial();
2 s BuscaLocal(s0 );
3 enquanto (os critrios de parada no estiverem satisfeitos) faa
4
s0 P erturbacao(histrico, s);
5
s00 BuscaLocal(s0 );
6
s CriterioAceitacao(s, s00 , histrico);
8 fim-enquanto;
fim ILS;
Figura 16: Algoritmo Iterated Local Search
O sucesso do ILS centrado no conjunto de amostragem de timos locais, juntamente
com a escolha do mtodo de busca local, das perturbaes e do critrio de aceitao. Em
princpio, qualquer mtodo de busca local pode ser usado, mas o desempenho do ILS com
respeito qualidade da soluo final e a velocidade de convergncia depende fortemente do
mtodo escolhido. Normalmente um mtodo de descida usado, mas tambm possvel
aplicar algoritmos mais sofisticados, tais como Busca Tabu ou outras metaheursticas.
O mecanismo de perturbao deve ser forte o suficiente para permitir escapar do timo
local corrente e permitir explorar diferentes regies. Ao mesmo tempo, a modificao
precisa ser fraca o suficiente para guardar caractersticas do timo local corrente.
O critrio de aceitao usado para decidir de qual soluo se continuar a explorao,
bem como qual ser a perturbao a ser aplicada. Um aspecto importante do critrio
de aceitao e da perturbao que eles induzem aos procedimentos de intensificao
e diversificao. A intensificao consiste em permanecer na regio do espao onde a
busca se encontra, procurando explor-la de forma mais efetiva; enquanto a diversificao
consiste em se deslocar para outras regies do espao de solues. A intensificao da
busca no entorno da melhor soluo encontrada obtida, por exemplo, pela aplicao
de pequenas perturbaes sobre ela. A diversificao, por sua vez, pode ser realizada
aceitando-se quaisquer solues s00 e aplicando grandes perturbaes na soluo tima
local.
Um critrio de aceitao comumente utilizado mover-se para o timo local s00 somente
se ele for melhor que o timo local corrente s, isto , somente se f (s00 ) < f (s) em um
problema de minimizao, ou se f (s00 ) > f (s) em um problema de maximizao.
A Figura 17, pgina 31, ilustra o funcionamento do mtodo ILS em um problema
de minimizao. A partir de um timo local s, feita uma perturbao que guia a uma
soluo intermediria s0 . Aps a aplicao de um mtodo de busca local a s0 produzido

Inteligncia Computacional para Otimizao

31

um novo timo local s00 . Considerando como critrio de aceitao o fato de f (s00 ) ser
melhor que f (s), ento a busca prossegue a partir de s00 .

c
Perturbao

u
s

s'

t
o

s"

Espao de solues

Figura 17: Representao esquemtica do funcionamento do ILS


Para definir o que seria uma perturbao no Problema do Caixeiro Viajante, consideremos 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. 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 funcionaria 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 movimento 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 justifica 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 [47]. Consiste em promover modificaes na funo custo para escapar de timos
locais.

32

4.8
4.8.1

Marcone Jamilson Freitas Souza

Algoritmos Genticos
Descrio genrica do mtodo

Trata-se de uma metaheurstica que se fundamenta em uma analogia com processos naturais de evoluo, nos quais, dada uma populao, os indivduos com caractersticas
genticas melhores tm maiores chances de sobrevivncia e de produzirem filhos cada vez
mais aptos, enquanto indivduos menos aptos tendem a desaparecer. Foram propostos por
John Holland nos anos 70 [23]. Referenciamos a [23, 39] para um melhor detalhamento do
mtodo.
Nos Algoritmos Genticos (AGs), cada cromossomo (indivduo da populao) est
associado a uma soluo do problema e cada gene est associado a uma componente da
soluo. Um alelo, por sua vez, est associado a um possvel valor que cada componente
da soluo pode assumir. Um mecanismo de reproduo, baseado em processos evolutivos,
aplicado sobre a populao com o objetivo de explorar o espao de busca e encontrar
melhores solues para o problema. Cada indivduo avaliado por uma certa funo de
aptido, a qual mensura seu grau de adaptao ao meio. Quanto maior o valor da funo
de aptido, mais o indivduo est adaptado ao meio.

Um Algoritmo Gentico inicia sua busca com uma populao s01 , s02 , . . . , s0n , normalmente aleatoriamente escolhida, a qual chamada de populao no tempo 0.

t+1
t+1
O procedimento principal um loop que cria uma populao st+1
no
1 , s2 , . . . , sn
tempo t+1 a partir de uma populao do tempo t. Para atingir esse objetivo, os indivduos
da populao do tempo t passam por uma fase de reproduo, a qual consiste em selecionar
indivduos para operaes de recombinao e/ou mutao. H vrias formas de selecionar
indviduos para o processo de reproduo. Uma dessas formas a Binary Tournament
Selection. Nesse processo de seleo, dois indivduos so selecionados aleatoriamente e
aquele que tiver o maior valor para a funo de aptido escolhido para ser o primeiro
pai. O segundo pai escolhido de forma anloga. Outra forma de selecionar os pais
para o processo de seleo escolh-los aleatoriamente. Na operao de recombinao,
os genes de dois cromossomos pais so combinados de forma a gerar cromossomos filhos
(normalmente dois), de sorte que para cada cromossomo filho h um conjunto de genes de
cada um dos cromossomos pais. A operao de mutao consiste em alterar aleatoriamente
uma parte dos genes de cada cromossomo (componentes da soluo). Ambas as operaes
so realizadas com uma certa probabilidade. A operao de recombinao realizada
normalmente com uma probabilidade mais elevada (por exemplo, 80%) e a de mutao,
com uma baixa probabilidade (de 1 a 2%, em geral).
Gerada a nova populao do tempo t + 1, define-se a populao sobrevivente, isto ,
as n solues que integraro a nova populao. A populao sobrevivente definida pela
aptido dos indivduos. Os critrios comumente usados para escolher os cromossomos
sobreviventes so os seguintes: 1) aleatrio; 2) roleta (onde a chance de sobrevivncia
de cada cromossomo proporcional ao seu nvel de aptido) e 3) misto (isto , uma
combinao dos dois critrios anteriores). Em qualquer um desses critrios admite-se,
portanto, a sobrevivncia de indivduos menos aptos. Isto feito tendo-se por objetivo
tentar escapar de timos locais.
A Figura 18 mostra a estrutura de um Algoritmo Gentico bsico.
Os critrios de parada mais comuns so: quando um certo nmero de geraes atingido, quando no h melhora aps um certo nmero de iteraes ou quando o desvio padro
da populao inferior a um certo valor (situao que evidencia uma homogeneidade da
populao).
Os parmetros principais de controle do mtodo so: o tamanho n da populao, a

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 representado na forma de um vetor (ou lista) com m posies: p = (x1 , x2 , . . . , xm ), onde cada
componente xi representa um gene (ou uma varivel da soluo).
Dentre os tipos de representao de um cromossomo, os mais conhecidos so: representao binria zero-um e a representao por inteiros.
A representao binria a clssica dentro dos AGs. Contudo, existem aplicaes para
as quais mais conveniente o uso de representaes por inteiros.
A seguir, alguns exemplos ilustram os dois tipos de representao:
1. Representao Binria:
Na representao binria, uma soluo do problema representada por um vetor (ou
lista) de 0s e 1s.
Para ilustrar esta representao, considere o seguinte exemplo extrado de Michalewicz (1992), no qual deseja-se maximizar a funo:
f (x) = |11 num(x) 150|,

34

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
Defina a populao sobrevivente;
9 fim-enquanto;
fim AG;
Figura 19: Algoritmo Gentico
em que num(x) fornece o nmero de 1s do vetor cromossomo.
Por exemplo, se x = (101001) ento num(x) = 3.
Considere, agora, a representao binria de dois cromossomos compostos de 30
genes:
p1 = (101010101010101010101010101010)
p2 = (110000001100001110000000000000)
Ento f (p1 ) = |11num(p1 )150| = |1115150| = 15 e f (p2 ) = |11num(p2 )
150| = |11 7 150| = 73.
Observe que o cromossomo que fornece um ponto de mximo local dado por:
p0 = (000000000000000000000000000000), com f (p0 ) = 150
J o mximo global de f fornecido pelo cromossomo:
p = (111111111111111111111111111111), com f (p ) = 180
2. Representao por Inteiros:
Na representao por inteiros, uma soluo do problema representada por um vetor
(ou lista) de nmeros inteiros. Por exemplo, considerando o PCV, o cromossomo
p = (1 3 6 5 4 2 7 9 8) pode representar exatamente a ordem de visita do PCV, ou
seja, a rota (tour) t do PCV idntica a p:
t = {1 3 6 5 4 2 7 9 8}
Em um problema de programao de horrios, um cromossomo pode ser uma matriz
de nmeros inteiros, em que cada componente xij representa o nmero da turma
para a qual o professor i ministra aula no horrio j.

Inteligncia Computacional para Otimizao


4.8.3

35

Operador crossover clssico

A idia do operador crossover clssico a de efetuar cruzamentos entre dois ou mais


cromossomos pais e formar cromossomos filhos (offsprings) 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.
p1 = (1 0 1 | 0 1 0) = (p11 | p21 )
p2 = (1 1 1 | 0 0 0) = (p21 | p22 )

ponto de corte
A partir dos cortes, so gerados dois filhos, cada qual formado a partir da reunio de
partes de cada um dos pais.
O1 = (p11 | p22 ) = (1 0 1 | 0 0 0)
O2 = (p12 | p21 ) = (1 1 1 | 0 1 0)
4.8.4

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 =
(x1 x2 x3 . . . x7 ) = (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 p0 = (1 1 1 0 1 0 1) representa uma mutao de p, no
qual o gene x2 foi alterado do valor 0 para o valor 1.
4.8.5

Operadores crossover para o PCV

No caso especfico 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:
p1 = (1 2 3 | 4 5 6) associado rota t1 = {1 2 3 4 5 6 1}
p2 = (3 5 6 | 2 1 4) associado rota t1 = {1 4 3 5 6 2 1}
Neste caso, so gerados dois cromossomos filhos O1 e O2 :
O1 = (p11 | p22 ) = (1 2 3 | 2 1 4)
O2 = (p12 | p21 ) = (3 5 6 | 4 5 6)

36

Marcone Jamilson Freitas Souza

As rotas associadas aos cromossomos filhos O1 e O2 so inviveis porque em O1 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 O2 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 Caixeiro Viajante, os quais geram filhos viveis.
1. Operador Crossover PMX:
O operador Partial Mapped Crossover (PMX) trabalha da seguinte forma: considere
dois cromossomos pais p1 e p2 . Selecione dois cortes em p1 e p2 aleatoriamente. No
caso de serem gerados dois cromossomos filhos O1 e O2 , os genes localizados entre
os dois cortes de p1 e p2 so herdados integralmente por O2 e O1 , respectivamente,
preservando a ordem e a posio de cada cidade.
Para ilustrar seu funcionamento considere o seguinte exemplo:
p1 = (1 2 3 | 4 5 6 7 | 8 9)
p2 = (4 2 6 | 1 8 5 9 | 3 7)
Ento:
O1 = (X X X | 1 8 5 9 | X X)
O2 = (X X X | 4 5 6 7 | X X)
A seguir tenta-se preencher cada componente X de O1 pela componente correspondente de p1 e as de O2 com p2 , caso no formem uma rota ilegal para o PCV.

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

p2 = (4 . . .
Obtm-se com isto:
O1 = (4 2 3 | 1 8 5 9 | X X)
Repete-se o procedimento para o prximo X O1 (X = 8 p1 )

Inteligncia Computacional para Otimizao

37

X
k
p1 = (. . . | . . . | 8 . . . )

p2 = (. . . | . . . | 3 . . . )
Mas X = 3 j est presente em O1 , ento toma-se o n de p2 associado ao n 3 de
p1 .
X
k
p1 = (. . . 3 | . . .

p2 = (. . . 6 | . . .
Como X = 6 ainda no est presente em O1 , substitui-se X por 6 em O1 , obtendo-se:

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

p2 = (. . . | . . . | . . . 7)
Como X = 7 ainda no est presente em O1 , substitui-se X por 7 em O1 , obtendo-se:
O1 = (4 2 3 | 1 8 5 9 | 6 7)
Analogamente, preenchem-se os Xs de O2 , obtendo-se ao seu final:
O2 = (1 2 8 | 4 5 6 7 | 3 9)
O operador PMX explora a convenincia ou no de se reproduzir cromossomos localmente idnticos a um cromossomo pai. Esta propriedade til, por exemplo,
quando se tm rotas j localmente otimizadas.
2. Operador crossover OX:
Proposto por Davis (1985), o operador Ordenated Crossover (OX) constri um
offspring (cromossomo filho) escolhendo uma subseqncia de uma rota associado a
um cromossomo pai p1 e preservando a ordem relativa das cidades do outro cromossomo pai p2 .
Exemplo: Considere dois cromossomos pais:

38

Marcone Jamilson Freitas Souza


p1 = (1 2 3 | 4 5 6 7 | 8 9)
p2 = (4 5 2 | 1 8 7 6 | 9 3)
Os filhos O1 e O2 herdam a faixa entre os dois cortes de p1 e p2 , respectivamente.
O1 = (X X X | 4 5 6 7 | X X)
O2 = (X X X | 1 8 7 6 | X X)
Agora, partindo-se do segundo corte de um pai p2 , copia-se em uma lista as n cidades
de p2 . A seguir, remove-se desta lista as cidades contidas entre os dois cortes do outro
pai (p1 ). A subseqncia resultante enxertada no filho O1 associado a p1 a partir
do segundo corte seguindo a ordem da subseqncia.
Assim, considerando o exemplo, partindo-se de p2 tem-se a lista:
934521876
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
O1 , nesta ordem, a partir do seu segundo corte.
O1 = (X X X | 4 5 6 7 | X X)
ou
O1 = (2 1 8 | 4 5 6 7 | 9 3)
Analogamente, partindo de p1 , tem-se a lista 8 9 1 2 3 4 5 6 7.
Removendo-se 1, 8, 7 e 6 tem-se a subseqncia: 9 2 3 4 5, a qual enxertada
em O2 a partir do segundo corte, obtendo-se:
O2 = (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:
T1 : 5 3 1 2 4
T2 : 3 1 2 4 5
Em T1 e T2 as cidades aparecem em posies diferentes, mas tanto a rota T1 quanto
a rota T2 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

p1 = (1 2 3 4 5 6 7 8 9)
p2 = (4 1 2 8 7 6 9 3 5)
O primeiro filho O1 obtido tomando-se inicialmente a primeira cidade de p1 ,
obtendo-se:
O1 = (1 X X X X X X X X)
Com a 1a posio de O1 j preenchida, ento o elemento da 1a posio de p2 igual
a 4 no pode ser tambm alocado 1a posio de O1 . Portanto, o elemento da 1a
posio de p2 , igual a 4, herdado pelo filho O1 na posio que ele ocupa em p1 . Ou
seja, o n 4 est na 4a posio de p1 , logo estar tambm na 4a posio de O1 .
O1 = (1 X X 4 X X X X X)
A seguir, estando o elemento da 4a posio do outro pai p2 = 8, e o inteiro 8 em p1
(na oitava posio), aloca-se 8 na oitava posio de O1 .
O1 = (1 X X 4 X X X 8 X)
Seguindo esse procedimento, tem-se:
O1 = (1 2 3 4 X X X 8 X)
O ltimo inteiro alocado foi 2, mas na 2a posio em p2 est o inteiro 1 que j est
em O1 . Neste caso, diz-se que foi completado um ciclo.
A partir da, as cidades restantes de O1 so preenchidas do outro pai (p2 ), obtendo-se:
O1 = (1 2 3 4 7 6 9 8 5)
De forma semelhante, tomando inicialmente a 1a cidade do segundo cromossomo pai
p2 , comea-se a construir o segundo cromossomo filho O2 , que ao final ser da forma:
O2 = (4 1 2 8 5 6 7 3 9)
Observe que o operador Cycle Crossover sempre preserva a posio de elementos
de um outro cromossomo pai.
4. Operador crossover ERX:
O operador Edge Recombination (ERX) foi desenvolvido especialmente para o PCV,
j que prioriza o fator adjacncia. Outra caracterstica principal do ERX a
de que um cromossomo filho deve ser construdo sempre que possvel a partir das
arestas presentes em ambos os pais. Whitley, Starkweather e Fuquay (1989)
observaram que em mdia 95% das arestas dos pais so transferidas para os filhos
neste operador reduzindo consideravelmente o percentual de arestas selecionadas
aleatoriamente.

40

Marcone Jamilson Freitas Souza


No ERX o significativo nmero de arestas transferidas de cromossomos pais para
cromossomos filhos 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 significa 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.
p1 = (1 2 3 4 5 6)
p2 = (3 4 1 6 2 5)
A lista de arestas ser:
cidade
cidade
cidade
cidade
cidade
cidade

1:
2:
3:
4:
5:
6:

(1,
(1,
(2,
(3,
(4,
(5,

2),
2),
3),
4),
5),
6),

(6,
(2,
(3,
(4,
(5,
(6,

1),
3),
4),
5),
6),
1),

(4,
(6,
(5,
(4,
(2,
(6,

1)
2), (2, 5)
3)
1)
5), (5, 3)
2)

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 filhos.
A verso para gerar um filho 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 justificado 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 cromossomo filho 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 O1 = (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 O1 . 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:
O1 = (1 4 3 X X X)

Inteligncia Computacional para Otimizao

41

Seguindo o mesmo procedimento, escolhe-se a cidade 2:


O1 = (1 4 3 2 X X)
A prxima cidade a ser escolhida a 6:
O1 = (1 4 3 2 6 X)
Finalmente, a cidade 5 incluida na rota:
O1 = (1 4 3 2 6 5)
Observe que o cromossomo filho O1 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 final as cidades
com o nmero maior de arestas (vizinhos), que o risco de ter que gerar uma aresta
aleatoriamente cresce apenas no final 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 filho. 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, finalmente, 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 especficas ao invs de estratgias aleatrias de busca. A Busca Dispersa envolve basicamente
cinco procedimentos:
1. Um procedimento de Diversificao, para gerar um conjunto de solues diversificadas, usando uma ou mais solues aleatrias como entrada;
2. Um procedimento de Refinamento, 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, consistindo nas 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 subconjunto de solues produzidas pelo procedimento de 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 conjunto de referncia (RefSet). O procedimento de Diversificao usado para construir um
conjunto P de solues diversificadas. A cardinalidade de P, PSize, tipicamente 10 vezes
o tamanho de RefSet [21]. Inicialmente, o conjunto de referncia RefSet consiste de bbest
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 NewSolutions. No
passo 3, NewSubsets construdo e NewSolutions trocado para FALSE. Por propsitos
ilustrativos, consideramos subconjuntos de tamanho 2. Assim, a cardinalidade de NewSubsets correspondente ao conjunto de referncia original dado (nbest2 nbest)/2, que
computa todos os pares de solues em RefSet. Os pares em NewSubsets so selecionados

Inteligncia Computacional para Otimizao

43

procedimento ScatterSearch
1 P ;
Use o procedimento Diversificao para construir uma soluo x;
Se x 6 P ento adicione x a P , isto , P P {x}; caso contrrio, descarte x;
Repita este procedimento at que |P | = P Size;
Construa Ref Set = {x1 , , xnbest }, com nbest solues diversificadas em P ;
2 Avalie as solues em RefSet e ordene-as de acordo com a funo de avaliao;
(Considere x1 a melhor soluo e xnbest a pior)
N ewSolutions T RU E;
enquanto (N ewSolutions) faa
3
Gere N ewSubsets, consistindo de todos os pares de solues em RefSet
que inclua pelo menos uma nova soluo;
N ewSolutions F ALSE;
enquanto (N ewSubset 6= ) faa
4
Selecione o prximo subconjunto s em N ewSubsets;
5
Aplique Combinao de Solues a s para obter uma ou mais solues x;
se (x 6 Ref Set e f (x) < f (xnbest ) ento
6
xnbest x e reordene RefSet;
7
N ewSolutions T RU E;
fim-se
8
Remova s de N ewSubsets;
fim-enquanto;
fim-enquanto;
fim ScatterSearch;
Figura 20: Algoritmo Scatter Search
um por vez em ordem lexicogrfica e o procedimento de Combinao de Solues aplicado para gerar uma ou mais solues no passo 5. Se uma nova soluo criada melhora
a pior soluo do conjunto de referncia RefSet corrente, ento ela a substitui e RefSet
reordenado no passo 6. O flag NewSolutions alterado para TRUE e o subconjunto s que
foi combinado removido de NewSubsets nos passos 7 e 8, respectivamente.

4.10

Colnia de Formigas

A metaheurstica Otimizao por Colnia de Formigas, ou simplesmente Colnia de Formigas (Ant Colony Optimization Metaheuristic - ACO), tem sua origem na tese de doutorado
de Marco Dorigo [8], publicada mais tarde em [9].
O mtodo simula o comportamento de um conjunto de agentes (formigas) que se cooperam para resolver um problema de otimizao. A cooperao entre as formigas se d
por meio do feromnio depositado por cada formiga ao se deslocar no espao de busca,
permitindo que esse rastro possa ser usado como informao por outras formigas.
De acordo com [10], informalmente, o comportamento das formigas em um algoritmo
ACO pode ser resumido como segue. Uma colnia de formigas move de forma concorrente e
assncrona construindo caminhos no espao de busca. Elas movem aplicando uma poltica
de deciso local estocstica, que faz uso das trilhas de feromnio e informaes heursticas.
Ao se moverem, as formigas constroem novas solues para o problema de otimizao.
Construda uma soluo, ou durante a construo de uma soluo, a formiga avalia a
soluo (parcial ou completa) e deposita uma trilha de feromnio apenas nas componentes

44

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 adicionais: 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 feromnio 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 off-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, dij a distncia
entre as cidades i e j, ij a quantidade de feromnio em cada arco (i, j), kij 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 um probabilidade dada pela
expresso (46):
[ij ] [ij ]
pkij = P
[il ] [il ]

j ki

(46)

lk
i

em que ki representa o conjunto de cidades ainda no visitada pela formiga k, ij = 1/dij


uma informao heurstica disponvel a priori e e so dois parmetros que determinam
a influncia relativa da trilha de feromnio e da informao heurstica, respectivamente.
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 distribuidas entre o conjunto de cidades e, assim, h mltiplos pontos de
partida). Se = 0, ento somente a utilizao de feromnio tem influncia, 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/Lk ) depositada pela formiga k multiplicada pelo
comprimento dij 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 kij 1/Lk , desprezando-se o comprimento

Inteligncia Computacional para Otimizao

45

procedimento ColoniaF ormigas


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 Rk para cada formiga k
(c) Seja Lk o comprimento da rota Rk
(d) se ( Lk < f ) ento s Rk e f f (s )
(e) Calcule a quantidade de rastro deixado pela formiga k:
se (arco (i, j) pertence rota Rk )
ento kij dij Q/Lk
seno kij 0
fim-se
(f) Faa ij ij + kij
4 fim-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 fim-se
fim ColoniaF ormigas;
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 substituir o
passo 5 pela expresso (47):
ij (1 ) ij + best
(i, j)
ij

(47)

em que best
ij representa a trilha de feromnio deixada pela formiga que produziu a melhor
soluo (pode ser tanto a melhor soluo de uma iterao envolvendo m formigas ou a
melhor soluo global). A atualizao da trilha de feromnio feita, neste caso, usando
uma forte estratgia elitista, pois somente o feromnio da formiga que produziu a melhor
soluo usado para proceder atualizao da trilha de feromnio em todos os arcos.
Uma outra estratgia elitista consiste em ordenar os comprimentos das rotas geradas
pelas m formigas em cada iterao e considerar que apenas as formigas associadas s w 1
melhores rotas (w < m) e melhor rota global podem depositar feromnio. A r-sima
melhor formiga da colnia contribui com a atualizao de feromnio com um peso dado
por max{0, w r} enquanto a formiga que produziu a melhor soluo global contribui com
um peso w. Nesta situao, o passo 5 da Figura 21 substitudo pela expresso (48):
ij (1 ) ij +

w1
X

(w r) rij + w gb
ij (i, j)

(48)

r=1

em que gb
ij indica a trilha de feromnio deixada pela formiga que produziu a melhor
soluo global at ento.

46

4.11

Marcone Jamilson Freitas Souza

Algoritmos Memticos

A metaheurstica Algoritmos Memticos (Memetic Algorithms) foi proposta por ...


Basicamente, o mtodo uma variao de Algoritmos Genticos, consistindo no refinamento 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]. Diferentemente de SA, que baseia-se na simulao dos estados de um sistema fsico a temperatura
constante, o algoritmo Annealing Microcannico simula a variao dos estados a energia
constante. Utiliza, para esse propsito, uma verso do Algoritmo de Creutz [5, 32], o qual
introduz uma varivel, chamada de demnio, para modelar as flutuaes de energia.
A partir de uma soluo inicial arbitrria s, geram-se novas solues de forma que
E + D = constante, sendo D a energia do demnio (0 D Dmax ) e E a energia do
sistema (f (s)). O procedimento principal consiste em um loop que gera, randomicamente,
em cada iterao, um nico vizinho s0 da soluo corrente.
Chamando de a variao de energia ao mover-se de s para s0 , o mtodo aceita o
movimento, e a soluo vizinha s0 passa a ser a nova soluo corrente, se 0, com a
condio de que D Dmax , isto , que a energia liberada no supere a capacidade
do demnio. Caso > 0 a soluo vizinha s0 tambm pode ser aceita, desde que < D,
isto , que a energia necessria possa ser suprida pelo demnio. Em ambos os casos, se
houver aceitao, o demnio D recebe (ou libera, respectivamente) a variao de energia
envolvida ao mover-se de s para s0 , isto , D D . Desta forma, a energia total,
E + D, permanece constante.
O demnio assume, inicialmente, um valor Dmax . Aps um certo nmero de iteraes
(o qual representa o nmero de iteraes necessrias para o sistema atingir o equilbrio
trmico numa dada configurao de energia), esse valor gradativamente diminudo at
anular-se.
A vantagem de se usar o algoritmo AM que pode-se estabelecer, com preciso, se
o equilbrio trmico foi atingido [45]. Da fsica estatstica sabe-se que o valor mdio do
= T ) e no equilbrio trmico tem-se D/(D)

demnio igual temperatura (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, prefixa-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 (AM max), o
valor Di do demnio no incio de cada fase e a capacidade inicial do demnio Dmax .
Apresentamos, pela Figura 22, o pseudocdigo de um algoritmo Annealing Microcannico bsico.

Inteligncia Computacional para Otimizao

47

procedimento AM (f (.), N (.), AM max, , Di , Dmax , s)


1 s? s; {Melhor soluo obtida at ento}
2 enquanto (Dmax > 0) faa
3
D Di ;
4
para (IterE = 1, 2, . . . , AM max) faa
5
Gere um vizinho qualquer s0 N (s);
6
= f (s0 ) f (s);
7
se ( 0)
8
ento
9
se (D Dmax ) ento
10
s s0 ;
11
D D ;
12
se (f (s0 ) < f (s? )) ento s? s0 ;
13
fim-se;
14
seno
15
se (D 0) ento
16
s s0 ;
17
D D ;
18
fim-se;
19
fim-se;
20
fim-para;
21
Dmax Dmax ;
22 fim-enquanto;
23 s s? ;
24 Retorne s;
fim AM ;
Figura 22: Algoritmo Annealing Microcannico

4.13

Otimizao Microcannica

Trata-se de uma alternativa ao Annealing Microcannico, proposta originalmente em [46].


Referenciamos a [46, 32, 45] 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
configurao de mnimo local. Para tentar escapar desta configurao, executa-se a amostragem, 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 definido por dois parmetros: sua capacidade Dmax e seu valor inicial
Di . A fase de amostragem gera uma sequncia de estados cuja energia conservada,
exceto para pequenas flutuaes, as quais so modeladas pelo demnio. Chamando de
Ei 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 = Ei + Di = constante. Portanto, esta fase gera solues no intervalo

48

Marcone Jamilson Freitas Souza

procedimento OM (f (.), N (.), OM max, s)


1 s? s;
{Melhor soluo obtida at ento}
2 Iter 0;
{Nmero de iteraes}
3 M elhorIter 0; {Iterao mais recente que forneceu s? }
4 enquanto (Iter M elhorIter < OM max) faa
5
Iter Iter + 1;
6
InicializacaoOM (f (.), N (.), Imax, s);
7
se (f (s) < f (s )) ento
8
s? s;
9
M elhorIter Iter;
10
fim-se;
11
AmostragemOM (f (.), N (.), Di , Dmax , Amax, s);
12 fim-enquanto;
13 s s? ;
14 Retorne s;
fim OM ;
Figura 23: Algoritmo de Otimizao Microcannica
[Ei Dmax + Di , Ei + Di ].
Os parmetros principais de controle do algoritmo OM so o nmero mximo OM max
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 Di do demnio e a sua capacidade mxima Dmax .
Apresentamos, pelas figuras 24 e 25, os pseudocdigos das fases de inicializao e
amostragem, respectivamente, de um algoritmo de Otimizao Microcannica bsico.

Inteligncia Computacional para Otimizao

procedimento InicializacaoOM (f (.), N (.), Imax, s)


1 s? s;
{Melhor soluo obtida at ento}
2 Iter 0;
{Nmero de iteraes}
3 M elhorIter 0; {Iterao mais recente que forneceu s? }
4 enquanto (Iter M elhorIter < Imax) faa
5
Iter Iter + 1;
6
Gere um vizinho qualquer s0 N (s);
7
= f (s0 ) f (s);
8
se ( < 0)
9
ento
10
s s0 ;
11
se (f (s0 ) < f (s )) ento
12
s? s0 ;
13
M elhorIter Iter;
14
fim-se;
15
seno Ponha na lista dos movs rejeitados;
16
fim-se;
17 fim-enquanto;
18 s s? ;
19 Retorne s;
fim InicializacaoOM ;
Figura 24: Fase de inicializao do algoritmo de Otimizao Microcannica

procedimento AmostragemOM (f (.), N (.), Di , Dmax , Amax, s)


1 Seja s soluo advinda da fase de inicializao;
2 Escolha Dmax e DI da lista de movimentos rejeitados;
3 D Di ;
{Valor corrente do demnio}
4 para (Iter = 1, 2, . . . , Amax) faa
5
Gere um vizinho qualquer s0 N (s);
6
= f (s0 ) f (s);
7
se ( 0)
8
ento
9
se (D Dmax ) ento
10
s s0 ;
11
D D ;
12
fim-se;
13
seno
14
se (D 0) ento
15
s s0 ;
16
D D ;
17
fim-se;
18
fim-se;
19 fim-para;
20 Retorne s;
fim AmostragemOM ;
Figura 25: Fase de amostragem do algoritmo de Otimizao Microcannica

49

50

Marcone Jamilson Freitas Souza

Tcnicas especiais de intensificao e diversificao

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 intensificao
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 finalidade, 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 [42]:
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 intensificao a cada
timo local obtido aps a fase de busca local.
A aplicao da tcnica de Reconexo por Caminhos como um procedimento de intensificao a cada timo local mais eficaz do que empreg-la como um procedimento de
ps-otimizao [42]. Neste caso, a Reconexo por Caminhos aplicada a pares (s1 , s2 ) de
solues, onde s1 a soluo corrente obtida aps o procedimento de busca local e s2
uma soluo selecionada aleatoriamente de um conjunto formado por um nmero limitado,
T amConjElite, de solues elite encontradas durante a explorao do espao de solues.
Este conjunto est, inicialmente, vazio. Cada soluo obtida ao final 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 (P ercDif ). 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
T amConjElite 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 (s1 , s2 ) entre s1 e s2 , 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 (s1 , s2 ) 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
[42]:
No aplicar Reconexo por Caminhos a cada iterao, mas sim periodicamente, para
no onerar o tempo final do algoritmo;
Explorar duas trajetrias potencialmente diferentes, usando s1 como soluo inicial
e depois s2 no mesmo papel;
Explorar apenas uma trajetria, usando s1 ou s2 como soluo inicial e

Inteligncia Computacional para Otimizao

51

No percorrer a trajetria completa de s1 at s2 , mas sim apenas parte dela (Reconexo por Caminhos Truncada).
Para a escolha da alternativa mais apropriada, deve-se ter um compromisso entre
tempo de processamento e qualidade da soluo. Em [40] foi observado que a explorao
de duas trajetrias potencialmente diferentes para cada par (s1 , s2 ) de solues consome,
aproximadamente, o dobro do tempo de processamento necessrio para explorar apenas
uma delas, com um ganho marginal muito pequeno em termos de qualidade de soluo.
Tambm foi observado pelos autores que, se apenas uma trajetria deve ser investigada,
melhores solues tendem a ser obtidas quando a Reconexo por Caminhos usa como
soluo inicial a melhor soluo dentre s1 e s2 (Esta a chamada Reconexo por Caminhos
Regressiva - Backward Path Relinking). Como a vizinhana da soluo inicial explorada
com muito mais profundidade do que aquela da soluo guia, usar como soluo inicial a
melhor dentre s1 e s2 oferece mais chances ao algoritmo de investigar mais detalhadamente
a vizinhana da soluo mais promissora. Pela mesma razo, as melhores solues so
normalmente encontradas prximas da soluo inicial, permitindo que o procedimento de
Reconexo por Caminhos seja interrompido aps algumas iteraes, antes de a soluo
guia ser alcanada.
Na Figura 26 representa-se o pseudocdigo do procedimento de reconexo por caminhos
para um problema de minimizao.
Procedimento Reconexo-Caminhos
1: g
s;
2: Atribuir a g 0 a melhor soluo entre s e g;
3: Calcular o conjunto de movimentos possveis (s, g);
4: enquanto |(s, g)| 6= 0 faa
5:
Atribuir a g 00 a melhor soluo obtida aplicando o melhor movimento de (s, g) a
g;
6:
Excluir de (s, g) este movimento;
7:
g g 00 ;
8:
se f (
g ) < f (g 0 ) ento
0
9:
g g;
10:
fim se
11: fim enquanto
12: Retorne g 0 ;
Figura 26: Procedimento de Reconexo por Caminhos
A Figura 26 mostra que o algoritmo de Reconexo por Caminhos unidirecional inicia
determinando o conjunto de movimentos (s, g) que ser aplicado a s (soluo inicial)
at chegar a g (soluo guia) (linha 3). Cada iterao do procedimento de reconexo por
caminhos unidirecional possui os quatro seguintes passos:
aplicar soluo corrente g o melhor movimento do conjunto de movimentos (linha
5), obtendo a soluo g 00 ;
excluir o melhor movimento do conjunto de movimentos ainda possvel (linha 6);
atualizar a soluo corrente (linha 7); e
testar se a soluo corrente, g, melhor que a melhor soluo, g 0 , encontrada ao
longo da trajetria aplicada a s para chegar a g. Em caso afirmativo, atribui-se g

52

Marcone Jamilson Freitas Souza


a g 0 (linha 9). No incio do mtodo de reconexo por caminhos, atribui-se a g 0 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 0 (linha 12).
A Figura 27 ilustra o funcionamento da Reconexo por Caminhos em um problema de
programao de tripulaes (Crew Scheduling Problem). Nesta figura 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 intensificao Reconexo por Caminhos aplicado ao PPT


Para computar a diferena (s1 , s2 ) entre as solues inicial e guia, verificado 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 fixada 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 mantendose fixa 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 fixas 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 intensificao por Reconexo por Caminhos para um problema de minimizao.
Algoritmo BTRC
1: Entrada: f (.), N (.), A(.), |V |, fmin , |T |, BT max, s, IterAtivRC, IteracoesRC
2: s s;
3: Iter 0;
4: M elhorIter 0;
5: T ;
6: ConjuntoElite ;
7: IterSemM elhora 0;
8: Inicialize a funo de aspirao A;
9: enquanto Critrio de parada no satisfeito faa
10:
Iter Iter + 1;
11:
Seja s0 s m tal que o movimento m no seja tabu (m
/ T ) ou f (s0 ) < A(f (s));
12:
Atualize a lista tabu;
13:
s s0 ;
14:
se s deve pertencer ao conjunto de solues elite ento
15:
Inserir s no ConjuntoElite;
16:
fim se
17:
se (IterSemM elhora mod IterAtivRC < IteracoesRC) e (Iter IterAtivRC) ento
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:

Escolher aleatoriamente g ConjuntoElite com probabilidade uniforme;


Atribuir a g 0 a melhor soluo obtida aplicando reconexo por caminhos ao par (s, g);
s g0 ;

fim se
se g 0 deve pertencer ao conjunto de solues elite ento
Inserir g 0 no ConjuntoElite;
fim se
se f (s) < f (s ) ento
s s;
M elhorIter Iter;
IterSemM elhora 0;
seno
IterSemM elhora IterSemM elhora + 1;
fim se
Atualize a funo de aspirao A;
fim enquanto
s s ;
Retorne s;
Figura 28: Algoritmo Busca Tabu com Reconexo por Caminhos

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

5.2

Marcone Jamilson Freitas Souza

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 durante o processo de construo periodicamente refinar a soluo parcial.
Por exemplo, considerando o Problema do Caixeiro Viajante, imagine que uma soluo
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
refinada por um mtodo qualquer, por exemplo, o mtodo da descida. Assim, a construo
s prossegue aps o refinamento, que, no caso, pode alterar a ordem de visita das cidades.
Inserida a prxima cidade, feito outro refinamento e assim sucessivamente.

5.3

Relaxao Adaptativa

A Relaxao Adaptativa (tambm conhecida como Oscilao Estratgica) est intimamente ligada s origens da Busca Tabu [20]. Esta tcnica prov um meio de se alcanar
uma combinao entre intensificao e diversificao. Ela consiste em orientar movimentos em relao a um nvel crtico, que pode ser identificado por um estgio de construo
ou um intervalo escolhido de valores para uma funo. Tal nvel crtico (ou fronteira de
oscilao) freqentemente representa um ponto onde o mtodo normalmente seria interrompido. Em vez de parar quando esta fronteira alcanada, as regras para selecionar
movimentos so modificadas para permitir que a regio definida pelo nvel crtico seja atravessada. Esta abordagem ento continua at uma dada profundidade alm da fronteira de
oscilao. Encontrado este limite, retorna-se na direo oposta, e assim por diante.
A Figura 29 ilustra o comportamento deste procedimento.

Figura 29: Oscilao Estratgica


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

Inteligncia Computacional para Otimizao

55

esse comportamento estabelecido por meio da gerao de avaliaes e regras modificadas


para os movimentos, dependendo da regio navegada e da direo da busca. A possibilidade de percorrer uma trajetria j visitada evitada por mecanismos tabu padres, tais
como aqueles estabelecidos pelas funes da memria de curto prazo.
Em [43] 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 wi 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 /;
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 permanece inalterado.
O parmetro neste esquema randomicamente selecionado, a cada vez, no intervalo
[1, 8; 2, 2]. Em [13], deterministicamente fixado no valor 2. Em [43] 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 implementado 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 figura,
IteracaoAtualizacao() indica quando os pesos dinmicos devem ser atualizados.

56

Marcone Jamilson Freitas Souza

Algoritmo BTRA
1: s GerarSolucaoInicial();
2: s s;
3: ListaT abu ;
4: repita
5:
Selecione um subconjunto V da vizinhana corrente N ;
6:
melhorM ovimento movimentoRandomico(V );
7:
melhorCustoDinamico ;
8:
para todo Movimento m V faa
9:
se ( f (s m) < f (s ) ) ento
10:
melhorM ovimento m;
11:
interromper;
12:
seno
13:
se (m
/ ListaT abu) ento
14:
se ( f (s m) < f (s) ) ento
15:
melhorM ovimento m;
16:
interromper;
17:
seno
18:
se (CustoP orP esosDinamicos(sm) < melhorCustoDinamico) ento
19:
melhorM ovimento m;
20:
melhorCustoDinamico CustoP orP esosDinamicos(s m);
21:
fim se
22:
fim se
23:
fim se
24:
fim se
25:
fim para
26:
s s melhorM ovimento;
27:
se f (s) < f (s ) ento
28:
s s;
29:
fim se
30:
AtualizarListaT abu();
31:
se IteracaoAtualizacao() ento AtualizarP esosDinamicos();
32: at que Critrio de parada seja alcanado;
33: s s ;
34: Retorne s;
Figura 30: Algoritmo de Busca Tabu com Relaxao Adaptativa

Inteligncia Computacional para Otimizao

57

Referncias
[1] S. Barnard. Stereo matching by hierarchical microcanonical annealing. In Proceedings
of the 10th International Joint Conference on Artificial Intelligence, Milan, Italy,
1987.
[2] M.P. Bastos and C.C. Ribeiro. Reactive Tabu Search with Path Relinking for the
Steiner Problem in Graphs. In Proceedings of the Third Metaheuristics International
Conference, pages 3136, Angra dos Reis, Brazil, 1999.
[3] R. Battiti. Reactive Search: Toward Self-Tuning Heuristics. In V.J. Rayward-Smith,
I.H. Osman, C.R. Reeves, and G.D. Smith, editors, Modern Heuristic Search Methods,
chapter 4, pages 6183. John Wiley & Sons, New York, 1996.
[4] R. Battiti and G. Tecchiolli. The Reactive Tabu Search. ORSA Journal of Computing,
6:126140, 1994.
[5] M. Creutz. Microcanonical Monte-Carlo Simulation.
50:14111414, 1983.

Physical Review Letters,

[6] F. Dammeyer and S. Vo. Dynamic tabu list management using the reverse elimination method. In P.L. Hammer, editor, Tabu Search, volume 41 of Annals of Operations
Research, pages 3146. Baltzer Science Publishers, Amsterdan, 1993.
[7] D. de Werra. Tabu Search Techniques: A Tutorial and an Application to Neural
Networks. OR Spektrum, 11:131141, 1989.
[8] M. Dorigo. Optimization, Learning and Natural Algorithms. Phd thesis, Dipartimento
di Elettronica, Politecnico di Milano, Italy, 1992. 140 pp.
[9] M. Dorigo, V. Maniezzo, and A. Colorni. The Ant System: Optimization by a Colony
of Cooperating Agents. IEEE Transactions on Systems, Man, and Cybernetics - Part
B, 26:2941, 1996.
[10] M. Dorigo and T. Sttzle. The Ant Colony Optimization Metaheuristic: Algorithms,
Applications, and Advances. In F. Glover and G. A. Kochenberger, editors, Handbook
of Metaheuristics, chapter 9, pages 251285. Kluwer Academic Publishers, 2003.
[11] K.A. Dowsland. Simulated Annealing. In C.R. Reeves, editor, Modern Heuristic
Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 2, pages 2069. Blackwell Scientific Publications, London, 1993.
[12] T.A. Feo and M.G.C. Resende. Greedy randomized adaptive search procedures. Journal of Global Optimization, 6:109133, 1995.
[13] M. Gendreau, A. Hertz, and G. Laporte. A tabu search heuristic for the vehicle
routing problem. Management Science, 40:12761290, 1994.
[14] F. Glover. Future paths for Integer Programming and links to Artificial Intelligence.
Computers and Operations Research, 5:553549, 1986.
[15] F. Glover. Tabu Search: Part I. ORSA Journal of Computing, 1:190206, 1989.
[16] F. Glover. Tabu Search: Part II. ORSA Journal of Computing, 2:432, 1990.

58

Marcone Jamilson Freitas Souza

[17] F. Glover. Tabu Search and adaptive memory programming - advances, applications and challenges. In R. Barr, R. Helgason, and J. Kennington, editors, Interfaces
in Computer Sciences and Operations Research, pages 175. Kluwer Academic Publishers, 1996.
[18] F. Glover and S. Hanafi. Tabu Search and Finite Convergence. To appear in Discrete
Applied Mathematics.
[19] F. Glover and M. Laguna. Tabu Search. In C.R. Reeves, editor, Modern Heuristic
Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 3, pages 70150. Blackwell Scientific Publications, London, 1993.
[20] F. Glover and M. Laguna. Tabu Search. Kluwer Academic Publishers, Boston, 1997.
[21] F. Glover and M. Laguna. Scatter Search and Path Relinking: Advances and Applications. In F. Glover and G. A. Kochenberger, editors, Handbook of Metaheuristics,
chapter 1, pages 135. Kluwer Academic Publishers, 2003.
[22] F. Glover, E. Taillard, and D. de Werra. A users guide to tabu search. In P.L.
Hammer, editor, Tabu Search, volume 41 of Annals of Operations Research, pages
328. Baltzer Science Publishers, Amsterdan, 1993.
[23] D.E. Goldberg. Genetic Algorithms in Search, Optimization and Machine Learning.
Addison-Wesley, Berkeley, 1989.
[24] S. Hanafi. On the Convergence of Tabu Search. To appear in Journal of Heuristics.
[25] P. Hansen. The steepest ascent mildest descent heuristic for combinatorial programming. In Congress on Numerical Methods in Combinatorial Optimization, Capri,
Italy, 1986.
[26] P. Hansen and N. Mladenovi. Variable Neighborhood Search: Methods and Recent
Applications. In Proceedings of the Third Metaheuristics International Conference,
pages 275280, Angra dos Reis, Brazil, 1999.
[27] P. Hansen and N. Mlavenovi. Variable Neighborhood Search: Principles and Applications. European Journal of Operational Research, 130:449467, 2001.
[28] A. Hertz. Finding a feasible course schedule using tabu search. Discrete Applied
Mathematics, 35:255270, 1992.
[29] A. Hertz and D. de Werra. The tabu search metaheuristic: how we used it. Annals
of Mathematics and Artificial Intelligence, 1:111121, 1990.
[30] A. Hertz and M. Widmer. Guidelines for the use of meta-heuristics in combinatorial
optimization. European Journal of Operational Research Society, 151:247252, 2003.
[31] S. Kirkpatrick, D.C. Gellat, and M.P. Vecchi. Optimization by Simulated Annealing.
Science, 220:671680, 1983.
[32] A. Linhares and J.R.A. Torreo. Microcanonical Optimization Applied to the Traveling Salesman Problem. International Journal of Modern Physics C, 9:133146,
1998.

Inteligncia Computacional para Otimizao

59

[33] H.R. Loureno, O. Martin, and T. Sttzle. Iterated Local Search. In F. Glover
and G. Kochenberger, editors, Handbook of Metaheuristics, pages 321353. Kluwer
Academic Publishers, Norwell, MA, 2003.
[34] N. Mladenovi and P. Hansen. Variable Neighborhood Search. Computers and Operations Research, 24:10971100, 1997.
[35] J. V. Moccellin, M. O. Santos, and M. S. Nagano. Um mtodo heurstico Busca
Tabu-Simulated Annealing para Flowshops Permutacionais . In Anais do XXXIII
Simpsio Brasileiro de Pesquisa Operacional, pages 10881095, 2001.
[36] M. Prais and C.C. Ribeiro. Reactive GRASP: An application to a matrix decomposition problem in TDMA traffic assignment. INFORMS Journal on Computing,
1998.
[37] M. Prais and C.C. Ribeiro. Parameter Variation in GRASP Implementations. In
Proceedings of the Third Metaheuristics International Conference, pages 375380,
Angra dos Reis, Brazil, 1999.
[38] M. Prais and C.C. Ribeiro. Variao de Parmetros em Procedimentos GRASP.
Investigacin Operativa, 1999.
[39] C.R. Reeves. Genetic Algorithms. In C.R. Reeves, editor, Modern Heuristic Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 4, pages 151196. Blackwell Scientific Publications, 1993.
[40] C. C. Ribeiro, E. Uchoa, and R. F. Werneck. A hybrid GRASP with perturbations
for the Steiner problem in graphs. INFORMS Journal on Computing, 14:228246,
2002.
[41] C.C. Ribeiro. Metaheuristics and Applications. In Advanced School on Artificial
Intelligence, Estoril, Portugal, 1996.
[42] I. C. M. Rosseti. Estratgias sequenciais e paralelas de GRASP com reconexo por
caminhos para o problema de sntese de redes a 2-caminhos. Tese de doutorado,
Pontifcia Universidade Catlica do Rio de Janeiro, Rio de Janeiro, 2003.
[43] A. Schaefer. Tabu search techniques for large high-school timetabling problems. In
Proceedings of the 30th National Conference on Artificial Intelligence, pages 363368,
1996.
[44] B. Selman, H. Levesque, and D. Mitchell. A new method for solving hard satisfiability
problems. In Proceedings of the 10th National Conference on Artificial Intelligence,
pages 440446, 1992.
[45] J.R.A. Torreo. Inteligncia Computacional. Notas de aula, Universidade Federal
Fluminense, Niteri, 2004.
[46] J.R.A. Torreo and E. Roe. Microcanonical Optimization Applied to Visual Processing. Physics Letters A, 122:377382, 1980.
[47] Christos Voudouris. Guided Local Search for Combinatorial Optimisation Problems.
Phd thesis, Department of Computer Science, University of Essex, 1997.

Vous aimerez peut-être aussi