Escolar Documentos
Profissional Documentos
Cultura Documentos
InteligênComputacional (Marcone J F Souza) PDF
InteligênComputacional (Marcone J F Souza) PDF
Sumrio
1 Introduo 2
2 Heursticas Construtivas 3
3 Heursticas de Refinamento 9
3.1 Mtodo da Descida/Subida (Descent/Uphill Method) . . . . . . . . . . . . . 10
3.2 Mtodo de Primeira Melhora . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Mtodo de Descida/Subida Randmica . . . . . . . . . . . . . . . . . . . . . 13
3.4 Mtodo No Ascendente/Descendente Randmico . . . . . . . . . . . . . . . 14
3.5 Descida em Vizinhana Varivel . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Metaheursticas 15
4.1 Multi-Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2 Simulated Annealing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 Busca Tabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.4 GRASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.5 Busca em Vizinhana Varivel . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.6 Iterated Local Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.7 Guided Local Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.8 Algoritmos Genticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.8.1 Descrio genrica do mtodo . . . . . . . . . . . . . . . . . . . . . . 32
4.8.2 Representao gentica de solues . . . . . . . . . . . . . . . . . . . 33
4.8.3 Operador crossover clssico . . . . . . . . . . . . . . . . . . . . . . . 35
4.8.4 Operador mutao clssico . . . . . . . . . . . . . . . . . . . . . . . 35
4.8.5 Operadores crossover para o PCV . . . . . . . . . . . . . . . . . . . 35
4.9 Scatter Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.10 Colnia de Formigas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.11 Algoritmos Memticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.12 Annealing Microcannico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.13 Otimizao Microcannica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1 Introduo
Muitos problemas prticos so modelados da seguinte forma: Dado um conjunto S de
variveis discretas s (chamadas solues) e uma funo objetivo f : S R, que associa
cada soluo s S a um valor real f (s), encontre a soluo s S, dita tima, para
a qual f (s) tem o valor mais favorvel (valor mnimo, no caso de o problema ter como
objetivo a minimizao de f , ou valor mximo, no caso de o problema ter como objetivo
a maximizao de f .
Grande parte desses problemas so combinatrios, sendo classificados na literatura
como NP-difceis, e assim, ainda no existem algoritmos que os resolvam em tempo poli-
nomial.
Para citar um exemplo, seja o conhecido Problema do Caixeiro Viajante (PCV). O
PCV descrito por um conjunto de n cidades e uma matriz de distncia entre elas, tendo
o seguinte objetivo: o caixeiro viajante deve sair de uma cidade, dita cidade origem, visitar
cada uma das n 1 cidades restantes apenas uma nica vez e retornar cidade origem
percorrendo a menor distncia possvel. Em outras palavras, deve ser encontrada uma rota
fechada (ciclo hamiltoniano) de comprimento mnimo que passe exatamente uma nica vez
por cada cidade.
Para mostrar a dificuldade de soluo do PCV, assuma que a distncia de uma cidade
i outra j seja simtrica, isto , que dij = dji . Assim, o nmero total de rotas possveis
(n 1)!/2. Para se ter uma idia da magnitude dos tempos envolvidos na resoluo do
PCV por enumerao completa de todas as possveis solues, para n = 20 tem-se 6 1016
rotas possveis. Assim, um computador que avalia uma rota em cerca de 108 segundos,
gastaria cerca de 19 anos para encontrar a melhor rota! Mesmo considerando os rpidos
avanos tecnolgicos dos computadores, uma enumerao completa de todas essas rotas
inconcebvel para valores elevados de n. Nos problemas da classe NP-difcil, no possvel
garantir que a rota de custo mnimo seja encontrada em tempo polinomial. Assim, no pior
caso, todas as possveis solues devem ser analisadas.
possvel dar uma certa inteligncia a um mtodo de enumerao, utilizando por
exemplo as tcnicas branch-and-bound ou branch-and-cut, de forma a reduzir o nmero de
solues a analisar no espao de solues. Com isto, pode ser possvel resolver problemas
de dimenses mais elevadas. Entretanto, dada a natureza combinatria do problema, pode
ser que, no pior caso, todas as solues tenham que ser analisadas. Este fato impede o uso
exclusivo destes mtodos, dito exatos, dado o tempo proibitivo de se encontrar a soluo
tima.
Portanto, em problemas desta natureza, o uso de mtodos exatos se torna bastante
restrito. Por outro lado, na prtica, em geral, suficiente encontrar uma boa soluo
para o problema, ao invs do timo global, o qual, para esta classe de problemas, somente
pode ser encontrado aps um considervel esforo computacional.
Este o motivo pelo qual os pesquisadores tm concentrado esforos na utilizao de
heursticas para solucionar problemas deste nvel de complexidade. Definimos heurstica
como sendo uma tcnica inspirada em processos intuitivos que procura uma boa soluo
a um custo computacional aceitvel, sem, no entanto, estar capacitada a garantir sua
otimalidade, bem como garantir quo prximo est da soluo tima.
O desafio produzir, em tempo reduzido, solues to prximas quanto possvel da
soluo tima. Muitos esforos tm sido feitos nesta direo e heursticas muito eficien-
tes foram desenvolvidas para diversos problemas. Entretanto, a maioria das heursticas
desenvolvidas muito especfica para um problema particular, no sendo eficientes (ou
mesmo aplicveis) na resoluo de uma classe mais ampla de problemas.
Somente a partir da dcada de 1980 intensificaram-se os estudos no sentido de se
Inteligncia Computacional para Otimizao 3
desenvolver procedimentos heursticos com uma certa estrutura terica e com carter mais
geral, sem prejudicar a principal caracterstica destes, que a flexibilidade.
Esta meta tornou-se mais realista a partir da reunio de conceitos das reas de Otimiza-
o e Inteligncia Artificial, viabilizando a construo das chamadas melhores estratgias
ou dos mtodos inteligentemente flexveis, comumemente conhecidos como metaheurs-
ticas.
Esses mtodos, situados em domnios tericos ainda pouco explorados pela literatura,
possuem como caracterstica bsica estruturas com uma menor rigidez que as encontradas
nos mtodos clssicos de otimizao sem, contudo, emergir em uma flexibilidade catica.
Dentre os procedimentos enquadrados como metaheursticas que surgiram ao longo
das ltimas dcadas, destacam-se: Algoritmos Genticos (AGs), Redes Neurais, Simulated
Annealing (SA), Busca Tabu (BT), GRASP, VNS, Colnia de Formigas etc.
As duas primeiras metaheursticas fundamentam-se em analogias com processos natu-
rais, sendo que os AGs so procedimentos inspirados em princpios da evoluo natural.
O SA explora uma possvel analogia com a termodinmica, enquanto a BT faz uso de
uma memria flexvel para tornar o processo de busca mais eficaz.
Estas notas de aula esto organizadas como segue. Na seo 2 so apresentadas as
heursticas construtivas, destinadas gerao de uma soluo inicial para um problema de
otimizao. Na seo 3 so apresentadas as heursticas clssicas de refinamento, destinadas
melhoria de uma soluo. Na seo 4 so apresentadas as principais metaheursticas
referenciadas na literatura e na ltima seo, tcnicas de intensificao e diversificao.
2 Heursticas Construtivas
Uma heurstica construtiva tem por objetivo construir uma soluo, elemento por ele-
mento. A forma de escolha de cada elemento a ser inserido a cada passo varia de acordo
com a funo de avaliao adotada, a qual, por sua vez, depende do problema abordado.
Nas heursticas clssicas, os elementos candidatos so geralmente ordenados segundo uma
funo gulosa, que estima o benefcio da insero de cada elemento, e somente o melhor
elemento inserido a cada passo.
A Figura 1 mostra o pseudocdigo para a construo de uma soluo inicial para um
problema de otimizao que utiliza uma funo gulosa g(.). Nesta figura, tmelhor indica
o membro do conjunto de elementos candidatos com o valor mais favorvel da funo de
avaliao g, isto , aquele que possui o menor valor de g no caso de o problema ser de
minimizao ou o maior valor de g no caso de o problema ser de maximizao.
A forma de construir uma soluo varia conforme o problema abordado. Para ilustrar
o funcionamento de uma heurstica construtiva utilizaremos o Problema da Mochila como
exemplo. Neste problema, h uma mochila de capacidade b e um conjunto de n objetos
que podem ser colocados na mochila. A cada objeto j est associado um peso wj e um
valor de retorno (benefcio) pj . Considerando a existncia de uma unidade de cada objeto,
o objetivo determinar o conjunto de objetos que devem ser colocados na mochila de
forma a maximizar o valor de retorno respeitando a capacidade da mochila.
Seja, ento, uma mochila de capacidade b = 23 e os 5 objetos da tabela a seguir, com
os respectivos pesos e benefcios.
Objeto (j) 1 2 3 4 5
Peso (wj ) 4 5 7 9 6
Benefcio (pj ) 2 2 3 4 4
Para construir uma soluo adicionemos mochila a cada passo, o objeto mais valioso
que no ultrapasse a capacidade da mochila. Em caso de empate, escolheremos o objeto
com menor peso. Reordenando os objetos de acordo com este critrio, obtemos:
Objeto (j) 5 4 3 1 2
Peso (wj ) 6 9 7 4 5
Benefcio (pj ) 4 4 3 2 2
Passo 4 : O objeto a ser alocado agora seria o primeiro. No entanto, esta alocao
faria superar a capacidade da mochila. Neste caso, devemos tentar alocar o prximo
objeto com o maior valor de pj ainda no analisado, que o objeto 2. Como tambm
a alocao deste objeto faria superar a capacidade da mochila e no h mais objetos
candidatos, conclumos que a soluo anterior a soluo final, isto : s = (00111)t
com f (s ) = 11.
Uma outra forma muito comum de se gerar uma soluo inicial escolher os elementos
candidatos aleatoriamente. Isto , a cada passo, o elemento a ser inserido na soluo
Inteligncia Computacional para Otimizao 5
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
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)
Como o menor custo de insero s621 , ento a cidade 6 deve ser inserida entre
as cidades 2 e 1. Logo, a subrota corrente passa a ser: s = (1 3 2 6). A
distncia associada a esta subrota : d(s) = d(s)anterior + s621 = 8 + 1 = 9.
iv) Passo 4: Das cidades ainda no visitadas (4 e 5), calculemos o custo de insero
entre todas as cidades i e j da subrota corrente. A tabela a seguir mostra os
custos de insero.
i k j skij = dik + dkj dij
1 4 3 s413 = 4 + 3 - 1 = 6
1 5 3 s513 = 9 + 8 - 1 = 16
3 4 2 s432 = 3 + 9 - 5 = 7
3 5 2 s532 = 8 + 7 - 5 = 7
2 4 6 s426 = 9 + 5 - 2 = 12
2 5 6 s526 = 7 + 2 - 2 = 7
6 4 1 s461 = 5 + 4 - 1 = 8
6 5 1 s561 = 2 + 9 - 1 = 10
Como o menor custo de insero s413 , ento a cidade 4 deve ser inserida entre as
cidades 1 e 3. Logo, a subrota corrente passa a ser: s = (1 4 3 2 6).
A distncia associada a esta subrota : d(s) = d(s)anterior + s413 = 9 + 6 = 15.
v) Passo 5: A nica cidade ainda no visitada a cidade 5. A tabela a seguir mostra
os custos de insero desta cidade entre todas as arestas da subrota corrente.
i k j skij = dik + dkj dij
1 5 4 s514 = 9 + 2 - 4 = 7
4 5 3 s543 = 2 + 8 - 3 = 7
3 5 2 s532 = 8 + 7 - 5 = 10
2 5 6 s526 = 7 + 2 - 2 = 7
6 5 1 s561 = 2 + 9 - 1 = 10
Como o menor custo de insero s514 , ento a cidade 5 deve ser inserida entre
as cidades 1 e 4. Logo, a rota resultante : s = (1 5 4 3 2 6). A
distncia associada a esta rota : d(s) = d(s)anterior + s514 = 15 + 7 = 22.
Inteligncia Computacional para Otimizao 9
3 Heursticas de Refinamento
As heursticas de refinamento em problemas de otimizao, tambm chamadas de tcnicas
de busca local, constituem uma famlia de tcnicas baseadas na noo de vizinhana. Mais
especificamente, seja S o espao de pesquisa de um problema de otimizao e f a funo
objetivo a minimizar. A funo N , a qual depende da estrutura do problema tratado,
associa a cada soluo s S, sua vizinhana N (S) S. Cada soluo s0 N (s)
chamada de vizinho de s. Denomina-se movimento a modificao m que transforma uma
soluo s em outra, s0 , que esteja em sua vizinhana. Representa-se esta operao por
s0 s m.
Em linhas gerais, esta classe de heursticas parte de uma soluo inicial qualquer (a
qual pode ser obtida por uma heurstica construtiva ou ento gerada aleatoriamente) e
caminha, a cada iterao, de vizinho para vizinho de acordo com a definio de vizinhana
adotada.
Conforme [30], um mtodo de busca local pode ser visto como um procedimento que
percorre um caminho em um grafo no-orientado G = (S, E), onde S representa o conjunto
de solues s do problema e E o conjunto de arestas (s, s0 ), com s0 N (s).
A definio de vizinhana crucial em uma heurstica de refinamento. De uma soluo
s do espao de solues deve ser sempre possvel atingir qualquer outra soluo em um
nmero finito de passos, utilizando um determinado tipo ou tipos de movimentos. Por
exemplo, considere no problema da mochila as solues s(1) = (01001)t e s(2) = (11010)t
do espao de solues. Com o movimento m = {trocar o valor de um bit} possvel
navegar no espao de solues do problema de s(1) a s(2) . De fato, com esse movimento
m podemos percorrer o seguinte caminho: s(1) = (01001)t (11001)t (11011)t
(11010)t = s(2) . No entanto, se definssimos o movimento m como sendo a troca de
dois bits simultaneamente, jamais conseguiramos de s(1) chegar a s(2) . Desta forma, a
explorao do espao de solues ficaria prejudicada e, eventualmente, a soluo tima
poderia no ser alcanada.
Em muitos problemas combinatrios tambm difcil at mesmo encontrar uma soluo
vivel. Nessas situaes, pode ser uma m idia caminhar apenas no espao das solues
viveis do problema considerado. Para tais problemas, o espao de busca pode incluir 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, dificilmente
geraramos quadros de horrios sem situaes de sobreposio. Relaxando-se estas restri-
es e penalizando-as na funo de avaliao, torna-se muito mais eficiente a explorao
do espao de busca [28].
Exemplifiquemos, agora, como gerar diferentes estruturas de vizinhana. Para tanto,
consideremos o Problema do Caixeiro Viajante, para o qual representamos uma soluo
s por um vetor de n posies, sendo que em cada posio i tem-se a cidade si . Com o
movimento m de troca de posio entre duas cidades definimos a estrutura de vizinhana
N (T ) . Assim s = (s1 s2 s3 sn )t tem como vizinhos em N (T ) (s) as seguintes solues:
s(1) = (s2 s1 s3 sn )t , s(2) = (s3 s2 s1 sn )t , , s(n1) = (sn s2 s3 s1 )t ,
s(n) = (s1 s3 s2 sn )t , , s(n(n1)/2) = (s1 s2 s3 sn sn1 )t . Por outro lado, con-
siderando como movimento m a realocao de uma cidade de uma posio na seqncia de
visita para outra, definimos a estrutura de vizinhana N (R) . Nesta estrutura, so vizinhos
10 Marcone Jamilson Freitas Souza
n
X
f (s) = pj sj (31)
j=1
P
n
com s satisfazendo condio de que wj sj b.
j=1
Outra possibilidade permitir a gerao de solues inviveis. Neste caso, uma funo
de avaliao apropriada seria:
n
X n
X
f (s) = pj sj max{0, wj sj b} (32)
j=1 j=1
P
n
sendo uma penalidade, por exemplo, = pj = 15.
j=1
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
suficientemente grande para atender a este objetivo.
Apliquemos esta heurstica instncia do problema dado, considerando a possibilidade
de gerao de solues infactveis, isto:
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 finais. A Figura 4, em que s indica um ponto de partida e s um timo
local encontrado a partir da aplicao do Mtodo da Descida a s, ilustra esta situao.
s
s
s
s*
s*
s*
Espao de solues
Uma outra funo de avaliao que poderia ser considerada em substituio da fr-
mula (32) a seguinte:
n
X
f (s) = pj sj f1 (s) (33)
j=1
P
n
1 se wj sj b > 0
j=1
sendo f1 (s) = Pn
0 se wj sj b 0
j=1
Inteligncia Computacional para Otimizao 13
P
n
e uma penalidade, definida como antes, por exemplo, = pj = 15.
j=1
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 dificul-
tar a explorao do espao de solues, pois conduz a regies planas, ditas plats, regies
nas quais as heursticas tm dificuldade para escapar. Em [30] os autores argumentam que
uma forma comum de evitar esta topologia no espao de busca adicionar componentes
funo de avaliao de forma a discriminar solues que teriam o mesmo valor da funo
custo original. Assim, no exemplo mencionado da mochila, das duas funes de avaliao
apresentadas, a mais adequada para guiar a busca a da frmula (32).
procedimento VND(f(.),N(.),r,s)
1 Seja r o nmero de estruturas diferentes de vizinhana;
2 k 1; {Tipo de estrutura de vizinhana corrente}
3 enquanto (k r) faa
4 Encontre o melhor vizinho s0 N (k) (s);
5 se (f (s0 ) < f (s))
6 ento
7 s s0 ;
8 k 1;
9 seno
10 k k + 1;
11 fim-se;
12 fim-enquanto;
13 Retorne s;
fim VND;
Figura 6: Algoritmo VND
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 especfico [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
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 refinamento. As amostras so obtidas
por meio da gerao de solues aleatrias. Com este procedimento, h uma diversifica-
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.
exp(1/T)
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1 Temperatura T
0
0 10 20 30 40 50
estvel. A soluo obtida quando o sistema encontra-se nesta situao evidencia o encontro
de um timo local.
Os parmetros de controle do procedimento so a razo de resfriamento , o nmero
de iteraes para cada temperatura (SAmax) e a temperatura inicial T0 .
Apresenta-se, pela Figura 9, o algoritmo Simulated Annealing bsico aplicado a um
problema de minimizao.
Tk1
Tk = p k 1 (45)
1 + Tk1
em que Tk representa a temperatura na iterao k do mtodo, isto , na k-sima vez em
que h alterao no valor da temperatura e uma constante tal que 0 < < 1. Valores
de prximos a zero indicam resfriamento muito lento.
Outra alternativa, usada em [34], consiste em fazer o resfriamento por meio da expres-
so:
Tk1 se k = 1
Tk = T k1 (46)
se k 2
1 + Tk1
T0 Tk1
sendo = (k1)T 0 Tk1
, T0 a temperatura inicial, Tk a temperatura na k-sima iterao
e um parmetro para corrigir a imperfeio do resfriamento (0 < < 1). Igualmente,
valores de prximos a zero indicam resfriamento muito lento.
Algoritmos baseados em SA normalmente incluem reaquecimento, seguido de novo
resfriamento, quando a quantidade de movimentos consecutivamente rejeitados alta [11].
comum, tambm, trabalhar nas temperaturas mais altas com uma taxa de resfriamento
menor e aument-la quando a temperatura reduzir-se.
A estimao do nmero mximo de iteraes em uma dada temperatura, isto , SAmax,
normalmente feita em funo das dimenses do problema tratado. Por exemplo, em um
problema de programao de horrios em escolas (school timetabling), envolvendo n tur-
mas, m professores e p horrios reservados para a realizao das aulas, o valor de SAmax
pode ser estimado em SAmax = k p m n, sendo k uma constante a determinar.
J em um problema de programao de tripulaes (crew scheduling) envolvendo ntrip
tripulantes e ntarefas tarefas, SAmax estimado em SAmax = k ntrip ntarefas.
H pelo menos duas prescries para a determinao autoadaptativa da temperatura
inicial: por simulao ou pelo custo das solues.
A primeira delas consiste em determinar a temperatura inicial por simulao. Por
este mecanismo, parte-se de uma soluo s e de uma temperatura de partida baixa. A
seguir, contam-se quantos vizinhos desta soluo s so aceitos em SAmax iteraes do
mtodo nesta temperatura. Caso esse nmero de vizinhos aceitos seja elevado, algo como
95% dos vizinhos, ento retorna-se a temperatura corrente como a temperatura inicial
para o processo de refinamento pelo mtodo. Caso o nmero de vizinhos aceitos no
atinja o valor mnimo requerido, aumenta-se a temperatura segundo uma certa taxa, por
exemplo 10%, e repete-se a contagem do nmero de vizinhos aceitos naquela temperatura.
O procedimento prossegue at que se obtenha o nmero mnimo de vizinhos aceitos. A
temperatura na qual esta condio ocorre representa a temperatura inicial para o mtodo
Simulated Annealing. A Figura 10 mostra o pseudocdigo para determinar a temperatura
inicial por este mtodo, considerando um problema de minimizao. Nesta figura, a
taxa de aumento da temperatura ( > 1), a taxa mnima de aceitao de solues
vizinhas (por exemplo, = 0.95) e T0 uma temperatura de partida para o mtodo, por
exemplo, T0 = 1.
Outra prescrio para determinar a temperatura inicial consiste em partir de uma dada
soluo e gerar todos os seus possveis vizinhos ou uma frao destes. Para cada um desses
vizinhos, calcular o respectivo custo segundo a funo de avaliao considerada. Repetir
este procedimento para outros pontos iniciais, j que dependendo da soluo inicial o custo
das solues vizinhas pode ser diferente. O maior custo encontrado uma estimativa para
a temperatura inicial.
20 Marcone Jamilson Freitas Souza
Em teoria, a temperatura final deve ser zero. Entretanto, na prtica suficiente chegar
a uma temperatura prxima de zero, devido preciso limitada da implementao compu-
tacional [44]. Um valor tpico tomar Tf = 0, 001. Alternativamente, pode-se identificar
o congelamento do sistema quando a taxa de aceitao de movimentos ficar abaixo de um
valor predeterminado.
Observa-se, finalmente, como regra geral, que os parmetros mais adequados para uma
dada aplicao do algoritmo s podem ser estabelecidos por experimentao [44].
Inteligncia Computacional para Otimizao 21
da melhor soluo.
Apresenta-se, pela Figura 11, o pseudocdigo de um algoritmo de Busca Tabu bsico
para o caso de minimizao. Neste procedimento, fmin o valor mnimo conhecido da
funo f , informao esta que em alguns casos est disponvel.
mentos. Um nmero fixo de iteraes sem melhora no valor da soluo tima corrente ,
em geral, utilizado para acionar estas estratgias. Na seo 5.3, pgina 54, detalha-se um
procedimento de diversificao, a Relaxao Adaptativa.
Mtodos de Busca Tabu incluem, tambm, listas tabu dinmicas [6, 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 [tmin , tmax ],
sendo tmin = 0, 9n e tmax = 1, 1n, com n representando o nmero de cidades da instncia
considerada. Nesta aplicao, depois que o tamanho da lista escolhido aleatoriamente
no intervalo [tmin , tmax ], ele mantido constante por 2tmax iteraes. A idia por trs da
utilizao da lista dinmica que, se com um dado tamanho de lista h ciclagem, ento
aumentando ou diminuindo esse tamanho haver alterao da quantidade de movimentos
tabu e, assim, diferentes solues podero ser geradas. Com esta possibilidade de mudana
de trajetria no espao de busca, a ocorrncia de ciclagem fica reduzida.
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 BT max = 1, isto , apenas uma iterao sem melhora.
Observe que o vizinho com o melhor valor para a funo de avaliao s0 = (00011)t ,
com f (s0 ) = 8, mas esta soluo tabu, uma vez que o bit da terceira posio est
na lista tabu. Como o critrio de aspirao desta soluo no satisfeito, pois
f (s0 ) = 8 f (s ) = 11, esta soluo no aceita. Desta forma, considera-se o
melhor vizinho no tabu, a saber:
Melhor vizinho: s0 = (00101)t , com f (s0 ) = 7 (Em caso de empate, como o caso, a
soluo escolhida aquela que satisfaz um determinado critrio, como por exemplo,
aquela associada ao menor peso ou menor ndice)
Como s0 o melhor vizinho de s (mesmo sendo de piora), ento s s0 , isto , a
nova soluo corrente passa a ser: s = (00101)t
Lista tabu = T = {4} (indicando que o bit da quarta posio no pode ser modifi-
cado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s = (00111)t e f (s ) = 11
Iter = 4; M elhorIter = 3;
Como Iter M elhorIter = 4 3 = 1 BT max = 1, ento a busca prossegue.
Observe que o vizinho com o melhor valor para a funo de avaliao s0 = (00111)t ,
com f (s0 ) = 11. Entretanto, esta soluo tabu, uma vez que o bit da quarta posi-
o est na lista tabu. Como o critrio de aspirao desta soluo no satisfeito,
pois f (s0 ) = 11 f (s ) = 11, esta soluo no aceita. Desta forma, considera-se o
melhor vizinho no tabu, a saber (j aplicado um critrio de desempate):
Melhor vizinho: s0 = (10101)t , com f (s0 ) = 9
Desta forma, a nova soluo corrente passa a ser: s = (10101)t , com f (s) = 9
Lista tabu = T = {1} (indicando que o bit da primeira posio no pode ser modi-
ficado, a no ser que o critrio de aspirao seja satisfeito)
Melhor soluo at ento: s = (00111)t e f (s ) = 11
Iter = 5; M elhorIter = 3;
Como Iter M elhorIter = 5 3 = 2 > BT max = 1, ento PARE. O mtodo de
Busca Tabu retorna, ento, s = (00111)t como soluo final, com valor f (s ) = 11.
26 Marcone Jamilson Freitas Souza
A aplicao deste mtodo mostra que a soluo final obtida melhor que aquela 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.
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 finais 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 sofisticados 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 fixo [35, 36, 37].
Inteligncia Computacional para Otimizao 29
procedimento VNS ()
1 Seja s0 uma soluo inicial;
2 Seja r o nmero de estruturas diferentes de vizinhana;
3 s s0 ; {Soluo corrente}
4 enquanto (Critrio de parada no for satisfeito) faa
5 k 1; {Tipo de estrutura de vizinhana corrente}
6 enquanto (k r) faa
7 Gere um vizinho qualquer s0 N (k) (s);
8 s00 BuscaLocal(s0 );
9 se (f (s00 ) < f (s))
10 ento
11 s s00 ;
12 k 1;
13 seno
14 k k + 1;
15 fim-se;
16 fim-enquanto;
17 fim-enquanto;
18 Retorne s;
fim VNS ;
Figura 15: Algoritmo VNS
Neste algoritmo, parte-se de uma soluo inicial qualquer e a cada iterao seleciona-se
aleatoriamente um vizinho s0 dentro da vizinhana N (k) (s) da soluo s corrente. Esse
vizinho ento submetido a um procedimento de busca local. Se a soluo tima local,
s00 , for melhor que a soluo s corrente, a busca continua de s00 recomeando da primeira
estrutura de vizinhana N (1) (s). Caso contrrio, continua-se a busca a partir da prxima
estrutura de vizinhana N (k+1) (s). Este procedimento encerrado quando uma condio
de parada for atingida, tal como o tempo mximo permitido de CPU, o nmero mximo
de iteraes ou nmero mximo de iteraes consecutivas entre dois melhoramentos. A
soluo s0 gerada aleatoriamente no passo 7 de forma a evitar ciclagem, situao que
pode ocorrer se alguma regra determinstica for usada.
Se a busca local realizada no passo 8 for convencional, o mtodo recebe a denominao
Basic Variable Neighborhood Search. Se, por outro lado, essa busca local for a Descida em
30 Marcone Jamilson Freitas Souza
Vizinhana Varivel (VND), descrita na seo 3.5, ento o mtodo recebe a denominao
General Variable Neighborhood Search (GVNS).
procedimento ILS
1 s0 GeraSolucaoInicial();
2 s BuscaLocal(s0 );
3 enquanto (os critrios de parada no estiverem satisfeitos) faa
4 s0 P erturbacao(histrico, s);
5 s00 BuscaLocal(s0 );
6 s CriterioAceitacao(s, s00 , histrico);
8 fim-enquanto;
fim ILS;
Figura 16: Algoritmo Iterated Local Search
u Perturbao
s
s'
t
s"
Espao de solues
Para definir 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 justifica uma vez que sendo a perturbao aleatria, poderiam ser produzidos
diferentes timos locais em funo da soluo intermediria gerada em um mesmo nvel
de perturbao.
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 filhos 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 s01 , s02 , . . . , s0n , normal-
mente aleatoriamente escolhida, a qual chamada de populao no tempo 0.
O procedimento principal um loop que cria uma populao st+1 t+1
1 , s2 , . . . , sn
t+1
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 filhos
(normalmente dois), de sorte que para cada cromossomo filho h um conjunto de genes de
cada um dos cromossomos pais. A operao de mutao consiste em alterar aleatoriamente
uma parte dos genes de cada cromossomo (componentes da soluo). Ambas as operaes
so realizadas com uma certa probabilidade. A operao de recombinao realizada
normalmente com uma probabilidade mais elevada (por exemplo, 80%) e a de mutao,
com uma baixa probabilidade (de 1 a 2%, em geral).
Gerada a nova populao do tempo t + 1, define-se a populao sobrevivente, isto ,
as n solues que integraro a nova populao. A populao sobrevivente definida pela
aptido dos indivduos. Os critrios comumente usados para escolher os cromossomos
sobreviventes so os seguintes: 1) aleatrio; 2) roleta (onde a chance de sobrevivncia
de cada cromossomo proporcional ao seu nvel de aptido) e 3) misto (isto , uma
combinao dos dois critrios anteriores). Em qualquer um desses critrios admite-se,
portanto, a sobrevivncia de indivduos menos aptos. Isto feito tendo-se por objetivo
tentar escapar de timos locais.
A Figura 18 mostra a estrutura de um Algoritmo Gentico bsico.
Os critrios de parada mais comuns so: quando um certo nmero de geraes 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
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:
procedimento AG
1 t 0;
2 Gere a populao inicial P (t);
3 Avalie P (t);
4 enquanto (os critrios de parada no estiverem satisfeitos) faa
5 t t + 1;
6 Gere P (t) a partir de P (t 1);
7 Avalie P (t);
8 Defina a populao sobrevivente;
9 fim-enquanto;
fim AG;
Figura 19: Algoritmo Gentico
p1 = (101010101010101010101010101010)
p2 = (110000001100001110000000000000)
Observe que o cromossomo que fornece um ponto de mximo local dado por:
t = {1 3 6 5 4 2 7 9 8}
p1 = (1 0 1 | 0 1 0) = (p11 | p21 )
p2 = (1 1 1 | 0 0 0) = (p21 | p22 )
ponto de corte
A partir dos cortes, so gerados dois filhos, cada qual formado a partir da reunio de
partes de cada um dos pais.
O1 = (p11 | p22 ) = (1 0 1 | 0 0 0)
O2 = (p12 | p21 ) = (1 1 1 | 0 1 0)
p1 = (1 2 3 | 4 5 6) associado rota t1 = {1 2 3 4 5 6 1}
p2 = (3 5 6 | 2 1 4) associado rota t1 = {1 4 3 5 6 2 1}
O1 = (p11 | p22 ) = (1 2 3 | 2 1 4)
O2 = (p12 | p21 ) = (3 5 6 | 4 5 6)
36 Marcone Jamilson Freitas Souza
p1 = (1 2 3 | 4 5 6 7 | 8 9)
p2 = (4 2 6 | 1 8 5 9 | 3 7)
Ento:
O1 = (X X X | 1 8 5 9 | X X)
O2 = (X X X | 4 5 6 7 | X X)
O1 = (X 2 3 | 1 8 5 9 | X X)
O2 = (X 2 X | 4 5 6 7 | 3 X)
X
k
p1 = (1 . . .
p2 = (4 . . .
O1 = (4 2 3 | 1 8 5 9 | X X)
X
k
p1 = (. . . | . . . | 8 . . . )
p2 = (. . . | . . . | 3 . . . )
X
k
p1 = (. . . 3 | . . .
p2 = (. . . 6 | . . .
O1 = (4 2 3 | 1 8 5 9 | 6 X)
X
k
p1 = (. . . | . . . | . . . 9)
p2 = (. . . | . . . | . . . 7)
O1 = (4 2 3 | 1 8 5 9 | 6 7)
O2 = (1 2 8 | 4 5 6 7 | 3 9)
p1 = (1 2 3 | 4 5 6 7 | 8 9)
p2 = (4 5 2 | 1 8 7 6 | 9 3)
O1 = (X X X | 4 5 6 7 | X X)
O2 = (X X X | 1 8 7 6 | X X)
934521876
Removem-se 4, 5, 6 e 7 desta lista, uma vez que estas cidades j foram visitadas,
resultando na subseqncia: 9 3 2 1 8. Esta subseqncia enxertada em
O1 , nesta ordem, a partir do seu segundo corte.
O1 = (X X X | 4 5 6 7 | X X)
ou
O1 = (2 1 8 | 4 5 6 7 | 9 3)
O2 = (3 4 5 | 1 8 7 6 | 9 2)
T1 : 5 3 1 2 4
T2 : 3 1 2 4 5
p1 = (1 2 3 4 5 6 7 8 9)
p2 = (4 1 2 8 7 6 9 3 5)
O1 = (1 X X X X X X X X)
O1 = (1 X X 4 X X X X X)
O1 = (1 X X 4 X X X 8 X)
O1 = (1 2 3 4 X X X 8 X)
O ltimo inteiro alocado foi 2, mas na 2a posio em p2 est o inteiro 1 que j est
em O1 . Neste caso, diz-se que foi completado um ciclo.
A partir da, as cidades restantes de O1 so preenchidas do outro pai (p2 ), obtendo-se:
O1 = (1 2 3 4 7 6 9 8 5)
O2 = (4 1 2 8 5 6 7 3 9)
p1 = (1 2 3 4 5 6)
p2 = (3 4 1 6 2 5)
O operador ERX pode, a partir de dois cromossomos pais, gerar um ou dois filhos.
A verso para gerar um filho a seguinte:
Selecione a cidade inicial de um dos pais (no caso, cidade 1 ou cidade 3). A cidade
inicial quela associada ao menor nmero de arestas, conforme ser justificado mais
adiante. Como no exemplo considerado houve empate, escolhe-se arbitrariamente a
cidade 1.
A cidade 1 est diretamente ligada s cidades 2, 4 e 6. A prxima cidade no cromos-
somo filho ser dentre estas cidades, aquela que possui o menor nmero de arestas
(no exemplo, escolhe-se a cidade 4). A rota parcial ser, ento: 14. . . ou O1 = (1
4 X X X X).
Dentre as cidades conectadas diretamente cidade 4, seleciona-se aquela que possui
o menor nmero de arestas e que ainda no esteja na rota parcial O1 . Caso no
existam candidatos, a seleo da prxima aresta feita aleatoriamente dentre as
cidades no pertencentes rota parcial. No exemplo, os vizinhos de 4 so: 3, 5 e 1,
mas a cidade 1 j est na rota, ento escolhe-se entre 3 e 5. Como a cidade 3 possui
menos arestas, ela selecionada, obtendo:
O1 = (1 4 3 X X X)
Inteligncia Computacional para Otimizao 41
O1 = (1 4 3 2 X X)
O1 = (1 4 3 2 6 X)
O1 = (1 4 3 2 6 5)
O procedimento da Figura 20, que descreve o mtodo, inicia com a criao de um con-
junto de referncia (RefSet). Para isso, o procedimento Diversificao usado para cons-
truir um conjunto P de solues diversificadas. A cardinalidade de P, PSize, tipicamente
10 vezes o tamanho de RefSet [21]. Inicialmente, o conjunto de referncia RefSet consiste
de 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 (nbest2 nbest)/2, que corresponde a
todos os possveis pares de solues em RefSet. Os pares em NewSubsets so selecionados
um por vez em ordem lexicogrfica e o procedimento Combinao de Solues aplicado
Inteligncia Computacional para Otimizao 43
procedimento ScatterSearch
1 P ;
Use o procedimento Diversificao para construir uma soluo x;
Se x 6 P ento adicione x a P , isto , P P {x}; caso contrrio, descarte x;
Repita este procedimento at que |P | = PSize;
Construa RefSet = {x1 , , xnbest }, com nbest solues diversificadas de P ;
2 Avalie as solues em RefSet e ordene-as de acordo com a funo de avaliao;
(Considere x1 a melhor soluo e xnbest a pior)
NewSolutions T RU E;
enquanto (NewSolutions) faa
3 Gere NewSubsets, isto , todos os pares de solues de RefSet
desde que haja pelo menos uma nova soluo;
NewSolutions F ALSE;
enquanto (NewSubset 6= ) 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 6 RefSet e f (x) < f (xnbest ) ento
6 xnbest x e reordene RefSet;
7 NewSolutions T RU E;
fim-se
8 Remova s de NewSubsets;
fim-enquanto;
fim-enquanto;
fim 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 flag NewSolutions alterado para TRUE e o subconjunto s que foi
combinado removido de NewSubsets nos passos 7 e 8, respectivamente.
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):
[ij ] [ij ]
pkij = P j ki (47)
[il ] [il ]
lk
i
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 w 1
melhores rotas (w < m) e melhor rota global podem depositar feromnio. A r-sima
melhor formiga da colnia contribui com a atualizao de feromnio com um peso dado
por max{0, w r} enquanto a formiga que produziu a melhor soluo global contribui com
um peso w. Nesta situao, o passo 5 da Figura 21 substitudo pela expresso (49):
w1
X
ij (1 ) ij + (w r) rij + w gb
ij (i, j) (49)
r=1
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
[Ei Dmax + Di , Ei + Di ].
Os parmetros principais de controle do algoritmo OM so o nmero mximo OM max
de iteraes consecutivas sem melhora em OM, o nmero mximo de iteraes consecutivas
sem melhora na fase de inicializao Imax, o nmero mximo de iteraes de amostragem
Amax, o valor inicial Di do demnio e a sua capacidade mxima Dmax .
Apresentamos, pelas figuras 24 e 25, os pseudocdigos das fases de inicializao e
amostragem, respectivamente, de um algoritmo de Otimizao Microcannica bsico.
Inteligncia Computacional para Otimizao 49
No aplicar Reconexo por Caminhos a cada iterao, mas sim periodicamente, para
no onerar o tempo final do algoritmo;
Explorar duas trajetrias potencialmente diferentes, usando s1 como soluo inicial
e depois s2 no mesmo papel;
Explorar apenas uma trajetria, usando s1 ou s2 como soluo inicial e
Inteligncia Computacional para Otimizao 51
Procedimento Reconexo-Caminhos
1: g s;
2: Atribuir a g 0 a melhor soluo entre s e g;
3: Calcular o conjunto de movimentos possveis (s, g);
4: enquanto |(s, g)| 6= 0 faa
5: Atribuir a g 00 a melhor soluo obtida aplicando o melhor movimento de (s, g) a
g;
6: Excluir de (s, g) este movimento;
7: g g 00 ;
8: se f (g) < f (g 0 ) ento
9: g 0 g;
10: fim se
11: fim enquanto
12: Retorne g 0 ;
Para computar a diferena (s1 , s2 ) entre as solues inicial e guia, verificado se cada
jornada da soluo guia est na soluo inicial. Para tornar este passo mais otimizado,
pode-se utilizar o seguinte esquema de comparao entre jornadas:
3. Compara-se tarefa por tarefa de cada jornada envolvida. Se houver alguma tarefa
diferente, conclui-se que as jornadas so diferentes; caso contrrio, as jornadas so
iguais.
Aps ser computada a diferena entre as solues inicial e guia, incorpora-se na soluo
inicial cada jornada presente na diferena. A seguir fixada a jornada adicionada e feita
a consistncia da soluo, eliminando-se as tarefas redundantes, confome ilustrado na
Figura 27(a). Cada soluo intermediria ento submetida a uma busca local mantendo-
se fixa a jornada adicionada. O procedimento Reconexo por Caminhos prossegue com a
melhor soluo intermediria (Figura 27(b)). Como a soluo intermediria desse exemplo
Inteligncia Computacional para Otimizao 53
Algoritmo BTRC
1: Entrada: f (.), N (.), A(.), |V |, fmin , |T |, BT max, s, IterAtivRC, IteracoesRC
2: s s;
3: Iter 0;
4: M elhorIter 0;
5: T ;
6: ConjuntoElite ;
7: IterSemM elhora 0;
8: Inicialize a funo de aspirao A;
9: enquanto Critrio de parada no satisfeito faa
10: Iter Iter + 1;
11: Seja s0 s m tal que o movimento m no seja tabu (m / T ) ou f (s0 ) < A(f (s));
12: Atualize a lista tabu;
13: s s0 ;
14: se s deve pertencer ao conjunto de solues elite ento
15: Inserir s no ConjuntoElite;
16: fim se
17: se (IterSemM elhora mod IterAtivRC < IteracoesRC) e (Iter IterAtivRC) ento
18: Escolher aleatoriamente g ConjuntoElite com probabilidade uniforme;
19: Atribuir a g 0 a melhor soluo obtida aplicando reconexo por caminhos ao par (s, g);
20: s g0 ;
21: fim se
22: se g 0 deve pertencer ao conjunto de solues elite ento
23: Inserir g 0 no ConjuntoElite;
24: fim se
25: se f (s) < f (s ) ento
26: s s;
27: M elhorIter Iter;
28: IterSemM elhora 0;
29: seno
30: IterSemM elhora IterSemM elhora + 1;
31: fim se
32: Atualize a funo de aspirao A;
33: fim enquanto
34: s s ;
35: Retorne s;
1. No incio da busca i 1.
2. A cada k movimentos:
Algoritmo BTRA
1: s GerarSolucaoInicial();
2: s s;
3: ListaT abu ;
4: repita
5: Selecione um subconjunto V da vizinhana corrente N ;
6: melhorM ovimento movimentoRandomico(V );
7: melhorCustoDinamico ;
8: para todo Movimento m V faa
9: se ( f (s m) < f (s ) ) ento
10: melhorM ovimento m;
11: interromper;
12: seno
13: se (m / ListaT abu) ento
14: se ( f (s m) < f (s) ) ento
15: melhorM ovimento m;
16: interromper;
17: seno
18: se (CustoP orP esosDinamicos(sm) < melhorCustoDinamico) ento
19: melhorM ovimento m;
20: melhorCustoDinamico CustoP orP esosDinamicos(s m);
21: fim se
22: fim se
23: fim se
24: fim se
25: fim para
26: s s melhorM ovimento;
27: se f (s) < f (s ) ento
28: s s;
29: fim se
30: AtualizarListaT abu();
31: se IteracaoAtualizacao() ento AtualizarP esosDinamicos();
32: at que Critrio de parada seja alcanado;
33: s s ;
34: Retorne s;
Referncias
[1] S. Barnard. Stereo matching by hierarchical microcanonical annealing. In Proceedings
of the 10th International Joint Conference on Artificial Intelligence, Milan, Italy,
1987.
[2] M.P. Bastos and C.C. Ribeiro. Reactive Tabu Search with Path Relinking for the
Steiner Problem in Graphs. In Proceedings of the Third Metaheuristics International
Conference, pages 3136, Angra dos Reis, Brazil, 1999.
[4] R. Battiti and G. Tecchiolli. The Reactive Tabu Search. ORSA Journal of Computing,
6:126140, 1994.
[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.
[8] M. Dorigo. Optimization, Learning and Natural Algorithms. Phd thesis, Dipartimento
di Elettronica, Politecnico di Milano, Italy, 1992. 140 pp.
[9] M. Dorigo, V. Maniezzo, and A. Colorni. The Ant System: Optimization by a Colony
of Cooperating Agents. IEEE Transactions on Systems, Man, and Cybernetics - Part
B, 26:2941, 1996.
[10] M. Dorigo and T. Sttzle. The Ant Colony Optimization Metaheuristic: Algorithms,
Applications, and Advances. In F. Glover and G. A. Kochenberger, editors, Handbook
of Metaheuristics, chapter 9, pages 251285. Kluwer Academic Publishers, 2003.
[11] K.A. Dowsland. Simulated Annealing. In C.R. Reeves, editor, Modern Heuristic
Techniques for Combinatorial Problems, Advanced Topics in Computer Science Series,
chapter 2, pages 2069. Blackwell Scientific Publications, London, 1993.
[12] T.A. Feo and M.G.C. Resende. Greedy randomized adaptive search procedures. 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 Artificial Intelligence.
Computers and Operations Research, 5:553549, 1986.
[15] F. Glover. Tabu Search: Part I. ORSA Journal of Computing, 1:190206, 1989.
[16] F. Glover. Tabu Search: Part II. ORSA Journal of Computing, 2:432, 1990.
58 Marcone Jamilson Freitas Souza
[17] F. Glover. Tabu Search and adaptive memory programming - advances, 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. Hanafi. 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 Scientific 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. Hanafi. 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 Artificial Intelligence, 1:111121, 1990.
[30] A. Hertz and M. Widmer. Guidelines for the use of meta-heuristics in combinatorial
optimization. European Journal of Operational Research Society, 151:247252, 2003.
[31] S. Kirkpatrick, D.C. Gellat, and M.P. Vecchi. Optimization by Simulated Annealing.
Science, 220:671680, 1983.
[32] A. Linhares and J.R.A. Torreo. Microcanonical Optimization Applied to the 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
[46] Christos Voudouris. Guided Local Search for Combinatorial Optimisation Problems.
Phd thesis, Department of Computer Science, University of Essex, 1997.