Académique Documents
Professionnel Documents
Culture Documents
= (00111)
t
com f(s
) = 11.
Uma outra forma muito comum de se gerar uma soluo inicial escolher os elementos
candidatos aleatoriamente. Isto , a cada passo, o elemento a ser inserido na soluo
Inteligncia Computacional para Otimizao 5
aleatoriamente selecionado dentre o conjunto de elementos candidatos ainda no selecio-
nados. A grande vantagem desta metodologia reside na simplicidade de implementao.
Segundo testes empricos, a desvantagem a baixa qualidade em mdia da soluo nal
produzida, que em geral requer um maior esforo computacional na fase de renamento.
A Figura 2 mostra o pseudocdigo para a construo de uma soluo inicial aleatria
para um problema de otimizao.
procedimento ConstrucaoAleatoria(g(.), s);
1 s ;
2 Inicialize o conjunto C de elementos candidatos;
3 enquanto (C ,= ) faa
4 Escolha aleatoriamente t
escolhido
C;
5 s s t
escolhido
;
6 Atualize o conjunto C de elementos candidatos;
7 m-enquanto;
8 Retorne s;
m ConstrucaoAleatoria;
Figura 2: Heurstica de construo aleatria de uma soluo inicial
Ilustremos, agora, aplicaes de heursticas construtivas para o Problema do Caixeiro
Viajante. Sero apresentadas trs heursticas: (a) Heurstica do Vizinho Mais Prximo;
(b) Heurstica de Nemhauser e Bellmore e (c) Heurstica da Insero Mais Barata.
As heursticas sero ilustradas considerando um exemplo com 6 cidades e as distncias
dadas pela tabela a seguir:
Cidade 1 2 3 4 5 6
1 0 2 1 4 9 1
2 2 0 5 9 7 2
3 1 5 0 3 8 6
4 4 9 3 0 2 5
5 9 7 8 2 0 2
6 1 2 6 5 2 0
(a) Heurstica do Vizinho Mais Prximo:
Nesta heurstica, parte-se da cidade origem e adiciona-se a cada passo a cidade k
ainda no visitada cuja distncia ltima cidade visitada a menor possvel. O
procedimento de construo termina quando todas as cidades forem visitadas, situao
na qual feita a ligao entre a ltima cidade visitada e a cidade origem.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, tem-se:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor (A
cidade 6 dista de mesmo valor, e tambm poderia ser escolhida).
ii) Passo 2: Adicione a cidade 4 rota, j que sua distncia cidade 3 a menor
dentre as cidades ainda no visitadas (no caso, as cidades 2, 4, 5 e 6).
iii) Passo 3: Adicione a cidade 5 rota, j que sua distncia cidade 4 a menor
dentre todas as cidades ainda no visitadas (no caso, as cidades 2, 5 e 6)
iv) Passo 4: Adicione a cidade 6 rota, j que sua distncia cidade 5 a menor
dentre todas as cidades ainda no visitadas (no caso, as cidades 2 e 6)
6 Marcone Jamilson Freitas Souza
v) Passo 5: Adicione a cidade 2 rota, j que esta a nica cidade ainda no visitada
vi) Passo 6: Faa a ligao da cidade 2 (ltima cidade visitada) cidade 1 (cidade
origem)
Ao nal destes 6 passos, teremos produzido a soluo s = (1 3 4 5 6 2). Para esta
soluo, a distncia total percorrida :
dist = d
13
+d
34
+d
45
+d
56
+d
62
+d
21
= 1 + 3 + 2 + 2 + 2 + 2 = 12.
Complexidade da Heurstica do Vizinho Mais Prximo:
Iterao # operaes Observaes
1 n 1 H n 1 ligaes para serem analisadas
2 n 2 H n 2 ligaes para serem analisadas
n 1 1 H apenas uma cidade ainda no visitada
Total 1 + 2 + + n 1 = n(n 1)/2 operaes
A soma anterior uma Progresso Aritmtica cujo primeiro elemento 1, ltimo
elemento n1, a razo igual a 1 e o nmero de termos n1. A soma dos termos
vale S =
_
a
1
+a
nelem
2
_
nelem =
_
1+(n1)
2
_
(n 1) = n(n 1)/2
(b) Heurstica de Bellmore e Nemhauser:
Nesta heurstica, adicionamos rota corrente a cidade k ainda no visitada que esteja
mais prxima dos extremos da subrota, isto , a cidade k se liga a uma cidade que
esteja em uma extremidade da subrota ou outra extremidade.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, tem-se:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor
(A cidade 6 dista de mesmo valor, e tambm poderia ser escolhida em lugar da
cidade 3).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 6 a que menos
dista de um extremo da rota (cidade 1) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d
61
= 1 < d
34
= 3, ento a cidade
6 a escolhida e deve ser conectada cidade 1, isto , a rota corrente passa a ser:
s = (6 1 3).
iii) Passo 3: Das cidades ainda no visitadas (2, 4 e 5), a cidade 2 a que menos
dista de um extremo da rota (cidade 6) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d
26
= 2 < d
34
= 3, ento a cidade
2 a escolhida e deve ser conectada cidade 6, isto , a rota corrente passa a
ser: s = (2 6 1 3). A cidade 5 tambm poderia ter sido escolhida para se
conectar cidade 6, pois tem a mesma distncia da cidade 2 cidade 6.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), a cidade 5 a que menos dista
de um extremo da rota (cidade 2) e a cidade 4 a que menos dista do outro
extremo da rota (cidade 3). Como a distncia d
34
= 3 < d
52
= 7, ento a cidade
4 a escolhida e deve ser conectada cidade 3, isto , a rota corrente passa a ser:
s = (2 6 1 3 4).
Inteligncia Computacional para Otimizao 7
v) Passo 5: A nica cidade ainda no visitada a cidade 5. Ela dista 7 unidades
de um extremo da rota (cidade 2) e 2 unidades do outro extremo (cidade 4).
Logo, a cidade 5 deve ser conectada cidade 4, isto , a rota corrente passa a ser:
s = (2 6 1 3 4 5).
vi) Passo 6: Como todas as cidades j foram visitadas, resta agora somente conectar
as duas extremidades (cidades 5 e 2) para formar um ciclo hamiltoniano.
Ao nal destes 6 passos, teremos produzido a soluo s = (2 6 1 3 4 5). Para esta
soluo, a distncia total percorrida :
dist = d
26
+d
61
+d
13
+d
34
+d
45
+d
52
= 2 + 1 + 1 + 3 + 2 + 7 = 16.
(c) Heurstica da Insero Mais Barata:
Nesta heurstica, parte-se de uma subrota inicial envolvendo trs cidades e, a cada
passo, adiciona-se uma cidade k ainda no visitada entre as cidades i e j da subrota
cujo custo de insero s
k
ij
dado pela frmula abaixo seja a menor possvel.
s
k
ij
= d
ik
+d
kj
d
ij
As guras a seguir ilustram a insero da cidade k entre as cidades i e j.
(a) Antes da insero (b) Depois da insero
Observa-se que a subrota inicial pode ser formada por um procedimento construtivo
qualquer. Por exemplo, parta da cidade origem e adicione subrota a cidade mais
prxima. A seguir, considerando as duas extremidades (cidade origem e ltima ci-
dade inserida), adicione a cidade ainda no visitada cuja soma das distncias s duas
extremidades seja a menor.
No exemplo considerado, considerando-se a cidade 1 como a cidade origem, constri-se
uma soluo com os seguintes passos:
i) Passo 1: Adicione a cidade 3 rota, j que sua distncia cidade 1 a menor (A
cidade 6 tambm tem mesma distncia, e tambm poderia ser escolhida).
ii) Passo 2: Das cidades ainda no visitadas (2, 4, 5 e 6), a cidade 2 a aquela cuja
distncia s cidades extremas 1 e 3 a menor, no caso, d
21
+ d
32
= 2 + 5 = 7.
Ento, a cidade 2 a escolhida e deve ser conectada s cidades 3 e 2, isto , a
8 Marcone Jamilson Freitas Souza
subrota corrente : s = (1 3 2), com a cidade 2 ligada cidade 1. Com
os passos 2 e 3 encerra-se a construo de uma subrota inicial envolvendo trs
cidades. A distncia total percorrida : d(s) = d
13
+d
32
+d
21
= 1 + 5 + 2 = 8.
iii) Passo 3: Das cidades ainda no visitadas (4, 5 e 6), calculemos o custo de insero
entre todas as cidades i e j da subrota. A tabela a seguir mostra os custos de
insero.
i k j s
k
ij
= d
ik
+d
kj
d
ij
1 4 3 s
4
13
= 4 + 3 - 1 = 6
1 5 3 s
5
13
= 9 + 8 - 1 = 16
1 6 3 s
6
13
= 1 + 6 - 1 = 6
3 4 2 s
4
32
= 3 + 9 - 5 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 7
3 6 2 s
6
32
= 6 + 2 - 5 = 3
2 4 1 s
4
21
= 9 + 4 - 2 = 11
2 5 1 s
5
21
= 7 + 9 - 2 = 14
2 6 1 s
6
21
= 2 + 1 - 2 = 1
1 5 3 s
5
13
= 9 + 8 - 1 = 16
3 4 2 s
4
32
= 3 + 9 - 5 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 7
2 4 6 s
4
26
= 9 + 5 - 2 = 12
2 5 6 s
5
26
= 7 + 2 - 2 = 7
6 4 1 s
4
61
= 5 + 4 - 1 = 8
6 5 1 s
5
61
= 2 + 9 - 1 = 10
Como o menor custo de insero s
4
13
, ento a cidade 4 deve ser inserida entre as
cidades 1 e 3. Logo, a subrota corrente passa a ser: s = (1 4 3 2 6).
A distncia associada a esta subrota : d(s) = d(s)
anterior
+s
4
13
= 9 + 6 = 15.
v) Passo 5: A nica cidade ainda no visitada a cidade 5. A tabela a seguir mostra
os custos de insero desta cidade entre todas as arestas da subrota corrente.
i k j s
k
ij
= d
ik
+d
kj
d
ij
1 5 4 s
5
14
= 9 + 2 - 4 = 7
4 5 3 s
5
43
= 2 + 8 - 3 = 7
3 5 2 s
5
32
= 8 + 7 - 5 = 10
2 5 6 s
5
26
= 7 + 2 - 2 = 7
6 5 1 s
5
61
= 2 + 9 - 1 = 10
Como o menor custo de insero s
5
14
, ento a cidade 5 deve ser inserida entre
as cidades 1 e 4. Logo, a rota resultante : s = (1 5 4 3 2 6). A
distncia associada a esta rota : d(s) = d(s)
anterior
+s
5
14
= 15 + 7 = 22.
Inteligncia Computacional para Otimizao 9
3 Heursticas de Renamento
As heursticas de renamento em problemas de otimizao, tambm chamadas de tcnicas
de busca local, constituem uma famlia de tcnicas baseadas na noo de vizinhana. Mais
especicamente, seja S o espao de pesquisa de um problema de otimizao e f a funo
objetivo a minimizar. A funo N, a qual depende da estrutura do problema tratado,
associa a cada soluo s S, sua vizinhana N(S) S. Cada soluo s
N(s)
chamada de vizinho de s. Denomina-se movimento a modicao m que transforma uma
soluo s em outra, s
s m.
Em linhas gerais, esta classe de heursticas parte de uma soluo inicial qualquer (a
qual pode ser obtida por uma heurstica construtiva ou ento gerada aleatoriamente) e
caminha, a cada iterao, de vizinho para vizinho de acordo com a denio de vizinhana
adotada.
Conforme [30], um mtodo de busca local pode ser visto como um procedimento que
percorre um caminho em um grafo no-orientado G = (S, E), onde S representa o conjunto
de solues s do problema e E o conjunto de arestas (s, s
), com s
N(s).
A denio de vizinhana crucial em uma heurstica de renamento. De uma soluo
s do espao de solues deve ser sempre possvel atingir qualquer outra soluo em um
nmero nito de passos, utilizando um determinado tipo ou tipos de movimentos. Por
exemplo, considere no problema da mochila as solues s
(1)
= (01001)
t
e s
(2)
= (11010)
t
do espao de solues. Com o movimento m = {trocar o valor de um bit} possvel
navegar no espao de solues do problema de s
(1)
a s
(2)
. De fato, com esse movimento
m podemos percorrer o seguinte caminho: s
(1)
= (01001)
t
(11001)
t
(11011)
t
(11010)
t
= s
(2)
. No entanto, se denssimos o movimento m como sendo a troca de
dois bits simultaneamente, jamais conseguiramos de s
(1)
chegar a s
(2)
. Desta forma, a
explorao do espao de solues caria prejudicada e, eventualmente, a soluo tima
poderia no ser alcanada.
Em muitos problemas combinatrios tambm difcil at mesmo encontrar uma soluo
vivel. Nessas situaes, pode ser uma m idia caminhar apenas no espao das solues
viveis do problema considerado. Para tais problemas, o espao de busca pode incluir solu-
es inviveis, obtidas a partir do relaxamento de algumas restries do problema original.
Para tanto, basta acrescentar funo de avaliao componentes que penalizam violaes
s restries. Um exemplo tpico de problemas desta natureza o problema de programa-
o de horrios de cursos universitrios (course timetabling). A restrio principal deste
problema requer que as aulas dadas pelo mesmo professor para turmas distintas no se
sobreponham, isto , que no sejam realizadas no mesmo horrio. Considerando como
movimento m a mudana das aulas de um curso de um horrio para outro, dicilmente
geraramos quadros de horrios sem situaes de sobreposio. Relaxando-se estas restri-
es e penalizando-as na funo de avaliao, torna-se muito mais eciente a explorao
do espao de busca [28].
Exempliquemos, agora, como gerar diferentes estruturas de vizinhana. Para tanto,
consideremos o Problema do Caixeiro Viajante, para o qual representamos uma soluo
s por um vetor de n posies, sendo que em cada posio i tem-se a cidade s
i
. Com o
movimento m de troca de posio entre duas cidades denimos a estrutura de vizinhana
N
(T)
. Assim s = (s
1
s
2
s
3
s
n
)
t
tem como vizinhos em N
(T)
(s) as seguintes solues:
s
(1)
= (s
2
s
1
s
3
s
n
)
t
, s
(2)
= (s
3
s
2
s
1
s
n
)
t
, , s
(n1)
= (s
n
s
2
s
3
s
1
)
t
,
s
(n)
= (s
1
s
3
s
2
s
n
)
t
, , s
(n(n1)/2)
= (s
1
s
2
s
3
s
n
s
n1
)
t
. Por outro lado, con-
siderando como movimento m a realocao de uma cidade de uma posio na seqncia de
visita para outra, denimos a estrutura de vizinhana N
(R)
. Nesta estrutura, so vizinhos
10 Marcone Jamilson Freitas Souza
de s = (s
1
s
2
s
3
s
n1
s
n
)
t
as seguintes solues: s
(1)
= (s
2
s
1
s
3
s
n1
s
n
)
t
,
s
(2)
= (s
2
s
3
s
1
s
n1
s
n
)
t
, , s
(n2)
= (s
2
s
3
s
n1
s
1
s
n
)
t
, s
(n1)
=
(s
2
s
3
s
n1
s
n
s
1
)
t
, s
(n)
= (s
1
s
3
s
2
s
n1
s
n
)
t
, s
(n+1)
= (s
1
s
3
s
4
s
2
s
n1
s
n
)
t
,
, s
(2n4)
= (s
1
s
3
s
4
s
n1
s
2
s
n
)
t
, s
(2n3)
= (s
1
s
3
s
4
s
n1
s
n
s
2
)
t
, ,
s
(2n5)
= (s
1
s
3
s
2
s
4
s
n1
s
n
)
t
, , s
(n2)
2
(n1)
= (s
1
s
2
s
3
s
4
s
n
s
n1
)
t
.
Poderamos, tambm, denir como vizinhana de uma soluo s o conjunto de vizinhos
gerados tanto por movimentos de troca quanto por movimentos de realocao, isto ,
N(s) = N
(T)
(s) N
(R)
(s). H outros movimentos mais elaborados, tal como o movi-
mento Or, que consiste em realocar um bloco contguo de cidades em outra posio da
seqncia. Por exemplo, considerando a soluo s = (4 3 1 2)
t
e blocos de tamanho 2,
teramos os seguintes vizinhos para s: s
1
= (1 4 3 2)
t
, s
2
= (4 2 3 1)
t
, s
3
= (4 1 2 3)
t
.
Neste exemplo, o primeiro vizinho gerado pela insero do bloco (4 3) entre as cidades
1 e 2, o segundo vizinho, pela insero do bloco (3 1) entre as cidades 2 e 4 e, nalmente,
o terceiro vizinho, pela insero do bloco (1 2) entre as cidades 4 e 3.
Nas sees 3.1 a 3.4 apresentamos heursticas clssicas de renamento, enquanto na
seo 3.5 apresentada uma heurstica de renamento mais sosticada, que explora o
espao de solues do problema fazendo trocas sistemticas de vizinhanas.
3.1 Mtodo da Descida/Subida (Descent/Uphill Method)
A idia desta tcnica partir de uma soluo inicial qualquer e a cada passo analisar todos
os seus possveis vizinhos, movendo somente para aquele que representar uma melhora no
valor atual da funo de avaliao. Pelo fato de analisar todos os vizinhos e escolher o
melhor, esta tcnica comumente referenciada na literatura inglesa por Best Improvement
Method. O mtodo pra quando um timo local encontrado.
A Figura 3 mostra o pseudocdigo do Mtodo de Descida aplicado minimizao de
uma funo de avaliao f a partir de uma soluo inicial conhecida s e considerando a
busca em uma dada vizinhana N(.).
procedimento Descida(f(.), N(.), s);
1 V = s
N(s) [ f(s
) < f(s);
2 enquanto ([V [ > 0) faa
3 Selecione s
V , onde s
= arg min{f(s
) [ s
V };
4 s s
;
5 V = s
N(s) [ f(s
) < f(s);
6 m-enquanto;
7 Retorne s;
m Descida;
Figura 3: Mtodo da Descida
Para o problema da mochila, representemos uma soluo s por um vetor binrio de
n posies e consideremos como movimento m a troca do valor de um bit. Assim, a
vizinhana de uma soluo s, e se escreve N(s), o conjunto de todos os vizinhos s
que
diferem de s pelo valor de um bit. Formalmente, representamos N(s) = s
: s
s m,
onde m signica a troca do valor de um bit. necessrio, agora, denir uma funo
de avaliao para guiar a busca no espao de solues do problema. Considerando que
se deseja maximizar o valor de retorno trazido pela utilizao de cada item, h duas
possibilidades para a escolha dessa funo.
Inteligncia Computacional para Otimizao 11
A primeira, considerar a explorao apenas no espao de solues viveis. Neste caso,
a funo de avaliao coincide com a prpria funo objetivo do problema, isto :
f(s) =
n
j=1
p
j
s
j
(31)
com s satisfazendo condio de que
n
j=1
w
j
s
j
b.
Outra possibilidade permitir a gerao de solues inviveis. Neste caso, uma funo
de avaliao apropriada seria:
f(s) =
n
j=1
p
j
s
j
max0,
n
j=1
w
j
s
j
b (32)
sendo uma penalidade, por exemplo, =
n
j=1
p
j
= 15.
Observe que o objetivo da segunda parcela desta ltima funo de avaliao penalizar
a colocao na mochila de objetos que ultrapassam sua capacidade. Como a funo de
avaliao f deve ser maximizada, o sinal desta segunda parcela negativo de forma a no
incentivar a realizao de movimentos que gerem solues inviveis. O valor de deve ser
sucientemente grande para atender a este objetivo.
Apliquemos esta heurstica instncia do problema dado, considerando a possibilidade
de gerao de solues infactveis, isto:
Passo 0 : Seja uma soluo inicial qualquer, por exemplo:
s = (01010)
t
f(s) = 6
Peso corrente da mochila = 14
Passo 1 : Devemos, agora, analisar todos os vizinhos de s e calcular a funo de avaliao
deles usando a funo de avaliao (32).
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s
)
(11010)
t
18 8 8
(00010)
t
9 4 4
(01110)
t
21 9 9
(01000)
t
5 2 2
(01011)
t
20 10 10
Melhor vizinho: s
= (01011)
t
f(s
) = 10
Como s
)
(11011)
t
24 12 -3
(00011)
t
15 8 8
(01111)
t
27 13 -47
(01001)
t
11 6 6
(01010)
t
14 6 6
Melhor vizinho: s
= (00011)
t
f(s
) = 8
Como f(s
= (01011)
t
, com f(s
) = 10 como
soluo nal.
No exemplo anterior, caso fosse utilizada a funo de avaliao (31), as solues an-
teriores que ultrapassaram a capacidade da mochila, isto , (11011)
t
) e (01111)
t
, sequer
seriam avaliadas!
importante observar que diferentes solues iniciais conduzem, na maioria das vezes,
a diferentes solues nais. A Figura 4, em que s indica um ponto de partida e s
um timo
local encontrado a partir da aplicao do Mtodo da Descida a s, ilustra esta situao.
E s p a o d e s o l u e s
s
s*
c
u
s
t
o
s*
s*
s
s
Figura 4: Representao esquemtica do funcionamento do Mtodo da Descida
Uma outra funo de avaliao que poderia ser considerada em substituio da fr-
mula (32) a seguinte:
f(s) =
n
j=1
p
j
s
j
f
1
(s) (33)
sendo f
1
(s) =
_
_
1 se
n
j=1
w
j
s
j
b > 0
0 se
n
j=1
w
j
s
j
b 0
Inteligncia Computacional para Otimizao 13
e uma penalidade, denida como antes, por exemplo, =
n
j=1
p
j
= 15.
Nesta formulao no se faz diferena entre o nvel de inviabilidade, pois qualquer que
seja o excesso de peso na mochila, a penalizao a mesma. Esta modelagem pode dicul-
tar a explorao do espao de solues, pois conduz a regies planas, ditas plats, regies
nas quais as heursticas tm diculdade para escapar. Em [30] os autores argumentam que
uma forma comum de evitar esta topologia no espao de busca adicionar componentes
funo de avaliao de forma a discriminar solues que teriam o mesmo valor da funo
custo original. Assim, no exemplo mencionado da mochila, das duas funes de avaliao
apresentadas, a mais adequada para guiar a busca a da frmula (32).
3.2 Mtodo de Primeira Melhora
O mtodo de descida/subida requer a explorao de toda a vizinhana. Um mtodo al-
ternativo, que evita esta pesquisa exaustiva e muito utilizado na literatura o Mtodo de
Primeira Melhora (First Improvement Method). Nesta variante, interrompe-se a explora-
o da vizinhana quando um vizinho melhor encontrado. Desta forma, apenas no pior
caso, toda a vizinhana explorada. Entretanto, tal como no mtodo da descida/subida,
este mtodo ca preso no primeiro timo local encontrado.
Neste mtodo, desejvel que a ordem de explorao das solues vizinhas seja al-
terada a cada passo. Do contrrio, privilegia-se apenas um caminho determinstico no
espao de solues. Por exemplo, em um problema de programao de tripulaes, ima-
gine que um movimento consista em realocar uma tarefa de uma tripulao para outra
tripulao. Se a cada passo, a ordem de explorao das solues vizinhas comear com a
movimentao da primeira tarefa do primeiro tripulante para o segundo tripulante, depois
para o terceiro, a seguir para o quarto e assim sucessivamente, ento os tripulantes iniciais
sero privilegiados. Para evitar isso, uma alternativa de soluo utilizar uma seqncia
diferente de tripulaes a cada iterao do mtodo. Assim, na primeira iterao do m-
todo poder-se-ia usar uma seqncia de tripulantes, por exemplo, (1, 2, 3, 4, , n); outra
seqncia diferente na segunda iterao, por exemplo, (7, 4, 1, 9, ) e assim por diante.
3.3 Mtodo de Descida/Subida Randmica
Como dito anteriormente, o Mtodo de Descida/Subida requer a explorao de toda a
vizinhana. Outro mtodo alternativo, que evita esta pesquisa exaustiva o Mtodo de
Descida/Subida Randmica (Random Descent/Uphill Method). Ele consiste em analisar
um vizinho qualquer e o aceitar somente se ele for estritamente melhor que a soluo
corrente; no o sendo, a soluo corrente permanece inalterada e outro vizinho gerado.
O procedimento interrompido aps um nmero xo de iteraes sem melhora no valor
da melhor soluo obtida at ento.
Como neste mtodo no feita a explorao de toda a vizinhana da soluo corrente,
no h garantia de que a soluo nal seja um timo local.
Na Figura 5 mostra-se o pseudocdigo do Mtodo de Descida Randmica aplicado
ao renamento de uma soluo s em um problema de minimizao de uma funo f(.),
utilizando uma estrutura de vizinhana N(.). Nesta gura, IterMax representa o nmero
mximo de iteraes sem melhora no valor da funo de avaliao.
14 Marcone Jamilson Freitas Souza
procedimento DescidaRandomica(f(.), N(.), IterMax, s);
1 Iter 0; {Contador de iteraes sem melhora }
2 enquanto (Iter < IterMax) faa
3 Iter Iter + 1;
4 Selecione aleatoriamente s
N(s);
5 se (f(s
;
8 m-se;
9 m-enquanto;
10 Retorne s;
m DescidaRandomica;
Figura 5: Mtodo de Descida Randmica
3.4 Mtodo No Ascendente/Descendente Randmico
O mtodo no ascendente randmico (RNA) (respectivamente, Mtodo No Descendente
Randmico - RND) uma variante do mtodo de descida randmica (respectivamente,
mtodo da subida), diferindo dele por aceitar o vizinho gerado aleatoriamente se ele for
melhor ou igual soluo corrente. Este mtodo pra, tambm, aps um nmero xo de
iteraes sem melhora no valor da melhor soluo produzida.
Por este mtodo possvel navegar pelo espao de busca por movimentos laterais [43].
Assim, ele tem condies de percorrer caminhos de descida/subida que passam por regies
planas. Ou seja, se a busca chega em um regio dessas, o mtodo tem condies de
mover-se nela e sair atravs de uma soluo diferente daquela que a ela chegou.
O mtodo RNA/RND , portanto, um procedimento que explora o espao de solues
combinando movimentos de descida/subida com movimentos laterais. Tal como no mtodo
de descida randmica, no h garantia de que a soluo nal seja um timo local.
3.5 Descida em Vizinhana Varivel
O Mtodo de Descida em Vizinhana Varivel (Variable Neighborhood Descent, VND),
proposto por Nenad Mladenovi e Pierre Hansen [33], um mtodo de renamento que
consiste em explorar o espao de solues por meio de trocas sistemticas de estruturas
de vizinhana, aceitando somente solues de melhora da soluo corrente e retornando
primeira estrutura quando uma soluo melhor encontrada.
O pseudocdigo deste mtodo, em que se considera o renamento de uma soluo s
utilizando uma funo de avaliao f, a ser minimizada, e um conjunto de r diferentes
vizinhanas N = N
(1)
, N
(2)
, , N
(r)
, apresentado pela Figura 6.
Dependendo do problema abordado, a busca pelo melhor vizinho (linha 4 da Figura
6) pode ser cara computacionalmente. Nesta situao comum fazer a busca pela pri-
meira soluo de melhora (vide o mtodo da seo 3.2, pgina 13). Outra alternativa
considerar a explorao apenas em um certo percentual da vizinhana, isto , procurar
o melhor vizinho somente em PercViz % de uma vizinhana V N
(k)
(s), sendo PercViz
um parmetro do mtodo. Uma terceira alternativa, bastante utilizada nestas situaes,
aplicar o Mtodo de Descida Randmica (vide seo 3.3, pgina 13), para cada vizinhana
explorada.
Segundo os autores, o mtodo VND baseia-se em trs princpios bsicos:
Inteligncia Computacional para Otimizao 15
procedimento VND(f(.),N(.),r,s)
1 Seja r o nmero de estruturas diferentes de vizinhana;
2 k 1; {Tipo de estrutura de vizinhana corrente}
3 enquanto (k r) faa
4 Encontre o melhor vizinho s
N
(k)
(s);
5 se (f(s
) < f(s))
6 ento
7 s s
;
8 k 1;
9 seno
10 k k + 1;
11 m-se;
12 m-enquanto;
13 Retorne s;
m VND;
Figura 6: Algoritmo VND
Um timo local com relao a uma dada estrutura de vizinhana no corresponde
necessariamente a um timo local com relao a uma outra estrutura de vizinhana;
Um timo global corresponde a um timo local para todas as estruturas de vizi-
nhana;
Para muitos problemas, timos locais com relao a uma ou mais estruturas de
vizinhana so relativamente prximas.
Ainda de acordo os autores, o ltimo princpio, de natureza emprica, indica que um
timo local freqentemente fornece algum tipo de informao sobre o timo global. Este
o caso em que os timos local e global compartilham muitas variveis com o mesmo valor,
o que sugere uma investigao sistemtica da vizinhana de um timo local at a obteno
de uma nova soluo de melhor valor.
4 Metaheursticas
As metaheursticas so procedimentos destinados a encontrar uma boa soluo, eventual-
mente a tima, consistindo na aplicao, em cada passo, de uma heurstica subordinada,
a qual tem que ser modelada para cada problema especco [40].
Contrariamente s heursticas convencionais, as metaheursticas so de carter geral e
providas de mecanismos para tentar escapar de timos locais ainda distantes dos timos
globais.
As metaheursticas diferenciam-se entre si basicamente pelo mecanismo usado para sair
das armadilhas dos timos locais. Elas se dividem em duas categorias, de acordo com o
princpio usado para explorar o espao de solues: busca local e busca populacional.
Nas metaheursticas baseadas em busca local, a explorao do espao de solues feita
por meio de movimentos, os quais so aplicados a cada passo sobre a soluo corrente,
gerando outra soluo promissora em sua vizinhana. Busca Tabu, Simulated Annealing,
Busca em Vizinhana Varivel (Variable Neighborhood Search) e Iterated Local Search so
exemplos de mtodos que se enquadram nesta categoria.
16 Marcone Jamilson Freitas Souza
Os mtodos baseados em busca populacional, por sua vez, consistem em manter um
conjunto de boas solues e combin-las de forma a tentar produzir solues ainda melho-
res. Exemplos clssicos de procedimentos desta categoria so os Algoritmos Genticos, os
Algoritmos Memticos e o Algoritmo Colnia de Formigas.
Apresentamos, a seguir, as principais metaheursticas referenciadas na literatura.
4.1 Multi-Start
A metaheurstica Multi-Start consiste em fazer amostragens do espao de solues, apli-
cando a cada soluo gerada um procedimento de renamento. As amostras so obtidas
por meio da gerao de solues aleatrias. Com este procedimento, h uma diversica-
o no espao de busca, possibilitando escapar dos timos locais. A grande vantagem do
mtodo que ele de fcil implementao.
Na Figura 7 apresenta-se o pseudocdigo de um procedimento Multi-Start bsico para
um problema de minimizao. Um nmero mximo de iteraes ou um tempo mximo de
processamento normalmente utilizado como critrio de parada.
procedimento MultiStart(f(.), N(.), CriterioParada, s)
1 f
; {Valor associado a s
}
2 enquanto (Critrio de parada no atendido) faa
3 s ConstruaSolucao(); {Gere uma soluo s do espao de solues}
4 s BuscaLocal(s); {Aplique um procedimento de melhora em s}
5 se (f(s) < f(s
)) ento
6 s
s;
7 f
f(s);
8 m-se;
9 m-enquanto;
10 s s
;
11 Retorne s;
m MultiStart;
Figura 7: Metaheurstica Multi-Start
Uma variao comum no procedimento Multi-Start consiste em partir de uma soluo
inicial gerada por um procedimento construtivo guloso. Assim, na Figura 7 cria-se uma
linha 0 e substitui-se a linha 1, tal como se segue:
0 s
f(s
); {Valor associado a s
}
O procedimento ContruaSolucaoGulosa() encontra-se descrito na Figura 1, pgina
3 destas notas de aula.
Inteligncia Computacional para Otimizao 17
4.2 Simulated Annealing
Trata-se de uma tcnica de busca local probabilstica, proposta originalmente por Kirkpa-
trick et al. [31], que se fundamenta em uma analogia com a termodinmica, ao simular o
resfriamento de um conjunto de tomos aquecidos, operao conhecida como recozimento
[11].
Esta tcnica comea sua busca a partir de uma soluo inicial qualquer. O procedi-
mento principal consiste em um loop que gera aleatoriamente, em cada iterao, um nico
vizinho s
da soluo corrente s.
Considerando um problema de minimizao, seja a variao de valor da funo
objetivo ao mover-se para uma soluo vizinha candidata, isto , = f(s
) f(s). O
mtodo aceita o movimento e a soluo vizinha passa a ser a nova soluo corrente se
< 0. Caso 0 a soluo vizinha candidata tambm poder ser aceita, mas neste
caso, com uma probabilidade e
/T
, onde T um parmetro do mtodo, chamado de
temperatura e que regula a probabilidade de se aceitar solues de pior custo.
A temperatura T assume, inicialmente, um valor elevado T
0
. Aps um nmero xo
de iteraes (o qual representa o nmero de iteraes necessrias para o sistema atingir o
equilbrio trmico em uma dada temperatura), a temperatura gradativamente diminuda
por uma razo de resfriamento , tal que T
k
T
k1
, sendo 0 < < 1. Com esse pro-
cedimento, d-se, no incio uma chance maior para escapar de mnimos locais e, medida
que T aproxima-se de zero, o algoritmo comporta-se como o mtodo de descida, uma vez
que diminui a probabilidade de se aceitar movimentos de piora
_
T 0 = e
/T
0
_
A Figura 8 mostra a inuncia da variao da temperatura na funo de probabilidade.
Para melhor entendimento desta funo, considera-se que a variao de energia a
mesma durante toda a busca, no caso, xado em uma unidade. Observe que no incio
do processo, quando a temperatura elevada, a funo de probabilidade assume valores
prximos unidade, enquanto que no nal do processo, quando a temperatura se aproxima
de zero, o valor da funo de probabilidade tambm se aproxima de zero.
0 10 20 30 40 50
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
Temperatura T
exp(1/T)
Figura 8: Comportamento da funo de probabilidade
O procedimento pra quando a temperatura chega a um valor prximo de zero e ne-
nhuma soluo de piora da soluo corrente mais aceita, isto , quando o sistema est
18 Marcone Jamilson Freitas Souza
estvel. A soluo obtida quando o sistema encontra-se nesta situao evidencia o encontro
de um timo local.
Os parmetros de controle do procedimento so a razo de resfriamento , o nmero
de iteraes para cada temperatura (SAmax) e a temperatura inicial T
0
.
Apresenta-se, pela Figura 9, o algoritmo Simulated Annealing bsico aplicado a um
problema de minimizao.
procedimento SA(f(.), N(.), , SAmax, T
0
, s)
1 s
N(s);
8 = f(s
) f(s);
9 se ( < 0)
10 ento
11 s s
;
12 se (f(s
) < f(s
)) ento s
;
13 seno
14 Tome x [0, 1];
15 se (x < e
/T
) ento s s
;
16 m-se;
17 m-enquanto;
18 T T;
19 IterT 0;
20 m-enquanto;
21 s s
;
22 Retorne s;
m SA;
Figura 9: Algoritmo Simulated Annealing
Observamos que no caso de o problema ser de maximizao, as seguintes modicaes
devem ser feitas na Figura 9: Na linha 9, considerar que > 0; na linha 12, substituir
pelo teste (f(s
) > f(s
N(s);
7 = f(s
) f(s);
8 se ( < 0)
9 ento
10 Aceitos Aceitos + 1;
11 seno
12 Tome x [0, 1];
13 se (x < e
/T
) ento Aceitos Aceitos + 1;
14 m-se;
15 m-para;
16 se (Aceitos SAmax)
17 ento Continua FALSE;
18 seno T T;
19 m-se;
20 m-enquanto;
21 Retorne T;
m TemperaturaInicial;
Figura 10: Determinao autoadaptativa da temperatura inicial
Em teoria, a temperatura nal deve ser zero. Entretanto, na prtica suciente chegar
a uma temperatura prxima de zero, devido preciso limitada da implementao compu-
tacional [44]. Um valor tpico tomar T
f
= 0, 001. Alternativamente, pode-se identicar
o congelamento do sistema quando a taxa de aceitao de movimentos car abaixo de um
valor predeterminado.
Observa-se, nalmente, como regra geral, que os parmetros mais adequados para uma
dada aplicao do algoritmo s podem ser estabelecidos por experimentao [44].
Inteligncia Computacional para Otimizao 21
4.3 Busca Tabu
Descrevemos, a seguir, de forma resumida, os princpios bsicos da Busca Tabu - BT
(Tabu Search), tcnica originada nos trabalhos independentes de Fred Glover [14] e Pierre
Hansen [25]. Referenciamos a [14, 15, 16, 22, 19, 20, 7, 29] para um melhor detalhamento
do mtodo.
A Busca Tabu um mtodo de busca local que consiste em explorar o espao de
solues movendo-se de uma soluo para outra que seja seu melhor vizinho. Esta estra-
tgia, juntamente com uma estrutura de memria para armazenar as solues geradas (ou
caractersticas destas) permite que a busca no que presa em um timo local.
Mais especicamente, comeando com uma soluo inicial s
0
, um algoritmo BT explora,
a cada iterao, um subconjunto V da vizinhana N(s) da soluo corrente s. O membro
s
de V com melhor valor nesta regio segundo a funo f(.) torna-se a nova soluo
corrente mesmo que s
em V pode
ser gerada se f(s
) onde s
}
4 T ; {Lista Tabu}
5 Inicialize a funo de aspirao A;
6 enquanto (f(s) > f
min
e Iter MelhorIter BTmax) faa
7 Iter Iter + 1;
8 Seja s
) < A(f(s)));
9 Atualize a lista tabu T;
10 s s
;
11 se (f(s) < f(s
)) ento
12 s
s;
13 MelhorIter Iter;
14 m-se;
15 Atualize a funo de aspirao A;
16 m-enquanto;
17 s s
;
18 Retorne s;
m BT;
Figura 11: Algoritmo de Busca Tabu
comum em mtodos de Busca Tabu incluir estratgias de intensicao, as quais
tm por objetivo concentrar a pesquisa em determinadas regies consideradas promissoras.
Uma estratgia tpica retornar uma soluo j visitada para explorar sua vizinhana
de forma mais efetiva. Outra estratgia consiste em incorporar atributos das melhores
solues j encontradas durante o progresso da pesquisa e estimular componentes des-
tas solues a tornar parte da soluo corrente. Nesse caso, so consideradas livres no
procedimento de busca local apenas as componentes no associadas s boas solues, per-
manecendo as demais componentes xas. Um critrio de trmino, tal como um nmero
xo de iteraes, utilizado para encerrar o perodo de intensicao. Na seo 5.1, pgina
50, detalha-se um procedimento de intensicao, a Reconexo por Caminhos, mecanismo
que comumente associado a implementaes Busca Tabu.
Mtodos baseados em Busca Tabu incluem, tambm, estratgias de diversicao. O
objetivo destas estratgias, que tipicamente utilizam uma memria de longo prazo, re-
direcionar a pesquisa para regies ainda no sucientemente exploradas do espao de
solues. Estas estratgias procuram, ao contrrio das estratgias de intensicao, gerar
solues que tm atributos signicativamente diferentes daqueles encontrados nas melho-
res solues obtidas. A diversicao, em geral, utilizada somente em determinadas
situaes, como, por exemplo, quando dada uma soluo s, no existem movimentos m
de melhora para ela, indicando que o algoritmo j exauriu a anlise naquela regio. Para
escapar desta regio, a idia estabelecer uma penalidade w(s, m) para uso desses movi-
Inteligncia Computacional para Otimizao 23
mentos. Um nmero xo de iteraes sem melhora no valor da soluo tima corrente ,
em geral, utilizado para acionar estas estratgias. Na seo 5.3, pgina 54, detalha-se um
procedimento de diversicao, a Relaxao Adaptativa.
Mtodos de Busca Tabu incluem, tambm, listas tabu dinmicas [6, 42], muitas das
quais atualizadas de acordo com o progresso da pesquisa [4, 3, 2]. A grande vantagem de se
usar uma lista tabu de tamanho dinmico que se minimiza a possibilidade de ocorrncia
de ciclagem. Em [22] os autores resolvem um problema de roteamento de veculos por
meio de Busca Tabu utilizando uma lista tabu dinmica que varia no intervalo [t
min
, t
max
],
sendo t
min
= 0, 9n e t
max
= 1, 1n, com n representando o nmero de cidades da instncia
considerada. Nesta aplicao, depois que o tamanho da lista escolhido aleatoriamente
no intervalo [t
min
, t
max
], ele mantido constante por 2t
max
iteraes. A idia por trs da
utilizao da lista dinmica que, se com um dado tamanho de lista h ciclagem, ento
aumentando ou diminuindo esse tamanho haver alterao da quantidade de movimentos
tabu e, assim, diferentes solues podero ser geradas. Com esta possibilidade de mudana
de trajetria no espao de busca, a ocorrncia de ciclagem ca reduzida.
Aspectos de convergncia do mtodo so estudados em [18] e [24].
De forma a ilustrar o mtodo de Busca Tabu, apliquemos esta metodologia heurstica
instncia do problema da mochila apresentado no incio destas notas de aula. Consi-
deremos uma lista tabu T de cardinalidade [T[ = 1 e como atributo tabu a posio do
bit alterado. Utilizemos o critrio de aspirao por objetivo, isto , um movimento tabu
somente ser realizado se a soluo produzida melhorar a melhor soluo gerada at ento.
O critrio de parada ser BTmax = 1, isto , apenas uma iterao sem melhora.
Passo 0 : Seja uma soluo inicial qualquer, por exemplo:
s = (01010)
t
f(s) = 6
Peso corrente da mochila = 14
Lista tabu = T =
Melhor soluo at ento: s
= (01010)
t
e f(s
) = 6
Iter = 0; MelhorIter = 0;
Passo 1 : Devemos, agora, analisar todos os vizinhos de s e calcular a funo de avaliao
deles por meio da expresso (32), denida pgina 11.
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s
)
(11010)
t
18 8 8
(00010)
t
9 4 4
(01110)
t
21 9 9
(01000)
t
5 2 2
(01011)
t
20 10 10
Melhor vizinho: s
= (01011)
t
, com f(s
) = 10
Como s
= (01011)
t
e f(s
) = 10 (pois f(s
) > f(s
))
Iter = 1; MelhorIter = 1;
Como Iter MelhorIter = 1 1 = 0 BTmax = 1, ento o procedimento de
24 Marcone Jamilson Freitas Souza
explorao do espao de solues deve continuar.
Passo 2 : Determinemos, agora, o melhor vizinho de s = (01011)
t
:
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s
)
(11011)
t
24 12 -3
(00011)
t
15 8 8
(01111)
t
27 13 -47
(01001)
t
11 6 6
(01010)
t
14 6 6
Melhor vizinho: s
= (00011)
t
, com f(s
) = 8
Como s
= (01011)
t
e f(s
) = 10
Iter = 2; MelhorIter = 1;
Como Iter MelhorIter = 2 1 = 1 BTmax = 1, ento o procedimento BT
continua.
Passo 3 : Determinemos, agora, o melhor vizinho de s = (00011)
t
:
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s
)
(10011)
t
19 10 10
(01011)
t
20 10 10
(00111)
t
22 11 11
(00001)
t
6 4 4
(00010)
t
9 4 4
Melhor vizinho: s
= (00111)
t
, com f(s
) = 11
Como s
= (00111)
t
e f(s
) = 11 (pois f(s
) > f(s
))
Iter = 3; MelhorIter = 3;
Como Iter MelhorIter = 3 3 = 0 BTmax = 1, ento prossegue-se com o
procedimento de explorao do espao de solues.
Inteligncia Computacional para Otimizao 25
Passo 4 : Determinemos, agora, o melhor vizinho de s = (00111)
t
:
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s
)
(10111)
t
24 13 -2
(01111)
t
25 13 -17
(00011)
t
15 8 8
(00101)
t
13 7 7
(00110)
t
16 7 7
Observe que o vizinho com o melhor valor para a funo de avaliao s
= (00011)
t
,
com f(s
) = 8, mas esta soluo tabu, uma vez que o bit da terceira posio est
na lista tabu. Como o critrio de aspirao desta soluo no satisfeito, pois
f(s
) = 8 f(s
= (00101)
t
, com f(s
, isto , a
nova soluo corrente passa a ser: s = (00101)
t
Lista tabu = T = 4 (indicando que o bit da quarta posio no pode ser modi-
cado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s
= (00111)
t
e f(s
) = 11
Iter = 4; MelhorIter = 3;
Como Iter MelhorIter = 4 3 = 1 BTmax = 1, ento a busca prossegue.
Passo 5 : Determinemos, agora, o melhor vizinho de s = (00101)
t
:
Vizinhos de s Peso dos vizinhos de s Benefcio dos vizinhos de s f(s
)
(10101)
t
17 9 9
(01101)
t
18 9 9
(00001)
t
6 4 4
(00111)
t
23 11 11
(00100)
t
7 3 3
Observe que o vizinho com o melhor valor para a funo de avaliao s
= (00111)
t
,
com f(s
) = 11. Entretanto, esta soluo tabu, uma vez que o bit da quarta posi-
o est na lista tabu. Como o critrio de aspirao desta soluo no satisfeito,
pois f(s
) = 11 f(s
= (10101)
t
, com f(s
) = 9
Desta forma, a nova soluo corrente passa a ser: s = (10101)
t
, com f(s) = 9
Lista tabu = T = 1 (indicando que o bit da primeira posio no pode ser modi-
cado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s
= (00111)
t
e f(s
) = 11
Iter = 5; MelhorIter = 3;
Como Iter MelhorIter = 5 3 = 2 > BTmax = 1, ento PARE. O mtodo de
Busca Tabu retorna, ento, s
= (00111)
t
como soluo nal, com valor f(s
) = 11.
26 Marcone Jamilson Freitas Souza
A aplicao deste mtodo mostra que a soluo nal obtida melhor que aquela encon-
trada com a aplicao do mtodo da subida, apresentado na pgina 10. Isto foi possvel
devido aceitao de movimentos de piora, no caso, com o passo 2 do mtodo. Esta
estratgia possibilitou escapar de um timo local, atingindo uma outra regio do espao
de solues, na qual uma soluo melhor foi encontrada.
Inteligncia Computacional para Otimizao 27
4.4 GRASP
GRASP (Greedy Randomized Adaptive Search Procedure - Procedimento de busca adap-
tativa gulosa e randmica) um mtodo iterativo, proposto em [12], que consiste de duas
fases: uma fase de construo, na qual uma soluo gerada, elemento a elemento, e de
uma fase de busca local, na qual um timo local na vizinhana da soluo construda
pesquisado. A melhor soluo encontrada ao longo de todas as iteraes GRASP reali-
zadas retornada como resultado. O pseudocdigo descrito pela Figura 12 ilustra um
procedimento GRASP para um problema de minimizao.
procedimento GRASP(f(.), g(.), N(.), GRASPmax, s)
1 f
;
2 para (Iter = 1, 2, . . . , GRASPmax) faa
3 Construcao(g(.), , s);
4 BuscaLocal(f(.), N(.), s);
5 se (f(s) < f
) ento
6 s
s;
7 f
f(s);
8 m-se;
9 m-para;
10 s s
;
11 Retorne s;
m GRASP
Figura 12: Algoritmo GRASP
Na fase de contruo, uma soluo iterativamente construda, elemento por elemento.
A cada iterao desta fase, os prximos elementos candidatos a serem includos na so-
luo so colocados em uma lista C de candidatos, seguindo um critrio de ordenao
pr-determinado. Este processo de seleo baseado em uma funo adaptativa gulosa
g : C ', que estima o benefcio da seleo de cada um dos elementos. A heurstica
dita adaptativa porque os benefcios associados com a escolha de cada elemento so
atualizados em cada iterao da fase de construo para reetir as mudanas oriundas da
seleo do elemento anterior. A componente probabilstica do procedimento reside no fato
de que cada elemento selecionado de forma aleatria a partir de um subconjunto restrito
formado pelos melhores elementos que compem a lista de candidatos. Este subconjunto
recebe o nome de lista de candidatos restrita (LCR). Esta tcnica de escolha permite que
diferentes solues sejam geradas em cada iterao GRASP. O pseudocdigo representado
pela Figura 13, onde [0, 1] um parmetro do mtodo, descreve a fase de construo
GRASP.
Observamos que o parmetro controla o nvel de gulosidade e aleatoriedade do pro-
cedimento Construcao. Um valor = 0 faz gerar solues puramente gulosas, enquanto
= 1 faz produzir solues totalmente aleatrias.
Assim como em muitas tcnicas determinsticas, as solues geradas pela fase de cons-
truo do GRASP provavelmente no so localmente timas com respeito denio de
vizinhana adotada. Da a importncia da fase de busca local, a qual objetiva melhorar
a soluo construda. A Figura 14 descreve o pseudo-cdigo de um procedimento bsi-
co de busca local com respeito a uma certa vizinhana N(.) de s para um problema de
minimizao.
A ecincia da busca local depende da qualidade da soluo construda. O procedi-
28 Marcone Jamilson Freitas Souza
procedimento Construcao(g(.), , s);
1 s ;
2 Inicialize o conjunto C de candidatos;
3 enquanto (C ,= ) faa
4 g(t
min
) = ming(t) [ t C;
5 g(t
max
) = maxg(t) [ t C;
6 LCR = t C [ g(t) g(t
min
) +(g(t
max
) g(t
min
));
7 Selecione, aleatoriamente, um elemento t LCR;
8 s s t;
9 Atualize o conjunto C de candidatos;
10 m-enquanto;
11 Retorne s;
m Construcao;
Figura 13: Fase de construo de um algoritmo GRASP
procedimento BuscaLocal(f(.), N(.), s);
1 V = s
N(s) [ f(s
) < f(s);
2 enquanto ([V [ > 0) faa
3 Selecione s
V ;
4 s s
;
5 V = s
N(s) [ f(s
) < f(s);
6 m-enquanto;
7 Retorne s;
m BuscaLocal;
Figura 14: Fase de Busca Local de um algoritmo GRASP
mento de construo tem ento um papel importante na busca local, uma vez que as
solues construdas constituem bons pontos de partida para a busca local, permitindo
assim aceler-la.
O parmetro , que determina o tamanho da lista de candidatos restrita, basica-
mente o nico parmetro a ser ajustado na implementao de um procedimento GRASP.
Em [12] discute-se o efeito do valor de na qualidade da soluo e na diversidade das
solues geradas durante a fase de construo. Valores de que levam a uma lista de
candidatos restrita de tamanho muito limitado (ou seja, valor de prximo da escolha
gulosa) implicam em solues nais de qualidade muito prxima quela obtida de forma
puramente gulosa, obtidas com um baixo esforo computacional. Em contrapartida, pro-
vocam uma baixa diversidade de solues construdas. J uma escolha de prxima da
seleo puramente aleatria leva a uma grande diversidade de solues construdas mas,
por outro lado, muitas das solues construdas so de qualidade inferior, tornando mais
lento o processo de busca local.
O procedimento GRASP procura, portanto, conjugar bons aspectos dos algoritmos
puramente gulosos, com aqueles dos procedimentos aleatrios de construo de solues.
Procedimentos GRASP mais sosticados incluem estratgias adaptativas para o par-
metro . O ajuste deste parmetro ao longo das iteraes GRASP, por critrios que levam
em considerao os resultados obtidos nas iteraes anteriores, produz solues melhores
do que aquelas obtidas considerando-o xo [35, 36, 37].
Inteligncia Computacional para Otimizao 29
4.5 Busca em Vizinhana Varivel
A Busca em Vizinhana Varivel, ou Mtodo de Pesquisa em Vizinhana Varivel (Vari-
able Neighborhood Search, VNS), proposta por Nenad Mladenovi e Pierre Hansen [33],
um mtodo de busca local que consiste em explorar o espao de solues por meio de
trocas sistemticas de estruturas de vizinhana. Contrariamente outras metaheursticas
baseadas em mtodos de busca local, o mtodo VNS no segue uma trajetria, mas sim
explora vizinhanas gradativamente mais distantes da soluo corrente e focaliza a busca
em torno de uma nova soluo se e somente se um movimento de melhora realizado. O
mtodo inclui, tambm, um procedimento de busca local a ser aplicado sobre a soluo
corrente. Esta rotina de busca local tambm pode usar diferentes estruturas de vizinhana.
Na sua verso original, o mtodo VNS faz uso do mtodo VND para fazer a busca local.
O pseudocdigo do mtodo apresentado pela Figura 15. Detalhes adicionais podem
ser encontrados em [33, 26, 27].
procedimento VNS()
1 Seja s
0
uma soluo inicial;
2 Seja r o nmero de estruturas diferentes de vizinhana;
3 s s
0
; {Soluo corrente}
4 enquanto (Critrio de parada no for satisfeito) faa
5 k 1; {Tipo de estrutura de vizinhana corrente}
6 enquanto (k r) faa
7 Gere um vizinho qualquer s
N
(k)
(s);
8 s
BuscaLocal(s
);
9 se (f(s
) < f(s))
10 ento
11 s s
;
12 k 1;
13 seno
14 k k + 1;
15 m-se;
16 m-enquanto;
17 m-enquanto;
18 Retorne s;
m VNS;
Figura 15: Algoritmo VNS
Neste algoritmo, parte-se de uma soluo inicial qualquer e a cada iterao seleciona-se
aleatoriamente um vizinho s
dentro da vizinhana N
(k)
(s) da soluo s corrente. Esse
vizinho ento submetido a um procedimento de busca local. Se a soluo tima local,
s
recomeando da primeira
estrutura de vizinhana N
(1)
(s). Caso contrrio, continua-se a busca a partir da prxima
estrutura de vizinhana N
(k+1)
(s). Este procedimento encerrado quando uma condio
de parada for atingida, tal como o tempo mximo permitido de CPU, o nmero mximo
de iteraes ou nmero mximo de iteraes consecutivas entre dois melhoramentos. A
soluo s
; (c)
Procedimento Perturbacao, que modica a soluo corrente s guiando a uma soluo
intermediria s
Perturbacao(histrico, s);
5 s
BuscaLocal(s
);
6 s CriterioAceitacao(s, s
, histrico);
8 m-enquanto;
m ILS;
Figura 16: Algoritmo Iterated Local Search
O sucesso do ILS centrado no conjunto de amostragem de timos locais, juntamente
com a escolha do mtodo de busca local, das perturbaes e do critrio de aceitao. Em
princpio, qualquer mtodo de busca local pode ser usado, mas o desempenho do ILS com
respeito qualidade da soluo nal e a velocidade de convergncia depende fortemente do
mtodo escolhido. Normalmente um mtodo de descida usado, mas tambm possvel
aplicar algoritmos mais sosticados, tais como Busca Tabu ou outras metaheursticas.
A intensidade da perturbao deve ser forte o suciente para permitir escapar do timo
local corrente e permitir explorar diferentes regies. Ao mesmo tempo, ela precisa ser fraca
o suciente para guardar caractersticas do timo local corrente.
O critrio de aceitao usado para decidir de qual soluo se continuar a explorao,
bem como qual ser a perturbao a ser aplicada. Um aspecto importante do critrio
de aceitao e da perturbao que eles induzem aos procedimentos de intensicao
e diversicao. A intensicao consiste em permanecer na regio do espao onde a
busca se encontra, procurando explor-la de forma mais efetiva; enquanto a diversicao
consiste em se deslocar para outras regies do espao de solues. A intensicao da
busca no entorno da melhor soluo encontrada obtida, por exemplo, pela aplicao
de pequenas perturbaes sobre ela. A diversicao, por sua vez, pode ser realizada
aceitando-se quaisquer solues s
somente
se ele for melhor que o timo local corrente s, isto , somente se f(s
) < f(s) em um
problema de minimizao, ou se f(s
produzido
um novo timo local s
) ser
melhor que f(s), ento a busca prossegue a partir de s
.
E s p a o d e s o l u e s
s
s'
s"
Perturbao
c
u
s
t
o
Figura 17: Representao esquemtica do funcionamento do ILS
Para denir o que seria uma perturbao no Problema do Caixeiro Viajante, conside-
remos uma estrutura de vizinhana que utilize movimentos de troca de posio de duas
cidades para gerar vizinhos. Uma perturbao poderia ser dividida em vrios nveis de in-
tensidade. Assim, por exemplo, uma perturbao de nvel 1 poderia consistir na realizao
de duas trocas aleatrias. A perturbao de nvel 2 consistiria na execuo de trs trocas
aleatrias sobre uma mesma soluo e assim sucessivamente. O algoritmo ento funciona-
ria da seguinte maneira: Para cada nvel de perturbao seria realizada uma busca local,
a qual, se bem sucedida, faria retornar ao nvel mnimo de perturbao; caso contrrio,
seriam realizadas mais algumas buscas locais no mesmo nvel de perturbao. Em caso
de insucesso destas buscas locais, o nvel de perturbao seria gradativamente aumentado.
O mtodo se encerraria aps um certo nmero de iteraes sem melhora ou quando um
tempo limite fosse atingido.
Para o problema da mochila 0-1 tratado nestas notas, em que se considera como movi-
mento a troca no valor de um bit, uma perturbao de nvel 1 poderia ser a troca no valor
de dois bits simultaneamente, a perturbao de nvel 2 seria a troca no valor de trs bits
simultaneamente e assim sucessivamente. Igualmente ao caso anterior, para cada nvel
de perturbao (nperturb) seriam executadas vrias buscas locais, digamos nbuscas. Esta
estratgia se justica uma vez que sendo a perturbao aleatria, poderiam ser produzidos
diferentes timos locais em funo da soluo intermediria gerada em um mesmo nvel
de perturbao.
4.7 Guided Local Search
Guided Local Search ou Busca Local Guiada uma metaheurstica proposta por Christos
Voudouris [46]. Consiste em promover modicaes na funo custo para escapar de timos
locais.
32 Marcone Jamilson Freitas Souza
4.8 Algoritmos Genticos
4.8.1 Descrio genrica do mtodo
Trata-se de uma metaheurstica que se fundamenta em uma analogia com processos na-
turais de evoluo, nos quais, dada uma populao, os indivduos com caractersticas
genticas melhores tm maiores chances de sobrevivncia e de produzirem lhos cada vez
mais aptos, enquanto indivduos menos aptos tendem a desaparecer. Foram propostos por
John Holland nos anos 70 [23]. Referenciamos a [23, 38] para um melhor detalhamento do
mtodo.
Nos Algoritmos Genticos (AGs), cada cromossomo (indivduo da populao) est
associado a uma soluo do problema e cada gene est associado a uma componente da
soluo. Um alelo, por sua vez, est associado a um possvel valor que cada componente
da soluo pode assumir. Um mecanismo de reproduo, baseado em processos evolutivos,
aplicado sobre a populao com o objetivo de explorar o espao de busca e encontrar
melhores solues para o problema. Cada indivduo avaliado por uma certa funo de
aptido, a qual mensura seu grau de adaptao ao meio. Quanto maior o valor da funo
de aptido, mais o indivduo est adaptado ao meio.
Um Algoritmo Gentico inicia sua busca com uma populao
_
s
0
1
, s
0
2
, . . . , s
0
n
_
, normal-
mente aleatoriamente escolhida, a qual chamada de populao no tempo 0.
O procedimento principal um loop que cria uma populao
_
s
t+1
1
, s
t+1
2
, . . . , s
t+1
n
_
no
tempo t+1 a partir de uma populao do tempo t. Para atingir esse objetivo, os indivduos
da populao do tempo t passam por uma fase de reproduo, a qual consiste em selecionar
indivduos para operaes de recombinao e/ou mutao. H vrias formas de selecionar
indviduos para o processo de reproduo. Uma dessas formas a Binary Tournament
Selection. Nesse processo de seleo, dois indivduos so selecionados aleatoriamente e
aquele que tiver o maior valor para a funo de aptido escolhido para ser o primeiro
pai. O segundo pai escolhido de forma anloga. Outra forma de selecionar os pais
para o processo de seleo escolh-los aleatoriamente. Na operao de recombinao,
os genes de dois cromossomos pais so combinados de forma a gerar cromossomos lhos
(normalmente dois), de sorte que para cada cromossomo lho h um conjunto de genes de
cada um dos cromossomos pais. A operao de mutao consiste em alterar aleatoriamente
uma parte dos genes de cada cromossomo (componentes da soluo). Ambas as operaes
so realizadas com uma certa probabilidade. A operao de recombinao realizada
normalmente com uma probabilidade mais elevada (por exemplo, 80%) e a de mutao,
com uma baixa probabilidade (de 1 a 2%, em geral).
Gerada a nova populao do tempo t + 1, dene-se a populao sobrevivente, isto ,
as n solues que integraro a nova populao. A populao sobrevivente denida pela
aptido dos indivduos. Os critrios comumente usados para escolher os cromossomos
sobreviventes so os seguintes: 1) aleatrio; 2) roleta (onde a chance de sobrevivncia
de cada cromossomo proporcional ao seu nvel de aptido) e 3) misto (isto , uma
combinao dos dois critrios anteriores). Em qualquer um desses critrios admite-se,
portanto, a sobrevivncia de indivduos menos aptos. Isto feito tendo-se por objetivo
tentar escapar de timos locais.
A Figura 18 mostra a estrutura de um Algoritmo Gentico bsico.
Os critrios de parada mais comuns so: quando um certo nmero de geraes atin-
gido, quando no h melhora aps um certo nmero de iteraes ou quando o desvio padro
da populao inferior a um certo valor (situao que evidencia uma homogeneidade da
populao).
Os parmetros principais de controle do mtodo so: o tamanho n da populao, a
Inteligncia Computacional para Otimizao 33
Figura 18: Estrutura de um Algoritmo Gentico bsico
probabilidade da operao crossover, a probabilidade de mutao, o nmero de geraes
e o nmero de iteraes sem melhora.
O pseudocdigo de um Algoritmo Gentico bsico est descrito na Figura 19.
4.8.2 Representao gentica de solues
Normalmente uma soluo de um problema est associado a um cromossomo p represen-
tado na forma de um vetor (ou lista) com m posies: p = (x
1
, x
2
, . . . , x
m
), onde cada
componente x
i
representa um gene (ou uma varivel da soluo).
Dentre os tipos de representao de um cromossomo, os mais conhecidos so: repre-
sentao binria zero-um e a representao por inteiros.
A representao binria a clssica dentro dos AGs. Contudo, existem aplicaes para
as quais mais conveniente o uso de representaes por inteiros.
A seguir, alguns exemplos ilustram os dois tipos de representao:
1. Representao Binria:
Na representao binria, uma soluo do problema representada por um vetor (ou
lista) de 0s e 1s.
Para ilustrar esta representao, considere o seguinte exemplo extrado de Micha-
lewicz (1992), no qual deseja-se maximizar a funo:
f(x) = [11 num(x) 150[,
34 Marcone Jamilson Freitas Souza
procedimento AG
1 t 0;
2 Gere a populao inicial P(t);
3 Avalie P(t);
4 enquanto (os critrios de parada no estiverem satisfeitos) faa
5 t t + 1;
6 Gere P(t) a partir de P(t 1);
7 Avalie P(t);
8 Dena a populao sobrevivente;
9 m-enquanto;
m AG;
Figura 19: Algoritmo Gentico
em que num(x) fornece o nmero de 1s do vetor cromossomo.
Por exemplo, se x = (101001) ento num(x) = 3.
Considere, agora, a representao binria de dois cromossomos compostos de 30
genes:
p
1
= (101010101010101010101010101010)
p
2
= (110000001100001110000000000000)
Ento f(p
1
) = [11num(p
1
)150[ = [1115150[ = 15 e f(p
2
) = [11num(p
2
)
150[ = [11 7 150[ = 73.
Observe que o cromossomo que fornece um ponto de mximo local dado por:
p
0
= (000000000000000000000000000000), com f(p
0
) = 150
J o mximo global de f fornecido pelo cromossomo:
p
) = 180
2. Representao por Inteiros:
Na representao por inteiros, uma soluo do problema representada por um vetor
(ou lista) de nmeros inteiros. Por exemplo, considerando o PCV, o cromossomo
p = (1 3 6 5 4 2 7 9 8) pode representar exatamente a ordem de visita do PCV, ou
seja, a rota (tour) t do PCV idntica a p:
t = 1 3 6 5 4 2 7 9 8}
Em um problema de programao de horrios, um cromossomo pode ser uma matriz
de nmeros inteiros, em que cada componente x
ij
representa o nmero da turma
para a qual o professor i ministra aula no horrio j.
Inteligncia Computacional para Otimizao 35
4.8.3 Operador crossover clssico
A idia do operador crossover clssico a de efetuar cruzamentos entre dois ou mais
cromossomos pais e formar cromossomos lhos (osprings) a partir da unio de segmentos
de genes de cada pai.
Inicialmente so feitos cortes aleatrios nos pais. Por exemplo, considere dois pais e
um ponto de corte realizado na parte central dos cromossomos pais.
p
1
= (1 0 1 | 0 1 0) = (p
1
1
| p
2
1
)
p
2
= (1 1 1 | 0 0 0) = (p
2
1
| p
2
2
)
ponto de corte
A partir dos cortes, so gerados dois lhos, cada qual formado a partir da reunio de
partes de cada um dos pais.
O
1
= (p
1
1
| p
2
2
) = (1 0 1 | 0 0 0)
O
2
= (p
1
2
| p
2
1
) = (1 1 1 | 0 1 0)
4.8.4 Operador mutao clssico
Operadores mutao consistem em alterar um ou mais genes de um cromossomo. Para
ilustrar um operador mutao clssico, seja o cromossomo p de 7 genes, dado por: p =
(x
1
x
2
x
3
. . . x
7
) = (1 0 1 0 1 0 1).
Considerando como mutao a alterao de um gene de um valor 1 para um valor 0
ou vice-versa, ento o cromossomo p
O
1
= (X 2 3 | 1 8 5 9 | X X)
O
2
= (X 2 X | 4 5 6 7 | 3 X)
Considere agora o primeiro X de O
1
(que deveria ser X = 1, mas forneceria uma
rota ilegal, j que esta cidade j se encontra presente na rota). Como X = 1 p
1
no possvel, a cidade correspondente posio em que est a cidade 1 de p
1
no
segundo pai p
2
, a cidade 4. Assim, esta cidade alocada no primeiro X de O
1
.
X
|
p
1
= (1 . . .
p
2
= (4 . . .
Obtm-se com isto:
O
1
= (4 2 3 | 1 8 5 9 | X X)
Repete-se o procedimento para o prximo X O
1
(X = 8 p
1
)
Inteligncia Computacional para Otimizao 37
X
|
p
1
= (. . . | . . . | 8 . . . )
p
2
= (. . . | . . . | 3 . . . )
Mas X = 3 j est presente em O
1
, ento toma-se o n
de p
2
associado ao n
3 de
p
1
.
X
|
p
1
= (. . . 3 | . . .
p
2
= (. . . 6 | . . .
Como X = 6 ainda no est presente em O
1
, substitui-se X por 6 em O
1
, obtendo-se:
O
1
= (4 2 3 | 1 8 5 9 | 6 X)
Repete-se o procedimento para o prximo X O
1
(X = 9 p
1
)
X
|
p
1
= (. . . | . . . | . . . 9)
p
2
= (. . . | . . . | . . . 7)
Como X = 7 ainda no est presente em O
1
, substitui-se X por 7 em O
1
, obtendo-se:
O
1
= (4 2 3 | 1 8 5 9 | 6 7)
Analogamente, preenchem-se os Xs de O
2
, obtendo-se ao seu nal:
O
2
= (1 2 8 | 4 5 6 7 | 3 9)
O operador PMX explora a convenincia ou no de se reproduzir cromossomos lo-
calmente idnticos a um cromossomo pai. Esta propriedade til, por exemplo,
quando se tm rotas j localmente otimizadas.
2. Operador crossover OX:
Proposto por Davis (1985), o operador Ordenated Crossover (OX) constri um
ospring (cromossomo lho) escolhendo uma subseqncia de uma rota associado a
um cromossomo pai p
1
e preservando a ordem relativa das cidades do outro cromos-
somo pai p
2
.
Exemplo: Considere dois cromossomos pais:
38 Marcone Jamilson Freitas Souza
p
1
= (1 2 3 | 4 5 6 7 | 8 9)
p
2
= (4 5 2 | 1 8 7 6 | 9 3)
Os lhos O
1
e O
2
herdam a faixa entre os dois cortes de p
1
e p
2
, respectivamente.
O
1
= (X X X | 4 5 6 7 | X X)
O
2
= (X X X | 1 8 7 6 | X X)
Agora, partindo-se do segundo corte de um pai p
2
, copia-se em uma lista as n cidades
de p
2
. A seguir, remove-se desta lista as cidades contidas entre os dois cortes do outro
pai (p
1
). A subseqncia resultante enxertada no lho O
1
associado a p
1
a partir
do segundo corte seguindo a ordem da subseqncia.
Assim, considerando o exemplo, partindo-se de p
2
tem-se a lista:
9 3 4 5 2 1 8 7 6
Removem-se 4, 5, 6 e 7 desta lista, uma vez que estas cidades j foram visitadas,
resultando na subseqncia: 9 3 2 1 8. Esta subseqncia enxertada em
O
1
, nesta ordem, a partir do seu segundo corte.
O
1
= (X X X | 4 5 6 7 | X X)
ou
O
1
= (2 1 8 | 4 5 6 7 | 9 3)
Analogamente, partindo de p
1
, tem-se a lista 8 9 1 2 3 4 5 6 7.
Removendo-se 1, 8, 7 e 6 tem-se a subseqncia: 92345, a qual enxertada
em O
2
a partir do segundo corte, obtendo-se:
O
2
= (3 4 5 | 1 8 7 6 | 9 2)
O operador OX prioriza a ordem das cidades e no suas posies na rota. A posio
das cidades na rota no importante no PCV e sim, a ordem de visitas, ou seja, no
PCV importante saber quem so os vizinhos de uma dada cidade i.
A irrelevncia das posies na rota pode ser vista no exemplo a seguir:
T
1
: 5 3 1 2 4
T
2
: 3 1 2 4 5
Em T
1
e T
2
as cidades aparecem em posies diferentes, mas tanto a rota T
1
quanto
a rota T
2
representam a mesma soluo.
3. Operador crossover CX:
Proposto por Oliver e outros (1987), o operador Cycle Crossover (CX) preserva a
posio absoluta das cidades nos cromossomos pais.
Para ilustr-lo, considere o seguinte exemplo com dois cromossomos pais:
Inteligncia Computacional para Otimizao 39
p
1
= (1 2 3 4 5 6 7 8 9)
p
2
= (4 1 2 8 7 6 9 3 5)
O primeiro lho O
1
obtido tomando-se, inicialmente, a primeira cidade de p
1
,
obtendo-se:
O
1
= (1 X X X X X X X X)
Com a 1
a
posio de O
1
j preenchida, ento o elemento da 1
a
posio de p
2
igual
a 4 no pode ser tambm alocado 1
a
posio de O
1
. Portanto, o elemento da 1
a
posio de p
2
, igual a 4, herdado pelo lho O
1
na posio que ele ocupa em p
1
. Ou
seja, o n
4 est na 4
a
posio de p
1
, logo estar tambm na 4
a
posio de O
1
.
O
1
= (1 X X 4 X X X X X)
A seguir, estando o elemento da 4
a
posio do outro pai p
2
= 8, e o inteiro 8 em p
1
(na oitava posio), aloca-se 8 na oitava posio de O
1
.
O
1
= (1 X X 4 X X X 8 X)
Seguindo esse procedimento, tem-se:
O
1
= (1 2 3 4 X X X 8 X)
O ltimo inteiro alocado foi 2, mas na 2
a
posio em p
2
est o inteiro 1 que j est
em O
1
. Neste caso, diz-se que foi completado um ciclo.
A partir da, as cidades restantes de O
1
so preenchidas do outro pai (p
2
), obtendo-se:
O
1
= (1 2 3 4 7 6 9 8 5)
De forma semelhante, tomando inicialmente a 1
a
cidade do segundo cromossomo pai
p
2
, comea-se a construir o segundo cromossomo lho O
2
, que ao nal ser da forma:
O
2
= (4 1 2 8 5 6 7 3 9)
Observe que o operador Cycle Crossover sempre preserva a posio de elementos
de um outro cromossomo pai.
4. Operador crossover ERX:
O operador Edge Recombination (ERX) foi desenvolvido especialmente para o PCV,
j que prioriza o fator adjacncia. Outra caracterstica principal do ERX a
de que um cromossomo lho deve ser construdo sempre que possvel a partir das
arestas presentes em ambos os pais. Whitley, Starkweather e Fuquay (1989)
observaram que em mdia 95% das arestas dos pais so transferidas para os lhos,
reduzindo consideravelmente o percentual de arestas selecionadas aleatoriamente.
40 Marcone Jamilson Freitas Souza
No ERX, o signicativo nmero de arestas transferidas de cromossomos pais para
cromossomos lhos uma conseqncia do seguinte procedimento:
Criar uma lista de arestas de ambos os pais. A lista de arestas produz
para cada cidade, todas as outras cidades a ela conectadas em pelo menos
um dos cromossomos pais. Isto signica que para cada cidade, existem
no mnimo duas e no mximo quatro cidades conectadas.
Exemplo: Considere duas rotas do PCV, ou, equivalentemente, na representao
por caminhos, dois cromossomos.
p
1
= (1 2 3 4 5 6)
p
2
= (3 4 1 6 2 5)
A lista de arestas ser:
cidade 1: (1, 2), (6, 1), (4, 1)
cidade 2: (1, 2), (2, 3), (6, 2), (2, 5)
cidade 3: (2, 3), (3, 4), (5, 3)
cidade 4: (3, 4), (4, 5), (4, 1)
cidade 5: (4, 5), (5, 6), (2, 5), (5, 3)
cidade 6: (5, 6), (6, 1), (6, 2)
Neste caso supe-se que (i, j) = (j, i).
Construo do Cromossomo Filho:
O operador ERX pode, a partir de dois cromossomos pais, gerar um ou dois lhos.
A verso para gerar um lho a seguinte:
Selecione a cidade inicial de um dos pais (no caso, cidade 1 ou cidade 3). A cidade
inicial quela associada ao menor nmero de arestas, conforme ser justicado mais
adiante. Como no exemplo considerado houve empate, escolhe-se arbitrariamente a
cidade 1.
A cidade 1 est diretamente ligada s cidades 2, 4 e 6. A prxima cidade no cromos-
somo lho ser dentre estas cidades, aquela que possui o menor nmero de arestas
(no exemplo, escolhe-se a cidade 4). A rota parcial ser, ento: 14. . . ou O
1
= (1
4 X X X X).
Dentre as cidades conectadas diretamente cidade 4, seleciona-se aquela que possui
o menor nmero de arestas e que ainda no esteja na rota parcial O
1
. Caso no
existam candidatos, a seleo da prxima aresta feita aleatoriamente dentre as
cidades no pertencentes rota parcial. No exemplo, os vizinhos de 4 so: 3, 5 e 1,
mas a cidade 1 j est na rota, ento escolhe-se entre 3 e 5. Como a cidade 3 possui
menos arestas, ela selecionada, obtendo:
O
1
= (1 4 3 X X X)
Inteligncia Computacional para Otimizao 41
Seguindo o mesmo procedimento, escolhe-se a cidade 2:
O
1
= (1 4 3 2 X X)
A prxima cidade a ser escolhida a 6:
O
1
= (1 4 3 2 6 X)
Finalmente, a cidade 5 incluida na rota:
O
1
= (1 4 3 2 6 5)
Observe que o cromossomo lho O
1
foi, neste exemplo, construdo inteiramente de
arestas de um dos pais sem a necessidade de gerar arestas aleatoriamente. Isso, em
parte, se deve ao critrio da escolha da prxima cidade.
Escolhendo a cidade com o menor nmero de arestas na lista de arestas, a tendncia
obter uma rota com arestas herdadas de um dos pais.
A idia de iniciar com cidades com poucas arestas, deixando-se para o nal as cidades
com o nmero maior de arestas (vizinhos), que o risco de ter que gerar uma aresta
aleatoriamente cresce apenas no nal do procedimento, devido ao maior nmero de
cidades j includas na rota parcial.
Uma variante do ERX, chamada EERX (Enhanced Edge Recombination) prioriza
as arestas comuns aos dois pais, para ser herdada pelo cromossomo lho. Para
distinguir estes casos, basta notar que se uma cidade possui duas arestas ento,
necessariamente, as duas sero comuns aos dois pais. Se uma cidade possui trs
arestas, uma destas arestas ser comum aos dois pais e, nalmente, se uma cidade
possui quatro arestas ento no existe nenhuma aresta em comum.
42 Marcone Jamilson Freitas Souza
4.9 Scatter Search
Scatter Search ou Busca Dispersa um mtodo de busca populacional que consiste em
construir solues pela combinao de outras solues, tendo sua origem em estratgias
originalmente propostas no contexto de programao inteira.
A Busca Dispersa projetada para trabalhar com um conjunto de solues, denominado
Conjunto de Referncia, o qual contm boas solues obtidas ao longo da busca preguessa.
O conceito de uma soluo de boa qualidade vai alm do seu valor propriamente dito da
funo de avaliao e inclui critrios especiais tais como diversidade. O mtodo gera
combinaes de solues de referncia para criar novas solues do espao de busca.
O mtodo organizado para (1) capturar informaes no contidas separadamente nas
solues originais, (2) levar vantagem de mtodos de soluo heurstica auxiliares (para
avaliar as combinaes produzidas e gerar novas solues) e (3) fazer uso de estratgias es-
peccas ao invs de estratgias aleatrias de busca. A Busca Dispersa envolve basicamente
cinco procedimentos:
1. Um procedimento de Diversicao, para gerar um conjunto de solues diversica-
das, usando uma ou mais solues aleatrias como entrada;
2. Um procedimento de Renamento, para transformar uma soluo em uma ou mais
solues melhoradas;
3. Um procedimento de Atualizao do Conjunto de Referncia, para construir e manter
o Conjunto de Referncia, o qual contm as nbest melhores solues encontradas
(sendo o valor de nbest tipicamente pequeno, por exemplo, no mais que 20 [21]).
Vrios critrios alternativos podem ser usados para incluir ou remover solues do
conjunto de referncia.
4. Um procedimento de Gerao de Subconjuntos para operar o conjunto de referncia
e escolher um subconjunto de suas solues como base para criar combinaes de
solues. O procedimento de gerao de subconjuntos mais comum consiste em gerar
todos os pares de solues de referncia, isto , todos os subconjuntos de tamanho
2;
5. Um procedimento de Combinao de Solues para transformar um dado subcon-
junto de solues produzidas pelo procedimento Gerao de Subconjuntos em uma
ou mais solues combinadas. O procedimento de combinao anlogo ao operador
crossover de Algoritmos Genticos, embora ele seja capaz de combinar mais do que
duas solues.
O procedimento da Figura 20, que descreve o mtodo, inicia com a criao de um con-
junto de referncia (RefSet). Para isso, o procedimento Diversicao usado para cons-
truir um conjunto P de solues diversicadas. A cardinalidade de P, PSize, tipicamente
10 vezes o tamanho de RefSet [21]. Inicialmente, o conjunto de referncia RefSet consiste
de nbest solues distintas e bastante diversas retiradas de P. As solues em RefSet so
ordenadas de acordo com sua qualidade, sendo a melhor colocada na primeira posio
da lista. A busca ento iniciada atribuindo-se o valor TRUE varivel booleana New-
Solutions. No passo 3, NewSubsets construdo e NewSolutions trocado para FALSE.
Considerando subconjuntos de tamanho 2, por exemplo, a cardinalidade de NewSubsets
(relativa ao conjunto de referncia inicial) dada por (nbest
2
nbest)/2, que corresponde a
todos os possveis pares de solues em RefSet. Os pares em NewSubsets so selecionados
um por vez em ordem lexicogrca e o procedimento Combinao de Solues aplicado
Inteligncia Computacional para Otimizao 43
procedimento ScatterSearch
1 P ;
Use o procedimento Diversicao para construir uma soluo x;
Se x , P ento adicione x a P, isto , P P x; caso contrrio, descarte x;
Repita este procedimento at que [P[ = PSize;
Construa RefSet = x
1
, , x
nbest
, com nbest solues diversicadas de P;
2 Avalie as solues em RefSet e ordene-as de acordo com a funo de avaliao;
(Considere x
1
a melhor soluo e x
nbest
a pior)
NewSolutions TRUE;
enquanto (NewSolutions) faa
3 Gere NewSubsets, isto , todos os pares de solues de RefSet
desde que haja pelo menos uma nova soluo, isto , que NewSolutions = TRUE;
NewSolutions FALSE;
enquanto (NewSubsets ,= ) faa
4 Selecione o prximo subconjunto s em NewSubsets;
5 Aplique Combinao de Solues a s para obter uma ou mais solues x;
se (x , RefSet e f(x) < f(x
nbest
) ento
6 x
nbest
x e reordene RefSet;
7 NewSolutions TRUE;
m-se
8 Remova s de NewSubsets;
m-enquanto;
m-enquanto;
m ScatterSearch;
Figura 20: Algoritmo Scatter Search
para gerar uma ou mais solues no passo 5. Se uma nova soluo criada melhora a pior
soluo do conjunto de referncia RefSet corrente, ento ela a substitui e RefSet reorde-
nado no passo 6. O ag NewSolutions alterado para TRUE e o subconjunto s que foi
combinado removido de NewSubsets nos passos 7 e 8, respectivamente.
4.10 Colnia de Formigas
A metaheurstica Otimizao por Colnia de Formigas, ou simplesmente Colnia de Formi-
gas (Ant Colony Optimization Metaheuristic - ACO), tem sua origem na tese de doutorado
de Marco Dorigo [8], publicada mais tarde em [9].
O mtodo simula o comportamento de um conjunto de agentes (formigas) que se co-
operam para resolver um problema de otimizao. A cooperao entre as formigas se d
por meio do feromnio depositado por cada formiga ao se deslocar no espao de busca,
permitindo que esse rastro possa ser usado como informao por outras formigas.
De acordo com [10], informalmente, o comportamento das formigas em um algoritmo
ACO pode ser resumido como segue. Uma colnia de formigas move de forma concorrente e
assncrona construindo caminhos no espao de busca. Elas movem aplicando uma poltica
de deciso local estocstica, que faz uso das trilhas de feromnio e informaes heursticas.
Ao se moverem, as formigas constroem novas solues para o problema de otimizao.
Construda uma soluo, ou durante a construo de uma soluo, a formiga avalia a
soluo (parcial ou completa) e deposita uma trilha de feromnio apenas nas componentes
44 Marcone Jamilson Freitas Souza
ou conexes usadas durante o caminho. Esta informao de feromnio usada para
direcionar a busca das outras formigas.
Alm das atividades das formigas, um algoritmo ACO inclui dois procedimentos adici-
onais: evaporao da trilha de feromnio e aes daemon, sendo esta ltima componente
opcional. A evaporao de feromnio o processo pelo qual o feromnio depositado pelas
formigas decresce ao longo do tempo. Do ponto de vista prtico, a evaporao de fero-
mnio necessria para evitar uma convergncia prematura do algoritmo em uma regio
subtima. Este procedimento implementa uma forma til de esquecimento, favorecendo a
explorao de novas regies do espao de busca. As aes daemon podem ser usadas para
implementar aes centralizadas, as quais no seriam realizadas pelas formigas tomadas
isoladamente. Como exemplos destas aes podemos citar a ativao de um procedimento
de busca local ou uma coleo de informaes globais que podem ser usadas para decidir
se til ou no depositar feromnio adicional para guiar a busca sob uma perspectiva no
local. Como um exemplo prtico, o daemon pode observar o caminho encontrado por cada
formiga da colnia e escolher para depositar uma quantidade extra de feromnio apenas
nas componentes usadas pela formiga que construiu a melhor soluo. Atualizaes de
feromnio realizadas por daemon so chamadas atualizaes de feromnio o-line.
Apresenta-se, pela Figura 21, uma implementao bsica da metaheurstica Colnia
de Formigas aplicada ao Problema do Caixeiro Viajante. Nesta implementao, m a
quantidade de formigas, Q a quantidade de feromnio depositada por uma formiga aps
concluir uma rota,
0
a quantidade inicial de feromnio em cada arco, d
ij
a distncia
entre as cidades i e j,
ij
a quantidade de feromnio em cada arco (i, j),
k
ij
a
quantidade de feromnio depositada por cada formiga k em cada arco (i, j), a taxa
de evaporao de feromnio e a quantidade de feromnio depositada por todas as
formigas no arco (i, j).
Para a obteno de uma rota para uma formiga (passo 3(b) da Figura 21), o algoritmo
pressupe que a formiga lembra-se das cidades j visitadas. Estando na cidade i, a formiga
k escolhe a cidade j, dentre as ainda no visitadas, com uma probabilidade dada pela
expresso (47):
p
k
ij
=
[
ij
]
[
ij
]
l
k
i
[
il
]
[
il
]
j
k
i
(47)
em que
k
i
representa o conjunto de cidades ainda no visitadas pela formiga k,
ij
= 1/d
ij
uma informao heurstica disponvel a priori e e so dois parmetros que deter-
minam a inuncia relativa da trilha de feromnio e da informao heurstica, respectiva-
mente. Se = 0 ento a probabilidade de seleo proporcional [
ij
]
e as cidades mais
prximas tm maiores chances de serem escolhidas. Neste caso, o algoritmo comporta-se
como um mtodo guloso estocstico (diz-se estocstico porque as formigas so inicialmente
aleatoriamente distribudas entre o conjunto de cidades e, assim, h mltiplos pontos de
partida). Se = 0, ento somente a utilizao de feromnio tem inuncia, induzindo a
uma estagnao rpida da busca, isto , todas as formigas seguindo o mesmo caminho e
construindo as mesmas solues.
Observe, no passo 3(e) da Figura 21, que a quantidade de feromnio depositada em cada
arco (i, j) visitado por uma formiga proporcional ao comprimento do arco, uma vez que
a quantidade unitria de feromnio (Q/L
k
) depositada pela formiga k multiplicada pelo
comprimento d
ij
do arco. Assume-se, tambm, ao contrrio do caso real, que a formiga s
deposita o feromnio aps concluir a rota e no durante o percurso. Nas implementaes
apresentadas em [10], considera-se apenas
k
ij
1/L
k
, desprezando-se o comprimento
Inteligncia Computacional para Otimizao 45
procedimento ColoniaFormigas
1 Seja Q e
0
constantes;
f
;
2 Faa
ij
0 e
ij
0
para todo arco (i, j);
3 Para (cada formiga k = 1, , m) faa
(a) Selecione a cidade inicial para a k-sima formiga
(b) Obtenha uma rota R
k
para cada formiga k
(c) Seja L
k
o comprimento da rota R
k
(d) se ( L
k
< f
) ento s
R
k
e f
f(s
)
(e) Calcule a quantidade de rastro deixado pela formiga k:
se (arco (i, j) pertence rota R
k
)
ento
k
ij
d
ij
Q/L
k
seno
k
ij
0
m-se
(f) Faa
ij
ij
+
k
ij
4 m-para;
5 Faa
ij
(1 )
ij
+
ij
(i, j)
6 se (a melhor rota s
a melhor soluo
8 seno Retorne ao Passo 3
9 m-se
m ColoniaFormigas;
Figura 21: Algoritmo Colnia de Formigas
de cada arco e a quantidade Q de feromnio depositada por cada formiga aps concluir
uma rota.
Uma extenso interessante do algoritmo ACO apresentado na Figura 21 consiste em
substituir o passo 5 pela expresso (48):
ij
(1 )
ij
+
best
ij
(i, j) (48)
em que
best
ij
representa a trilha de feromnio deixada pela formiga que produziu a melhor
soluo (pode ser tanto a melhor soluo de uma iterao envolvendo m formigas ou a
melhor soluo global). A atualizao da trilha de feromnio feita, neste caso, usando
uma forte estratgia elitista, pois somente o feromnio da formiga que produziu a melhor
soluo usado para proceder atualizao da trilha de feromnio em todos os arcos.
Uma outra estratgia elitista consiste em ordenar os comprimentos das rotas geradas
pelas m formigas em cada iterao e considerar que apenas as formigas associadas s w1
melhores rotas (w < m) e melhor rota global podem depositar feromnio. A r-sima
melhor formiga da colnia contribui com a atualizao de feromnio com um peso dado
por max0, wr enquanto a formiga que produziu a melhor soluo global contribui com
um peso w. Nesta situao, o passo 5 da Figura 21 substitudo pela expresso (49):
ij
(1 )
ij
+
w1
r=1
_
(w r)
r
ij
_
+w
gb
ij
(i, j) (49)
em que
gb
ij
indica a trilha de feromnio deixada pela formiga que produziu a melhor
soluo global at ento.
46 Marcone Jamilson Freitas Souza
4.11 Algoritmos Memticos
A metaheurstica Algoritmos Memticos (Memetic Algorithms) foi proposta por ...
Basicamente, o mtodo uma variao de Algoritmos Genticos, consistindo no re-
namento dos indivduos antes de se submeterem s operaes de recombinao e mutao.
4.12 Annealing Microcannico
Trata-se de uma variante do algoritmo Simulated Annealing, proposta em [1]. Diferente-
mente de SA, que baseia-se na simulao dos estados de um sistema fsico a temperatura
constante, o algoritmo Annealing Microcannico simula a variao dos estados a energia
constante. Utiliza, para esse propsito, uma verso do Algoritmo de Creutz [5, 32], o qual
introduz uma varivel, chamada de demnio, para modelar as utuaes de energia.
A partir de uma soluo inicial arbitrria s, geram-se novas solues de forma que
E + D = constante, sendo D a energia do demnio (0 D D
max
) e E a energia do
sistema (f(s)). O procedimento principal consiste em um loop que gera, randomicamente,
em cada iterao, um nico vizinho s
da soluo corrente.
Chamando de a variao de energia ao mover-se de s para s
, o mtodo aceita o
movimento, e a soluo vizinha s
N(s);
6 = f(s
) f(s);
7 se ( 0)
8 ento
9 se (D D
max
) ento
10 s s
;
11 D D ;
12 se (f(s
) < f(s
)) ento s
;
13 m-se;
14 seno
15 se (D 0) ento
16 s s
;
17 D D ;
18 m-se;
19 m-se;
20 m-para;
21 D
max
D
max
;
22 m-enquanto;
23 s s
;
24 Retorne s;
m AM;
Figura 22: Algoritmo Annealing Microcannico
4.13 Otimizao Microcannica
Trata-se de uma alternativa ao Annealing Microcannico, proposta originalmente em [45].
Referenciamos a [45, 32, 44] para uma descrio mais detalhada do mtodo.
O algoritmo de Otimizao Microcannica (OM), descrito pela Figura 23, consiste de
dois procedimentos, os quais so aplicados alternadamente: inicializao e amostragem.
Na fase de inicializao, OM realiza somente movimentos de melhora, guiando a uma
congurao de mnimo local. Para tentar escapar desta congurao, executa-se a amos-
tragem, fase na qual um grau extra de liberdade (denominada demnio) produz pequenas
perturbaes na soluo corrente. Em cada iterao desta fase, movimentos randmicos
so propostos, sendo aceitos apenas aqueles nos quais o demnio capaz de absorver ou
liberar a diferena de custo envolvida. Aps a fase de amostragem, uma nova inicializao
realizada e o algoritmo assim prossegue, alternando entre as duas fases, at que uma
condio de parada seja satisfeita.
O demnio denido por dois parmetros: sua capacidade D
max
e seu valor inicial
D
i
. A fase de amostragem gera uma sequncia de estados cuja energia conservada,
exceto para pequenas utuaes, as quais so modeladas pelo demnio. Chamando de
E
i
a energia (custo) da soluo obtida na fase de inicializao, de D e E a energia do
demnio e da soluo, respectivamente, em um dado instante da fase de amostragem,
tem-se E + D = E
i
+ D
i
= constante. Portanto, esta fase gera solues no intervalo
48 Marcone Jamilson Freitas Souza
procedimento OM(f(.), N(.), OMmax, s)
1 s
}
4 enquanto (Iter MelhorIter < OMmax) faa
5 Iter Iter + 1;
6 InicializacaoOM(f(.), N(.), Imax, s);
7 se (f(s) < f(s
)) ento
8 s
s;
9 MelhorIter Iter;
10 m-se;
11 AmostragemOM(f(.), N(.), D
i
, D
max
, Amax, s);
12 m-enquanto;
13 s s
;
14 Retorne s;
m OM;
Figura 23: Algoritmo de Otimizao Microcannica
[E
i
D
max
+D
i
, E
i
+D
i
].
Os parmetros principais de controle do algoritmo OM so o nmero mximo OMmax
de iteraes consecutivas sem melhora em OM, o nmero mximo de iteraes consecutivas
sem melhora na fase de inicializao Imax, o nmero mximo de iteraes de amostragem
Amax, o valor inicial D
i
do demnio e a sua capacidade mxima D
max
.
Apresentamos, pelas guras 24 e 25, os pseudocdigos das fases de inicializao e
amostragem, respectivamente, de um algoritmo de Otimizao Microcannica bsico.
Inteligncia Computacional para Otimizao 49
procedimento InicializacaoOM(f(.), N(.), Imax, s)
1 s
}
4 enquanto (Iter MelhorIter < Imax) faa
5 Iter Iter + 1;
6 Gere um vizinho qualquer s
N(s);
7 = f(s
) f(s);
8 se ( < 0)
9 ento
10 s s
;
11 se (f(s
) < f(s
)) ento
12 s
;
13 MelhorIter Iter;
14 m-se;
15 seno Ponha na lista dos movs rejeitados;
16 m-se;
17 m-enquanto;
18 s s
;
19 Retorne s;
m InicializacaoOM;
Figura 24: Fase de inicializao do algoritmo de Otimizao Microcannica
procedimento AmostragemOM(f(.), N(.), D
i
, D
max
, Amax, s)
1 Seja s soluo advinda da fase de inicializao;
2 Escolha D
max
e D
I
da lista de movimentos rejeitados;
3 D D
i
; {Valor corrente do demnio}
4 para (Iter = 1, 2, . . . , Amax) faa
5 Gere um vizinho qualquer s
N(s);
6 = f(s
) f(s);
7 se ( 0)
8 ento
9 se (D D
max
) ento
10 s s
;
11 D D ;
12 m-se;
13 seno
14 se (D 0) ento
15 s s
;
16 D D ;
17 m-se;
18 m-se;
19 m-para;
20 Retorne s;
m AmostragemOM;
Figura 25: Fase de amostragem do algoritmo de Otimizao Microcannica
50 Marcone Jamilson Freitas Souza
5 Tcnicas especiais de intensicao e diversicao
5.1 Reconexao por Caminhos
A tcnica Reconexo por Caminhos ou Religao de Caminhos, conhecida na literatura
inglesa como Path Relinking, foi proposta por [17] como uma estratgia de intensicao
para explorar trajetrias que conectavam solues elite obtida pelo mtodo Busca Tabu
ou Scatter Search [20].
Esta busca por solues de melhor qualidade consiste em gerar e explorar caminhos no
espao de solues partindo de uma ou mais solues elite e levando a outras solues elite.
Para tal nalidade, so selecionados movimentos que introduzem atributos das solues
guia na soluo corrente. Desse modo, a Reconexo por Caminhos pode ser vista como
uma estratgia que objetiva incorporar atributos de solues de boa qualidade, favorecendo
a seleo de movimentos que as contenham.
A Reconexo por Caminhos pode ser aplicada segundo duas estratgias bsicas [41]:
Reconexo por Caminhos aplicada como uma estratgia de ps-otimizao entre
todos os pares de solues elite;
Reconexo por Caminhos aplicada como uma estratgia de intensicao a cada
timo local obtido aps a fase de busca local.
A aplicao da tcnica de Reconexo por Caminhos como um procedimento de inten-
sicao a cada timo local mais ecaz do que empreg-la como um procedimento de
ps-otimizao [41]. Neste caso, a Reconexo por Caminhos aplicada a pares (s
1
, s
2
) de
solues, onde s
1
a soluo corrente obtida aps o procedimento de busca local e s
2
uma soluo selecionada aleatoriamente de um conjunto formado por um nmero limitado,
TamConjElite, de solues elite encontradas durante a explorao do espao de solues.
Este conjunto est, inicialmente, vazio. Cada soluo obtida ao nal de uma busca local
considerada como uma candidata a ser inserida no conjunto elite, desde que ela seja
melhor que a soluo de pior qualidade desse conjunto e apresente um percentual mnimo
de diferena em relao a cada soluo do conjunto elite (PercDif). Esta estratgia
adotada para evitar que o conjunto elite contenha solues muito parecidas. Se o conjunto
estiver vazio, a soluo simplesmente inserida no conjunto. Se o conjunto elite j possui
TamConjElite solues e a soluo corrente candidata a ser inserida neste conjunto,
ento esta substitui a soluo de pior qualidade.
O algoritmo inicia computando a diferena simtrica (s
1
, s
2
) entre s
1
e s
2
, resultando
no conjunto de movimentos que deve ser aplicado a uma delas, dita soluo inicial, para
alcanar a outra, dita soluo guia. A partir da soluo inicial, o melhor movimento
ainda no executado de (s
1
, s
2
) aplicado soluo corrente at que a soluo guia
seja atingida. A melhor soluo encontrada ao longo desta trajetria considerada como
candidata insero no conjunto elite e a melhor soluo j encontrada atualizada.
Diversas alternativas tm sido consideradas e combinadas em implementaes recentes
[41]:
No aplicar Reconexo por Caminhos a cada iterao, mas sim periodicamente, para
no onerar o tempo nal do algoritmo;
Explorar duas trajetrias potencialmente diferentes, usando s
1
como soluo inicial
e depois s
2
no mesmo papel;
Explorar apenas uma trajetria, usando s
1
ou s
2
como soluo inicial e
Inteligncia Computacional para Otimizao 51
No percorrer a trajetria completa de s
1
at s
2
, mas sim apenas parte dela (Reco-
nexo por Caminhos Truncada).
Para a escolha da alternativa mais apropriada, deve-se ter um compromisso entre
tempo de processamento e qualidade da soluo. Em [39] foi observado que a explorao
de duas trajetrias potencialmente diferentes para cada par (s
1
, s
2
) de solues consome,
aproximadamente, o dobro do tempo de processamento necessrio para explorar apenas
uma delas, com um ganho marginal muito pequeno em termos de qualidade de soluo.
Tambm foi observado pelos autores que, se apenas uma trajetria deve ser investigada,
melhores solues tendem a ser obtidas quando a Reconexo por Caminhos usa como
soluo inicial a melhor soluo dentre s
1
e s
2
(Esta a chamada Reconexo por Caminhos
Regressiva - Backward Path Relinking). Como a vizinhana da soluo inicial explorada
com muito mais profundidade do que aquela da soluo guia, usar como soluo inicial a
melhor dentre s
1
e s
2
oferece mais chances ao algoritmo de investigar mais detalhadamente
a vizinhana da soluo mais promissora. Pela mesma razo, as melhores solues so
normalmente encontradas prximas da soluo inicial, permitindo que o procedimento de
Reconexo por Caminhos seja interrompido aps algumas iteraes, antes de a soluo
guia ser alcanada.
Na Figura 26 representa-se o pseudocdigo do procedimento de reconexo por caminhos
para um problema de minimizao.
Procedimento Reconexo-Caminhos
1: g s;
2: Atribuir a g
;
8: se f( g) < f(g
) ento
9: g
g;
10: m se
11: m enquanto
12: Retorne g
;
Figura 26: Procedimento de Reconexo por Caminhos
A Figura 26 mostra que o algoritmo de Reconexo por Caminhos unidirecional inicia
determinando o conjunto de movimentos (s, g) que ser aplicado a s (soluo inicial)
at chegar a g (soluo guia) (linha 3). Cada iterao do procedimento de reconexo por
caminhos unidirecional possui os quatro seguintes passos:
aplicar soluo corrente g o melhor movimento do conjunto de movimentos (linha
5), obtendo a soluo g
;
excluir o melhor movimento do conjunto de movimentos ainda possvel (linha 6);
atualizar a soluo corrente (linha 7); e
testar se a soluo corrente, g, melhor que a melhor soluo, g
, encontrada ao
longo da trajetria aplicada a s para chegar a g. Em caso armativo, atribui-se g
52 Marcone Jamilson Freitas Souza
a g
a
melhor soluo dentre s e g (linha 2).
Quando a soluo corrente chega a g, o algoritmo de Reconexo por Caminhos pra
(linha 4 da Figura 26) e retorna a soluo g
(linha 12).
A Figura 27 ilustra o funcionamento da Reconexo por Caminhos em um problema de
programao de tripulaes (Crew Scheduling Problem). Nesta gura representa-se uma
soluo por uma matriz cujos elementos (1, . . . , 9) so tarefas a serem alocadas a jornadas
de trabalho. Cada linha da matriz constitue uma jornada de trabalho.
Figura 27: Mecanismo de intensicao Reconexo por Caminhos aplicado ao PPT
Para computar a diferena (s
1
, s
2
) entre as solues inicial e guia, vericado se cada
jornada da soluo guia est na soluo inicial. Para tornar este passo mais otimizado,
pode-se utilizar o seguinte esquema de comparao entre jornadas:
1. Compara-se, inicialmente, a funo de avaliao de cada jornada envolvida. Se forem
diferentes, conclui-se que as jornadas so diferentes. Caso contrrio, passa-se para o
passo seguinte;
2. Compara-se o nmero de tarefas de cada jornada envolvida. Se forem diferentes,
conclui-se que as jornadas so diferentes. Caso contrrio, analisa-se o passo seguinte;
3. Compara-se tarefa por tarefa de cada jornada envolvida. Se houver alguma tarefa
diferente, conclui-se que as jornadas so diferentes; caso contrrio, as jornadas so
iguais.
Aps ser computada a diferena entre as solues inicial e guia, incorpora-se na soluo
inicial cada jornada presente na diferena. A seguir xada a jornada adicionada e feita
a consistncia da soluo, eliminando-se as tarefas redundantes, confome ilustrado na
Figura 27(a). Cada soluo intermediria ento submetida a uma busca local mantendo-
se xa a jornada adicionada. O procedimento Reconexo por Caminhos prossegue com a
melhor soluo intermediria (Figura 27(b)). Como a soluo intermediria desse exemplo
Inteligncia Computacional para Otimizao 53
incorporou a segunda jornada da soluo guia, ento so analisadas a incorporao
soluo corrente da primeira e terceira jornadas da soluo guia. Retirada a redundncia
das solues e aplicada a busca local (mantendo-se xas as jornadas incorporadas), o
procedimento pra com a melhor das solues intermedirias encontradas.
Apresenta-se na Figura 28 o pseudocdigo dos principais blocos de um algoritmo Busca
Tabu com intensicao por Reconexo por Caminhos para um problema de minimizao.
Algoritmo BTRC
1: Entrada: f(.), N(.), A(.), [V [, f
min
, [T[, BTmax, s, IterAtivRC, IteracoesRC
2: s
s;
3: Iter 0;
4: MelhorIter 0;
5: T ;
6: ConjuntoElite ;
7: IterSemMelhora 0;
8: Inicialize a funo de aspirao A;
9: enquanto Critrio de parada no satisfeito faa
10: Iter Iter + 1;
11: Seja s
) < A(f(s));
12: Atualize a lista tabu;
13: s s
;
14: se s deve pertencer ao conjunto de solues elite ento
15: Inserir s no ConjuntoElite;
16: m se
17: se (IterSemMelhora mod IterAtivRC < IteracoesRC) e (Iter IterAtivRC) ento
18: Escolher aleatoriamente g ConjuntoElite com probabilidade uniforme;
19: Atribuir a g
a melhor soluo obtida aplicando reconexo por caminhos ao par (s, g);
20: s g
;
21: m se
22: se g
no ConjuntoElite;
24: m se
25: se f(s) < f(s
) ento
26: s
s;
27: MelhorIter Iter;
28: IterSemMelhora 0;
29: seno
30: IterSemMelhora IterSemMelhora + 1;
31: m se
32: Atualize a funo de aspirao A;
33: m enquanto
34: s s
;
35: Retorne s;
Figura 28: Algoritmo Busca Tabu com Reconexo por Caminhos
Na Figura 28, IterAtivRC um parmetro que representa o nmero de iteraes sem
melhora da Busca Tabu a partir do qual deve-se acionar o procedimento Reconexo por
Caminhos e IteracoesRC indica quantas vezes o procedimento RC ser acionado.
54 Marcone Jamilson Freitas Souza
5.2 Princpio da Otimalidade Prxima
Pelo Princpio da Otimalidade Prxima (Proximate Optimality Principle), boas solues
em um nvel esto prximas de boas solues em um nvel adjacente [20].
Uma implementao deste princpio no contexto de uma heurstica construtiva consiste
em renar a soluo parcial periodicamente durante o processo de construo.
Por exemplo, considerando o Problema do Caixeiro Viajante, imagine que uma solu-
o parcial envolvendo 6 cidades seja s = (1 3 4 5). Ento, antes de prosseguir com a
escolha das duas cidades ainda no visitadas, a saber, as cidades 2 e 6, esta soluo parcial
deve ser renada por um mtodo qualquer, por exemplo, o mtodo da Descida. Assim, a
construo s prossegue aps o renamento, que, no caso, pode alterar a ordem de visita
das cidades previamente visitadas. Inserida a prxima cidade, feito outro renamento
e assim sucessivamente. Como o renamento aps cada insero pode ser custoso com-
putacionalmente, tambm comum aplic-lo a cada IterPOP inseres, sendo IterPOP
um parmetro para o procedimento. Outra estratgia comumente adotada consiste em
prosseguir com o renamento at que um percentual mximo de inseres seja atingido.
Por exemplo, no caso do PCV, far-se-iam as inseres seguidas de renamento at que
75% das cidades fossem inseridas. Aps esse percentual, a construo seguiria sem a fase
de renamento.
5.3 Relaxao Adaptativa
A Relaxao Adaptativa (tambm conhecida como Oscilao Estratgica) est intima-
mente ligada s origens da Busca Tabu [20]. Esta tcnica prov um meio de se alcanar
uma combinao entre intensicao e diversicao. Ela consiste em orientar movimen-
tos em relao a um nvel crtico, que pode ser identicado por um estgio de construo
ou um intervalo escolhido de valores para uma funo. Tal nvel crtico (ou fronteira de
oscilao) freqentemente representa um ponto onde o mtodo normalmente seria inter-
rompido. Em vez de parar quando esta fronteira alcanada, as regras para selecionar
movimentos so modicadas para permitir que a regio denida pelo nvel crtico seja atra-
vessada. Esta abordagem ento continua at uma dada profundidade alm da fronteira de
oscilao. Encontrado este limite, retorna-se na direo oposta, e assim por diante.
A Figura 29 ilustra o comportamento deste procedimento.
O processo de repetidamente abordar e atravessar o nvel crtico a partir de diferentes
direes cria um comportamento oscilatrio, o qual d o nome ao mtodo. O controle sobre
esse comportamento estabelecido por meio da gerao de avaliaes e regras modicadas
para os movimentos, dependendo da regio navegada e da direo da busca. A possibili-
dade de percorrer uma trajetria j visitada evitada por mecanismos tabu padres, tais
como aqueles estabelecidos pelas funes da memria de curto prazo.
Em [42] apresenta-se um mecanismo de relaxao adaptativa onde os pesos, para cada
fonte de inviabilidade da funo de avaliao, so ajustados dinamicamente como proposto
por [13]. Para cada fonte de inviabilidade i o peso w
i
multiplicado por um fator
i
que
varia de acordo com o seguinte esquema:
1. No incio da busca
i
1.
2. A cada k movimentos:
se todas as k solues visitadas so factveis em relao inviabilidade i ento
i
i
/;
Inteligncia Computacional para Otimizao 55
Figura 29: Oscilao Estratgica
se todas as k solues visitadas so infactveis em relao inviabilidade i ento
i
i
;
se algumas solues so factveis e algumas outras so infactveis ento
i
per-
manece inalterado.
O parmetro neste esquema randomicamente selecionado, a cada vez, no intervalo
[1, 8; 2, 2]. Em [13], deterministicamente xado no valor 2. Em [42] optou-se por
randomizar tal valor para evitar que escolhas determinsticas pudessem guiar a busca.
Cada valor de
i
limitado por duas constantes
i,min
e
i,max
. Isso implica que
se
i
assumir um valor superior a
i,max
, ento ele recebe o valor
i,max
. De maneira
semelhante, se
i
assumir um valor inferior a
i,min
, ele recebe o valor
i,min
. A limitao
do valor de
i
tem como objetivo no perder o referencial de avaliao das solues, fato
que ocorreria aps uma longa seqncia de solues infactveis ou factveis, em decorrncia
de valores muito altos ou muito baixos, respectivamente, para esse parmetro.
Na Figura 30 apresentado o pseudocdigo de um algoritmo Busca Tabu que faz
uso de um procedimento de Relaxao Adaptativa. O mtodo de Busca Tabu implemen-
tado interrompe a busca do melhor vizinho da soluo corrente em duas situaes: (1)
quando o vizinho gerado melhor que a melhor soluo gerada at ento (linha 11) e (2)
quando um vizinho no tabu melhor que a soluo corrente (linha 15). Nesta gura,
IteracaoAtualizacao() indica quando os pesos dinmicos devem ser atualizados.
56 Marcone Jamilson Freitas Souza
Algoritmo BTRA
1: s GerarSolucaoInicial();
2: s
s;
3: ListaTabu ;
4: repita
5: Selecione um subconjunto V da vizinhana corrente N;
6: melhorMovimento movimentoRandomico(V );
7: melhorCustoDinamico ;
8: para todo Movimento m V faa
9: se ( f(s m) < f(s
) ) ento
10: melhorMovimento m;
11: interromper;
12: seno
13: se (m / ListaTabu) ento
14: se ( f(s m) < f(s) ) ento
15: melhorMovimento m;
16: interromper;
17: seno
18: se (CustoPorPesosDinamicos(sm) < melhorCustoDinamico) ento
19: melhorMovimento m;
20: melhorCustoDinamico CustoPorPesosDinamicos(s m);
21: m se
22: m se
23: m se
24: m se
25: m para
26: s s melhorMovimento;
27: se f(s) < f(s
) ento
28: s
s;
29: m se
30: AtualizarListaTabu();
31: se IteracaoAtualizacao() ento AtualizarPesosDinamicos();
32: at que Critrio de parada seja alcanado;
33: s s
;
34: Retorne s;
Figura 30: Algoritmo de Busca Tabu com Relaxao Adaptativa
Inteligncia Computacional para Otimizao 57
Referncias
[1] S. Barnard. Stereo matching by hierarchical microcanonical annealing. In Proceedings
of the 10th International Joint Conference on Articial Intelligence, Milan, Italy,
1987.
[2] M.P. Bastos and C.C. Ribeiro. Reactive Tabu Search with Path Relinking for the
Steiner Problem in Graphs. In Proceedings of the Third Metaheuristics International
Conference, pages 3136, Angra dos Reis, Brazil, 1999.
[3] R. Battiti. Reactive Search: Toward Self-Tuning Heuristics. In V.J. Rayward-Smith,
I.H. Osman, C.R. Reeves, and G.D. Smith, editors, Modern Heuristic Search Methods,
chapter 4, pages 6183. John Wiley & Sons, New York, 1996.
[4] R. Battiti and G. Tecchiolli. The Reactive Tabu Search. ORSA Journal of Computing,
6:126140, 1994.
[5] M. Creutz. Microcanonical Monte-Carlo Simulation. Physical Review Letters,
50:14111414, 1983.
[6] F. Dammeyer and S. Vo. Dynamic tabu list management using the reverse elimina-
tion method. In P.L. Hammer, editor, Tabu Search, volume 41 of Annals of Operations
Research, pages 3146. Baltzer Science Publishers, Amsterdan, 1993.
[7] D. de Werra. Tabu Search Techniques: A Tutorial and an Application to Neural
Networks. OR Spektrum, 11:131141, 1989.
[8] M. Dorigo. Optimization, Learning and Natural Algorithms. Phd thesis, Dipartimento
di Elettronica, Politecnico di Milano, Italy, 1992. 140 pp.
[9] M. Dorigo, V. Maniezzo, and A. Colorni. The Ant System: Optimization by a Colony
of Cooperating Agents. IEEE Transactions on Systems, Man, and Cybernetics - Part
B, 26:2941, 1996.
[10] M. Dorigo and T. Sttzle. The Ant Colony Optimization Metaheuristic: Algorithms,
Applications, and Advances. In F. Glover and G. A. Kochenberger, editors, Handbook
of Metaheuristics, chapter 9, pages 251285. Kluwer Academic Publishers, 2003.
[11] K.A. Dowsland. Simulated Annealing. In C.R. Reeves, editor, Modern Heuristic
Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 2, pages 2069. Blackwell Scientic Publications, London, 1993.
[12] T.A. Feo and M.G.C. Resende. Greedy randomized adaptive search procedures. Jour-
nal of Global Optimization, 6:109133, 1995.
[13] M. Gendreau, A. Hertz, and G. Laporte. A tabu search heuristic for the vehicle
routing problem. Management Science, 40:12761290, 1994.
[14] F. Glover. Future paths for Integer Programming and links to Articial Intelligence.
Computers and Operations Research, 5:553549, 1986.
[15] F. Glover. Tabu Search: Part I. ORSA Journal of Computing, 1:190206, 1989.
[16] F. Glover. Tabu Search: Part II. ORSA Journal of Computing, 2:432, 1990.
58 Marcone Jamilson Freitas Souza
[17] F. Glover. Tabu Search and adaptive memory programming - advances, applicati-
ons and challenges. In R. Barr, R. Helgason, and J. Kennington, editors, Interfaces
in Computer Sciences and Operations Research, pages 175. Kluwer Academic Pu-
blishers, 1996.
[18] F. Glover and S. Hana. Tabu Search and Finite Convergence. Discrete Applied
Mathematics, 119:336, 2002.
[19] F. Glover and M. Laguna. Tabu Search. In C.R. Reeves, editor, Modern Heuristic
Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 3, pages 70150. Blackwell Scientic Publications, London, 1993.
[20] F. Glover and M. Laguna. Tabu Search. Kluwer Academic Publishers, Boston, 1997.
[21] F. Glover, M. Laguna, and R. Marti. Scatter Search and Path Relinking: Advan-
ces and Applications. In F. Glover and G. A. Kochenberger, editors, Handbook of
Metaheuristics, chapter 1, pages 135. Kluwer Academic Publishers, 2003.
[22] F. Glover, E. Taillard, and D. de Werra. A users guide to tabu search. In P.L.
Hammer, editor, Tabu Search, volume 41 of Annals of Operations Research, pages
328. Baltzer Science Publishers, Amsterdan, 1993.
[23] D.E. Goldberg. Genetic Algorithms in Search, Optimization and Machine Learning.
Addison-Wesley, Berkeley, 1989.
[24] S. Hana. On the Convergence of Tabu Search. Journal of Heuristics, 7:4758, 2001.
[25] P. Hansen. The steepest ascent mildest descent heuristic for combinatorial program-
ming. In Congress on Numerical Methods in Combinatorial Optimization, Capri,
Italy, 1986.
[26] P. Hansen and N. Mladenovi. Variable Neighborhood Search: Methods and Recent
Applications. In Proceedings of the Third Metaheuristics International Conference,
pages 275280, Angra dos Reis, Brazil, 1999.
[27] P. Hansen and N. Mlavenovi. Variable Neighborhood Search: Principles and Appli-
cations. European Journal of Operational Research, 130:449467, 2001.
[28] A. Hertz. Finding a feasible course schedule using tabu search. Discrete Applied
Mathematics, 35:255270, 1992.
[29] A. Hertz and D. de Werra. The tabu search metaheuristic: how we used it. Annals
of Mathematics and Articial Intelligence, 1:111121, 1990.
[30] A. Hertz and M. Widmer. Guidelines for the use of meta-heuristics in combinatorial
optimization. European Journal of Operational Research Society, 151:247252, 2003.
[31] S. Kirkpatrick, D.C. Gellat, and M.P. Vecchi. Optimization by Simulated Annealing.
Science, 220:671680, 1983.
[32] A. Linhares and J.R.A. Torreo. Microcanonical Optimization Applied to the Tra-
veling Salesman Problem. International Journal of Modern Physics C, 9:133146,
1998.
[33] N. Mladenovi and P. Hansen. Variable Neighborhood Search. Computers and Ope-
rations Research, 24:10971100, 1997.
Inteligncia Computacional para Otimizao 59
[34] J. V. Moccellin, M. O. Santos, and M. S. Nagano. Um mtodo heurstico Busca
Tabu-Simulated Annealing para Flowshops Permutacionais . In Anais do XXXIII
Simpsio Brasileiro de Pesquisa Operacional, pages 10881095, 2001.
[35] M. Prais and C.C. Ribeiro. Parameter Variation in GRASP Implementations. In
Proceedings of the Third Metaheuristics International Conference, pages 375380,
Angra dos Reis, Brazil, 1999.
[36] M. Prais and C.C. Ribeiro. Reactive GRASP: An application to a matrix decom-
position problem in TDMA trac assignment. INFORMS Journal on Computing,
12:164176, 2000.
[37] M. Prais and C.C. Ribeiro. Variao de Parmetros em Procedimentos GRASP.
Investigacin Operativa, 9:120, 2000.
[38] C.R. Reeves. Genetic Algorithms. In C.R. Reeves, editor, Modern Heuristic Te-
chniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 4, pages 151196. Blackwell Scientic Publications, 1993.
[39] C. C. Ribeiro, E. Uchoa, and R. F. Werneck. A hybrid GRASP with perturbations
for the Steiner problem in graphs. INFORMS Journal on Computing, 14:228246,
2002.
[40] C.C. Ribeiro. Metaheuristics and Applications. In Advanced School on Articial
Intelligence, Estoril, Portugal, 1996.
[41] I. C. M. Rosseti. Estratgias sequenciais e paralelas de GRASP com reconexo por
caminhos para o problema de sntese de redes a 2-caminhos. Tese de doutorado,
Pontifcia Universidade Catlica do Rio de Janeiro, Rio de Janeiro, 2003.
[42] A. Schaefer. Tabu search techniques for large high-school timetabling problems. In
Proceedings of the 30th National Conference on Articial Intelligence, pages 363368,
1996.
[43] B. Selman, H. Levesque, and D. Mitchell. A new method for solving hard satisability
problems. In Proceedings of the 10th National Conference on Articial Intelligence,
pages 440446, 1992.
[44] J.R.A. Torreo. Inteligncia Computacional. Notas de aula, Universidade Federal
Fluminense, Niteri, 2004.
[45] J.R.A. Torreo and E. Roe. Microcanonical Optimization Applied to Visual Proces-
sing. Physics Letters A, 122:377382, 1980.
[46] Christos Voudouris. Guided Local Search for Combinatorial Optimisation Problems.
Phd thesis, Department of Computer Science, University of Essex, 1997.