META-HEURÍSTICAS Neste capítulo apresenta-se uma sistematização do domínio das meta-heurísticas, com
2.2 Heurísticas
2.3.1 Meta-heurísticas baseadas em pesquisa local
As abordagens de pesquisa local remontam ao final da década de 1950, quando Bock [Bock 1958] e Croes [Croes 1958] desenvolveram os procedimentos de "link exchange" para o Problema do Caixeiro Viajante ("Travelling Salesman Problem"). Desde então, uma grande diversidade de algoritmos de pesquisa local têm sido propostos, procurando diferentes formas de evitar a optimalidade local.
Uma revisão da área pode ser obtida em [Yannakakis 1990] e um tratamento mais detalhado em [Aarts, Lenstra 1995]. Para uma sistematização dos conceitos fundamentais de vizinhanças refere-se [Papadimitriou, Steiglitz 1982].
O conceito de vizinhança
A questão central da pesquisa local é como realizar a passagem de uma solução para outra solução. Para a discussão deste tópico, é essencial começar por definir o que é a
vizinhança N
( )
s da solução s, ou seja, o conjunto de soluções “semelhantes” a s. O significado de “semelhante” deve aqui ser associado à possibilidade de obter uma solução( )
ss N'∈ a partir de s, realizando apenas uma operação elementar, chamada movimento, sobre
s (eliminar ou acrescentar um componente à solução, trocar elementos numa permutação,
Uma vizinhança N é um mapeamento S S
N: →2 , em que S
2 denota o conjunto de
todos os subconjuntos de S . Para cada s∈S, o conjunto N
( )
s contém todas as soluções quepodem ser atingidas com um movimento a partir de s. Estas soluções são designadas vizinhos
de s.
Uma estrutura de vizinhança N pode ser representada por um grafo de vizinhança
( )
V AG= , , no qual V =S e
( )
s,s' ∈A sses'∈N( )
s . Se para todo o( )
s,s' ∈A se verificarsimultaneamente
( )
s ,'s ∈A, a vizinhança é simétrica e pode ser representada por um grafo nãoorientado.
Uma vizinhança é frequentemente definida por um conjunto de operadores OP . Um
operador é um mapeamento op:Sop→S com domínio Sop⊆S. O conjunto de vizinhos
( )
sN para uma solução s∈S é então dado por
( )
{
op( )
|op OP, Sop}
.N s = s ∈ s∈ (2.3)
Uma solução s∈S é um óptimo local em relação a N se f
( ) ( )
s ≤f s' , para todo o( )
ss N'∈ . Uma vizinhança N em que todos os óptimos locais em relação a N são também
óptimos globais designa-se vizinhança exacta.
Pesquisa local simples ("Descent" ou "Hill Climbing")
Os métodos de pesquisa local baseiam-se em determinar, de entre os elementos da
vizinhança N
( )
s da solução actual s, um que tenha um melhor valor de acordo com algumcritério pré-definido, passando a considerar esse elemento como a nova solução actual, e repetindo a operação até que se considere que não é possível encontrar uma solução melhor, ou porque não exista nenhum elemento melhor na vizinhança dessa solução, ou porque se verifique algum critério de paragem.
No algoritmo de pesquisa local mais simples, chamado Iterative Improvement (Algoritmo 2.1), a vizinhança da solução actual é percorrida até ser encontrada uma melhor solução; se tal suceder a solução encontrada torna-se a nova (e melhor) solução actual; caso contrário, o algoritmo termina.
Algoritmo Iterative Improvement
Calcular uma solução de partida admissível s∈S;
Enquanto existir uma solução melhor em N
( )
sDeterminar um s N'∈
( )
s com f( ) ( )
s' <f s ;' s
s= ;
Algoritmo 2.1 Iterative Improvement
Numa variante deste esquema, conhecida como Steepest Descent (Algoritmo 2.2), em alternativa a seleccionar qualquer solução melhor do que a actual, selecciona-se a melhor solução da vizinhança.
Algoritmo Steepest Descent
Calcular uma solução de partida admissível s∈S;
Enquanto existir uma solução melhor em N
( )
sDeterminar s N'∈
( )
s com f( ) ( )
s' ≤f s'' , para todo o s''∈N( )
s ;' s
s= ;
Algoritmo 2.2 Steepest Descent
Opções gerais
A aplicação de meta-heurísticas baseadas em pesquisa local exige um conjunto de opções de carácter estratégico, que influenciam de forma determinante o seu desempenho. Algumas dessas opções são comuns à generalidade das meta-heurísticas [Pirlot 1996]:
§ Escolha de um critério de paragem. Contrariamente à pesquisa local simples, a generalidade das meta-heurísticas baseadas em pesquisa local não tem implícito um critério de paragem. As variantes genéricas mais comuns consistem em terminar a execução do algoritmo após um número fixo de iterações, após um determinado número de iterações sucessivas sem alteração da melhor solução, ou quando é atingido um tempo limite de execução.
§ Selecção do espaço de soluções, função objectivo e estrutura de vizinhança. Desejavelmente, a movimentação de solução para solução vizinha, através do espaço de soluções, deverá ser tão fácil quanto possível, por motivos de eficiência computacional.
É prática habitual ter em conta restrições do problema original, através da inclusão na função objectivo de penalizações associadas à sua violação. Assim, revela-se de grande importância prática a decisão de quais as restrições rígidas, que deverão ser consideradas na definição do espaço de soluções e de quais as que poderão ser relaxadas (isto é, tratadas como indicado).
Refira-se ainda que uma estrutura de vizinhança deverá sempre garantir que a partir de uma qualquer solução se possa atingir qualquer outra, através de uma sequência de movimentos.
§ Escolha da solução inicial. A solução de partida para o processo de pesquisa pode ter uma grande influência sobre a possibilidade de mais rapidamente se cair ou não num óptimo local. Em geral, será interessante que o desempenho do algoritmo seja independente da solução de partida.
Se, por um lado, uma boa solução de partida pode confinar a pesquisa a uma região da qual é difícil escapar, por outro, em situações em que as boas soluções tenham uma estrutura particular, dificilmente alcançável com movimentos elementares a partir de uma solução inicial aleatória, poderá fazer sentido utilizar soluções de partida cuidadosamente escolhidas.
Simulated Annealing
As meta-heurísticas baseadas em pesquisa local estabelecidas como "clássicas" na literatura são o Simulated Annealing (SA) e a Pesquisa Tabu (TS, do inglês Tabu Search). Ambas as meta-heurísticas, nas suas versões mais elementares, se baseiam em pesquisa local contínua. Uma excelente introdução a estas meta-heurísticas, na qual se baseia a seguinte apresentação, pode ser encontrada em [Pirlot 1996].
Na versão base (tradicional) do SA [Kirkpatick et al. 1983] (Algoritmo 2.3) selecciona- se aleatoriamente uma solução na vizinhança da solução actual, que será aceite como nova solução actual se for uma melhor solução. Caso contrário, será aceite com uma probabilidade que será dada por uma função decrescente com a extensão da deterioração, e crescente com um parâmetro designado temperatura. Este último parâmetro é gradualmente reduzido de forma a tornar o algoritmo mais selectivo na aceitação de novas soluções.
Algoritmo Simulated Annealing
Calcular uma solução de partida admissível s∈S;
Inicializar a melhor solução encontrada s*=s;
Inicializar a temperatura T;
Enquanto não se cumprir o critério de paragem
Seleccionar aleatoriamente s N'∈
( )
s ; Se f( ) ( )
s' <f s ' s s= ; Se f( ) ( )
s <f s* s s*= ; Se nãoSeleccionar aleatoriamente um número p∈
[ ]
0,1;Se ( ) ( ) T e p s s f' f − − ≤ ' s s= ; Actualizar a temperatura T;
Algoritmo 2.3 Simulated Annealing
Além do conjunto de decisões genéricas, já referidas, algumas decisões específicas ao SA envolvem:
1. Escolha da probabilidade de aceitação. A probabilidade utilizada no algoritmo apresentado corresponde a uma distribuição de Boltzmann, numa analogia à termodinâmica. Não parecem existir, actualmente, razões especiais para privilegiar esta opção, tradicionalmente utilizada na prática.
2. Escolha de um esquema de arrefecimento ("cooling schedule"). O esquema mais comum
consiste em partir de uma temperatura inicial T0, manter a temperatura durante
um número constante de passos L (plateau), e após cada série de L passos
decrescê-la (geometricamente) através do produto por um factor fixo α,
1
0<α< . Ou seja, após a série de passos k , a temperatura será k
k T
T = 0⋅α . 3. Escolha de critério de paragem específico. Variantes particulares ao SA podem consistir
num determinado número de iterações sucessivas ser inferior a um limiar estabelecido em função dos parâmetros específicos do algoritmo.
Uma meta-heurística que apresenta fortes semelhanças com o SA é o Threshold
Accepting [Dueck, Scheuer 1990]. Enquanto o SA recorre a uma regra de aceitação
probabilística para soluções que provocam uma deterioração do valor da função objectivo, o
Threshold Accepting utiliza uma regra de aceitação determinística. Um movimento será aceite se
não deteriorar o valor da função objectivo em mais do que um limiar V que, à semelhança do
SA, é decrescido geometricamente ao longo da execução do algoritmo, ou seja, Vk =Vk−1⋅α e
k
k V
V = 0⋅α , com 0<α<1.
Pesquisa Tabu
A Pesquisa Tabu (TS) [Glover 1986] é uma técnica de pesquisa local orientada pela utilização de estruturas de memória adaptativas ou flexíveis. Na sua configuração mais básica (Algoritmo 2.4) utiliza uma lista, designada lista tabu, de atributos dos últimos movimentos realizados (em número previamente fixado, ou dinamicamente ajustado durante a execução). Esta lista é utilizada com o objectivo de evitar a ocorrência de movimentos inversos dos realizados recentemente, não permitindo por um lado o regresso a soluções anteriores e, sobretudo, garantindo diversificação da pesquisa, através da sua orientação para regiões do espaço de pesquisa ainda não exploradas e procurando, assim, evitar os óptimos locais. Nas versões básicas de TS, em alternativa à pesquisa numa vizinhança, é feita, com alguma frequência, uma pesquisa numa sub-vizinhança SN , isto é, num subconjunto da vizinhança, de dimensão definida e constituído por elementos retirados aleatoriamente da vizinhança.
Em cada iteração, a solução actual é substituída pela melhor solução encontrada na sua vizinhança, que não seja proibida pela lista tabu, ou que, caso o seja, conduza a uma solução satisfatória. Este carácter satisfatório é definido pela satisfação de um dado critério de
aspiração, que será verificado, por exemplo, quando uma solução for melhor do que qualquer
solução encontrada até ao momento, ou for melhor do que as soluções que originaram os atributos da lista que a fazem tabu.
Além do conjunto de decisões genéricas já apontadas, para a aplicação da TS é necessário decidir quais os atributos a guardar na lista, qual o comprimento máximo que esta deverá ter e qual o critério de aspiração. A utilização de outros tipos de estruturas de memória, de médio e longo prazo, é feita, normalmente, com objectivos de intensificar a exploração de regiões promissoras do espaço de soluções (intensificação) ou de diversificar a pesquisa, orientando-a para regiões inexploradas (diversificação).
Algoritmo Pesquisa Tabu
Calcular uma solução de partida admissível s∈S;
Inicializar a melhor solução encontrada s*=s;
Inicializar a lista tabu TL=
{ }
;Enquanto não se cumprir o critério de paragem
Determinar s SN'∈
( )
s com f( ) ( )
s' ≤f s'' , para todo o s''∈SN( )
s , e(TL não faz
( )
s,s' tabu ou s satisfaz o critério de aspiração );Se f
( ) ( )
s' <f sInserir atributos de
( )
s,s' em TL, removendo o primeiroelemento se TL estiver completa;
Se f
( ) ( )
s' <f s* ' s s*= ; ' s s= ;Algoritmo 2.4 Pesquisa Tabu
GRASP
Na área da pesquisa local com multiarranque, a meta-heurística que tem vindo a assumir maior relevância é o GRASP (Greedy Randomized Adaptive Search Procedure) [Feo, Resende 1995] (Algoritmo 2.5).
Cada iteração de GRASP consiste de duas fases: construção e pesquisa local. Na primeira fase é construída uma solução admissível, acrescentando-se à solução um componente de cada vez, que é seleccionado de forma "greedy" de entre todos os elementos de uma lista
restrita de candidatos (LRC). As soluções geradas pela fase construtiva do GRASP não serão
garantidamente óptimos locais em relação a vizinhanças simples, pelo que será quase sempre benéfica a aplicação adicional de um método de pesquisa local, procurando melhorar a solução construída.
O carácter adaptativo do método resulta do facto de que o benefício associado a cada elemento é actualizado em cada iteração da fase de construção, reflectindo as alterações introduzidas pela selecção do elemento anterior. O carácter probabilístico é introduzido pela selecção aleatória de um dos melhores candidatos da LRC, não necessariamente o melhor.
Algoritmo GRASP
( )
* =∞f s ;
Enquanto não se cumprir o critério de paragem
{ }
=
s ;
Enquanto a construção de s não estiver completa
Construir lista restrita de candidatos LRC ;
Seleccionar aleatoriamente um elemento c de LRC ;
{ }
c ss= ∪ ;
Adaptar a função "greedy";
Realizar pesquisa local, com solução inicial s e solução
obtida 's ; Se f
( ) ( )
s' <f s* ' s s*= ; Algoritmo 2.5 GRASPNovamente, são aqui inteiramente pertinentes algumas opções genéricas, nomeadamente em relação ao critério de paragem e à selecção apropriada de função objectivo, espaço de soluções e estrutura de vizinhança. A escolha da solução inicial é, neste caso, tratada explicitamente pelo algoritmo, sendo necessário definir e afinar apenas um parâmetro, relativo à composição da LRC:
§ adoptando uma restrição de valor, seleccionam-se todos os candidatos com um
valor que fique dentro de um limiar α(%) relativamente ao valor "greedy";
§ adoptando uma restrição de cardinalidade, seleccionam-se os β melhores candidatos.