Comparison between heuristic algorithms for graph otimization

168 visualizações

Publicada em

Undergraduate course final dissertation

Publicada em: Ciências
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
168
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Comparison between heuristic algorithms for graph otimization

  1. 1. Universidade de São Paulo Instituto de Ciências Matemáticas de São Carlos Departamento de Ciências de Computação e Estatística Um Estudo das Técnicas Heurísticas Simulated Annealing e Tabu Search para a resolução de Problemas de Otimização Aluno: Ivan Jeukens Orientador: Prof. Dr. Jóse Francisco F. Ribeiro Monografia apresentada ao Departamento de Ciências de Computação e Estatística do ICMSC­USP, como parte dos requisitos para o Exame final da disciplina SCE­191­Projeto de Graduação
  2. 2. Junho 1998
  3. 3. 1  Introdução 1.1 Considerações iniciais Este trabalho procura estudar, de forma breve, métodos heurísticos para a solução de problemas de otimização combinatorial. Dentre inúmeras técnicas foram escolhidas duas: simulated annealing e tabu search. A primeira foi escolhida por ser uma técnica já bem estudada e importante, e a segunda por ser uma técnica nova e apresentar resultados acadêmicos favoráveis.  Este item descreve primeiramente alguns conceitos relacionados com otimização. Em seguida são apresentados três problemas utilizados neste trabalho como forma de testar e estudar as duas técnicas de otimização. 1.2 Otimização Um problema de otimização combinatorial é descrito por um par (Ω, fc), onde Ω representa o conjunto de todas as soluções para o problema e fc é uma função definida do conjunto de soluções para o conjunto de números reais não negativos. O número real associado a cada solução através de fc é denominado de custo. Para o dado problema, procura­se uma solução com o menor custo entre todas as soluções do conjunto Ω. Essa solução é denominada de ótimo global (não necessariamente único). Qualquer ótimo global apresenta a propriedade: fc(og) ≤ fc(s), og ∈ Ω e ∀s ∈ Ω. Devido   a   complexidade   computacional[]   associada   à   vários   problemas   de otimização, algoritmos exatos, ou seja, que obtêm um ótimo global para a dada instância do problema, são geralmente praticáveis apenas para instâncias de tamanho limitado, não encontrados   na   prática.   Dessa   forma,   é   necessário   pesquisar   por   algoritmos   que encontrem uma solução o mais próximo possível do ótimo com um tempo limitado, denominados de heurísticas.  Muitas heurísticas são baseadas no conceito de vizinhança de uma solução. Dada uma solução s, a vizinhança N(s, σ) dessa solução é constituída por todas as soluções que poder ser encontradas a partir de  s, utilizando  σ  como função de transformação. A definição da função  σ  irá depender de cada problema, e para um mesmo problema, poderemos ter várias funções σ. Com base no conceito de vizinhança, podemos definir um algoritmo relativamente simples, que obtêm uma solução com custo menor ou igual ao custo de uma solução inicial dada. Temos o pseudocódigo: Dada uma solução inicial s0;
  4. 4.             s := s0; Repita   Escolha uma sn ∈ N(s, σ)  tal que fc(sn) < fc(s);               Substitua s por sn; Até que fc(sn) > fc(s)  ∀sn ∈ N(s, σ);             Solução Final := s; O algoritmo acima sempre seleciona uma solução com custo menor que a atual. Isso faz com que o algoritmo seja facilmente “preso” em um ótimo local. Um ótimo local é a solução com o melhor custo em um porção limitada do conjunto de soluções. No caso acima, a porção é a vizinhança da solução atual. Uma forma de melhorar a qualidade da solução seria utilizar uma vizinhança maior. Entretanto, isso faria com que o algoritmo fosse degradando para uma busca por exaustão, tornando­o impraticável. A figura 1.1 apresenta uma ilustração típica do algoritmo acima: Figura 1.1 ­ Otimização Local Nota­se que caso a qualidade da solução final é determinada principalmente pela solução inicial. Se o algoritmo tiver a solução A como ponto inicial, o ótimo local B será encontrado pelo algoritmo. Se o algoritmo tiver a solução D como ponto inicial, um ótimo local de melhor qualidade será encontrado. Esse fato leva a propor que o algoritmo fosse executado com diferentes soluções iniciais. Entretanto, na prática isso dificilmente irá melhorar a qualidade da solução obtida, além de aumentar o tempo computacional.  Um ponto fundamental nas heurísticas a serem estudadas é que ambas apresentam métodos para efetuar hill climbing, ou seja, permitir que uma solução com custo pior que
  5. 5. a da atual seja aceita, com o intuito de escapar de ótimos locais. Isso deve ser feito de forma criteriosa, pois do contrário o algoritmo pode acabar “andando em círculos”. 1.3 Exemplos de problemas 1.3.1 Traveling Salesperson O problema do Traveling Salesperson (caixeiro viajante) constitui, em um dado grafo, encontrar uma seqüência de nós de menor custo. Nessa seqüência, cada nó deve aparecer uma única vez. Nesse trabalho, foi utilizado a versão simétrica do problema, ou seja, a distancia de um nó i para um nó j é igual a distancia do nó j para o nó i. Além disso,   como   modo   de   testar   os   algoritmos   utiliza­se   a   biblioteca   TSPLIB95[],   um conjunto de instancias para o problema TSP.    Para o problema TSP, a estrutura de vizinhança foi definida com base na transformação 2­opt proposta por Lin[]. Através dessa transformação, uma nova solução é gerada escolhendo­se aleatoriamente duas cidades da solução atual é invertendo­se a seqüência de cidades entre elas. Como a versão utilizada é a simétrica, podemos efetuar a variação do custo da solução e a transformação da solução de forma eficiente. Temos abaixo os respectivos pseudocódigos: custo_inversão(dist, sol, n1, n2) início   se n1 == número_de_cidades ­1 e n2 == 0 então      retorna 0;               se n1 == número_de_cidades ­ 1 então    n3 := 0;   senão    n3 := n1 + 1;   se n2 == 0 então    n4 := número_de_cidades ­ 1;   custo := dist[sol[n4]][sol[n2]] + dist[sol[n1]][sol[n3]] ­      dist[sol[n4]][sol[n1]] ­ dist[sol[n2]][sol[n3]];   retorna custo; fim inverte(sol, n1, n2) início   i := n1;   j := n2;
  6. 6.   enquanto i  j faça                 aux := sol[i];     sol[i] := sol[j];     sol[j] := aux;     i = i ­ 1;     j = j + 1;   fim fim Os números n1 e n2 são gerados de forma aleatória com probabilidade uniforme entre 0 e o número de cidades do problema ­ 1. Assume­se que o valor de n1 é maior que n2. Outra transformação considerada foi a troca de posição entre duas cidades, sem efetuar a inversão da seqüência entre as mesmas. Com base nessa transformação, foi criado um algoritmo greedy. Nessa algoritmo, uma cidade é colocada em cada posição da seqüência atual. A melhor posição para a cidade é registrada, e caso o custo da solução obtida com tal troca for melhor que a melhor solução encontrada até o momento, a troca é concretizada. Isso se repete para todas as cidades uma única vez. Temos o pseudocódigo: tsp_greedy(sol, dist) início   melhor_custo := custo_atual;   para i := 0 até número_de_cidades ­ 1 faça     melhor_posição := ­1;     para j := 0 até número_de_cidades ­ 1 faça       se i = j continue;       variação := custo_troca(dist, sol, j, i);       se custo_atual + variação < melhor_custo então        melhor_custo := custo_atual + variação;        melhor_posição := j;       j += 1;     fim     se melhor_posicão ≠ ­1 então      troca(sol, melhor_posição, i);      custo_atual := melhor_custo;     i += 1;   fim fim A figura 1.2 mostra a evolução do custo por iteração do algoritmo greedy para o problema lin105 (105 cidades). Nota­se que, conforme mencionado no item anterior, o custo é sempre descendente.
  7. 7. Figura 1.2 ­ Lin105 : solução greedy A tabela 1.1 Lista alguns resultados do mesmo algoritmo: Instancia Número de Cidades Custo Inicial Custo Final(Ótimo) Tempo(s)1 dantzig42 42 2977.8 1259.4 0.002 lin105 105 124483 44230.4 0.015 tsp255 255 40287 14089.8 0.082 att532 532 512377.4 144217.8 0.55 pcb1173 1173 1405734.2 421106.2 2.96 Tabela 1.1 ­ TSP: Otimização Local A partir dos dados da tabela 1.1 pode­se perceber que o algoritmo  greedy  é extremamente veloz, mas produz soluções com qualidade insatisfatória. A principal utilidade do algoritmo é que ele é utilizado por uma técnica que diminui o tempo computacional gasto pela heurística simulated anneling. 1  Todas as medidas desse trabalho foram feitas em um Pentium 200Mhz com 64Mbtyes utilizando o sistema operacional Linux K2.0.0 e o compilador C gcc com opção ­O3.
  8. 8. 1.3.2 Quadratic Assignment Problem O  Quadratic   Assignment   Problem(QAP)   constitui   em   minimizar   o   custo   da seguinte função: f  f = ∑ i=0 N−1 ∑ j=0 N−1 aij b f i f  j  ,onde   N   é   o   tamanho   do   problema.   As   soluções   são   todas   as   possíveis permutações φ do intervalo inteiro [0, N ­ 1]. A entrada para o problema são as matrizes A e B, onde a matriz A representa uma matriz de distância entre duas localidades i e j, e a matriz  B  representa uma matriz de fluxo entre duas localidades  i  e  j.Dessa forma, o problema QAP consiste em minimizar o produto de distância por fluxo. A versão do problema utilizada nesse trabalho foi a simétrica, ou seja, a matriz A é simétrica. A estrutura de vizinhança é determinada com base na transformação que efetua a troca de dois números da permutação. A variação do custo pode então ser determinada eficientemente como mostrado no pseudocódigo abaixo: custo_troca(sol, dimensão, A, B, numero1, m, n) início   variação_custo := 0;   para k := 0 até k < dimensão faça        se k != m e k != n então       variação_custo += (A[n][k] ­ A[m][k])*(B[sol[n]][sol[k]] ­ B[sol[m]][sol[k]]);     k += 1;   fim              variação_custo = ­2 * variação_custo; fim Similarmente ao problema TSP, um algoritmo greedy foi definido com base na estrutura de vizinhança descrita. Os resultados para algumas instâncias podem ser vistos na tabela 1.2. Instancia N Custo Inicial Custo Final(Ótimo) Tempo(s) chr15a 15 54663.2 17726(9869) 0.0006 chr25a 25 21367.2 7852(3796) 0.003 tai50 50 5911030 5284871.6 ([3854359, 4941410]2 ) 0.03 tai100 100 24099888.8 22140872.8 ([15824355,21125314]) 0.23 2  O ótimo esta no intervalo dado.
  9. 9. Tabela 1.2 ­ QAP: Otimização Local 1.3.3 Placement A entrada para o problema de placement é um hipergrafo onde cada nó deve ser associado a uma posição em um array bidimensional. Existem dois tipos de nós: os  internos(clbs) e os periféricos(input e output).  Os  nós  periféricos  só podem ser associados à posições contidas no retângulo que circula o array de posições, enquanto que os nós internos só podem ser associados à posições do array. As dimensões do array são limitadas pelo número de nós, dado por: tmp=⌈ numerodeclbs aspectratio ⌉ , tmp2=⌈ numerodeinputs numerodeoutputs 2∗ioratio∗1aspectratio  ⌉ , dy=MAX tmp ,tmp2 , dx=⌈dy∗aspectratio⌉ ,onde io_rat é uma constante que indica quantos nós periférios podem ocupar uma posição periférica e aspect_ratio é uma constante que determina a relação entre os lados do array. O valor 1 é utilizado nesse trabalho, ou seja, o array é um quadrado. A figura 1.3 ilustra os conceitos descritos até o momento.
  10. 10. Figura 1.3 ­ Um exemplo de instância do problema de placement Cada aresta do hipergrafo é denominada de net. O custo de uma solução é a soma do custo de cada net. O custo de uma net é calculado com base no semiperímetro do retângulo que contêm todos os nós da dada net. A estrutura de vizinhança é determinada escolhendo­se aleatoriamente um nó e uma posição, com base no tipo de nó. Se um nó já estiver nessa posição, uma troca é efetuada. Do contrário apenas o nó escolhido tem sua posição modificada. Da  mesma  forma com  que foram  definidos  algoritmos  greedy  para os   dois problemas anteriores, foi definido para esse problema. Nele, temos que um nó é escolhido e testado em todas as posições válidas para ele. Caso a variação do custo obtido com a melhor posição para o tal nó for menor que a melhor solução encontrada até o momento, a troca é concretizada. Isso é repetido para todos os nós do grafo. A tabela 1.3 mostra
  11. 11. alguns resultados e a figura 1.4 mostra o resultado obtido após a execução do algoritmo greedy para a mesma instância da figura 1.3. Instância Nós Int. Nós Perif. N° Nets Custo Ini. Custo Final. Tempo(s) i1 24 41 49 3.6390 2.0961 0.535 alu2a 135 16 145 22.9441 15.3015 1.78 C880a 131 86 191 29.756 17.607 2.0 cordic 498 25 521 145.52 82.731 7.0 exp5 1064 71 1072 425 231.1 25.6 Figura 1.4 ­ Instância i1 após a otimização local
  12. 12. O problema descrito aqui é um modelo para o problema de placement de circuitos do tipo reprogramável por memória ram. Nesse trabalho será utilizado como base uma ferramenta disponível ao público chamada de  Versatile Place and Route(VPR). Nela, uma das técnicas descritas adiante está implementada.
  13. 13. 2  Simulated Annealing Descreve­se   nesse   item   o   algoritmo   de   otimização  simulated   annealing. Inicialmente será apresentado a origem do algoritmo e suas características básicas. Em seguida,  será  descrito  de  forma   sucinta  as  várias   decisões  a  respeito  do  algoritmo conhecidas como cooling shecudule e uma técnica para diminuir o tempo computacional do   algoritmo   será   apresentada.   Finalmente,   resultados   experimentais   referentes   aos problemas propostos no item 1 serão relatados. 2.2 Características básicas O   algoritmo  simulated   annealing  foi   desenvolvido   independentemente   por Kirkpatrick et al. [] e Cerny[] no início da década de 80. Na sua forma original, ele é baseado na analogia entre a simulação do esfriamento de sólidos e a resolução de problemas de otimização combinatorial. A palavra annealing denota o processo físico onde um sólido é submetido à um banho térmico que eleva sua temperatura a um valor máximo, onde já no estado líquido, suas   moléculas   se   dispõem   randomicamente   no   material.   A   partir   desse   estado,   a temperatura do banho térmico é lentamente diminuída. Dessa forma, todas as partículas se   organizam  em  grupos   com  mínima  energia.  Entretanto,  para  que  isso  ocorra,  a diminuição da temperatura deve ser feita de forma apropriada. A cada temperatura, o sólido deve poder alcançar o equilíbrio térmico, que é caracterizado pela probabilidade dele estar em um estado de energia e dado pela distribuição de Boltzmann: P E=e= 1 Z T  .exp− e kb T  ,onde Z(T) é um fator de normalização, chamado de função de partição, que depende da temperatura T, e kb é a constante de Boltzmann. Conforme a temperatura é diminuída, a distribuição de Boltzmann se concentra em estados de menor energia, até que com a temperatura próxima de zero, apenas os estados de energia mínima possuem uma probabilidade diferente de zero de ocorrer. Com o intuito de simular o comportamento de um sólido evoluindo para o equilíbrio térmico a uma dada temperatura, Metropolis et al. [] propuseram o método de Monte Carlo. Este método gera uma seqüência de estados que eventualmente irão atingir o equilíbrio térmico. Um novo estado é determinado a partir do estado atual, que é caracterizado pelo posicionamento das partículas do sólido, provocando­se de forma aleatória uma pequena perturbação em uma partícula selecionada aleatoriamente. A diferença entre a energia do novo estado e do estado atual é determinada. Caso essa seja negativa, o novo estado é aceito, ou seja, ele passa a ser o estado atual. Caso contrário, a probabilidade do novo estado ser aceito é dado por:
  14. 14. exp− DE kb T   . Essa regra de aceitação é denominada de critério de Metropolis. O algoritmo desenvolvido por Metropolis pode ser utilizado na resolução de problemas de otimização combinatorial. Nesse caso, os vários estados do sólido representam soluções factíveis do problema de otimização. A temperatura é denominada de parâmetro de controle, a constante de Boltzmann não é utilizada e a energia do sistema é representada pela função de custo do problema de otimização. A tabela 2.1 lista a analogia entre os parâmetros do processo físico e do algoritmo de otimização. Processo Físico Otimização Combinatorial Estados do sólido Soluções factíveis Energia Custo Mudança de estado Solução vizinha Temperatura Parâmetro de controle Estado de “congelamento” Solução heurística Tabela 2.1 : Analogia O algoritmo simulated annealing pode então ser descrito como uma seqüência de execuções do algoritmo de Metropolis, com o parâmetro de controle sendo diminuindo a cada execução. Temos então, genericamente, o seguinte pseudocódigo para o algoritmo: PROCEDURE SA    início   Inicializações;   Iter := 0;   t := temperatura_inicial;   repita     repita       Perturbe(configuração_atual, ∆C);       Se o critério de Metropolis for satisfeito  então         Aceite a nova configuração;                 até estar próximo do equilíbrio;                   titer + 1 := f(titer);                 iter := iter + 1;   até criterio_de_parada = verdadeiro; fim.
  15. 15. Primeiramente   são   executadas   uma   série   de   inicializações   relacionadas   ao problema a ser resolvido, como a determinação de uma solução inicial aleatória, calculo do seu custo, etc. Em seguida determina­se o valor inicial do parâmetro de controle. O algoritmo constitui­se basicamente de dois nested loops. O loop interno corresponde ao algoritmo de Metropolis onde a solução atual é perturbada, a variação do valor da função de custo é calculado, e a solução é aceita ou rejeitada com base no critério de Metropolis. O critério de Metropolis é dado por: ∆C < 0 ou  rand0,1exp −DC t  ,onde ∆C é o custo da solução perturbada subtraído do custo da solução atual e rand(0,1) gera um número real no intervalo (0,1). Como já mencionado anteriormente, a constante de Boltzmann não é utilizada, pois a temperatura é apenas um parâmetro de controle, sem conotação física. A justificativa para a utilização desse critério. Uma vez que   a   solução   esteja   em   equilíbrio   térmico,   o  loop  interno   é   encerrado.   Então,   a temperatura é atualizada e todo o processo é repetido. Isso se dá até que um dado critério de parada seja alcançado.  É importante notar duas características do pseudocódigo acima. Primeiramente, ele descreve o algoritmo de forma genérica, ou seja, várias decisões como qual será a temperatura   inicial,   como   diminui­la,   quando   terminar   os  loops,   etc,   não   foram especificadas. Essas decisões são denominadas de  cooling schedule, e serão descritas posteriormente. Outra   característica   do   algoritmo   é   o   critério   de   Metropolis   que   aceita   não somente soluções que melhorem o custo da solução atual, mas também soluções que piorem o custo da solução atual. É dessa forma que o algoritmo pretende escapar de ótimos locais, tentando assim alcançar soluções com melhor qualidade. A figura 2.1 ilustra a execução do algoritmo para a mesma instância do problema TSP mostrado na figura 1.2. 
  16. 16. Figura 2.1 ­ Evolução do custo para o problema Lin105. Nota­se que o custo da solução é muito variável nas primeiras iterações, devido ao fato da temperatura ser relativamente alta e soluções de pior custo serem aceitas com maior   probabilidade.   Conforme   o   algoritmo   progride,   essa   probabilidade   diminui, fazendo com que a variação do custo seja menor. 2.3 Cooling schedule A   parte   fundamental   para   o   sucesso   da   heurística  simulated   annealing  é   a determinação dos parâmetros conhecidos como cooling schedule. Os parâmetros a serem determinados são: • valor da temperatura inicial; • função de diminuição da temperatura; • número de perturbações a cada temperatura; e • critério de parada. Existem dois tipos de  cooling schedule: estático e dinâmico. O tipo estático determina os parâmetros de forma imutável durante a execução do algoritmo. O tipo
  17. 17. dinâmico especifica os parâmetros com base em dados coletados durante a execução do algoritmo.  Abaixo   temos   a   descrição   dos   parâmetros   utilizados   nesse   trabalho   para   os problemas TSP e QAP. O problema de placement utiliza os parâmetros determinados em []. 2.3.1 A temperatura inicial Uma   regra   geral   para   determinação   da   temperatura   inicial   é   utilizar   uma temperatura em que praticamente todas as soluções de uma cadeia sejam aceitas. Alguns estudos determinaram que esse valor é maior ou igual ao desvio padrão dos custos sobre todas as soluções do espaço de soluções (σ∞). Como é impraticável determinar esse valor de   forma   exata,   uma   boa   aproximação   é   obtida   analisando­se   1000   soluções aleatoriamente[]. Para ambos os tipos de schedule a temperatura inicial será igual a σ∞. 2.3.2 A função de diminuição da temperatura O  schedule  estático, originário  em  [], utiliza  uma  função de  diminuição  da temperatura cujos parâmetros são determinados de forma fixa. O caso mais comum de função é dado por: tk = tini . αk O parâmetro α é geralmente 0.95.  Um valor menor para esse parâmetro faz com que a temperatura final seja mais rapidamente alcançada. Consequentemente o tempo de execução diminui a custo da qualidade da solução. O contrário ira acontecer com um valor maior para esse parâmetro, uma vez que a diminuição da temperatura é mais lenta  O schedule dinâmico utiliza a seguinte função: tk=tk−1.1 tk−1.ln1d  3sk−1 −1 ,onde σk­1 é o desvio padrão das soluções geradas na temperatura tk­1, e δ é uma constante com valor positivo e pequeno, geralmente 0.085[]. A derivação da equação acima pode ser encontrada em []. 2.3.3 O número de perturbações O   número   de   perturbações,   ou   soluções   a   serem   geradas   em   uma   dada temperatura, afeta diretamente a qualidade da solução obtida, bem como o tempo de execução.   Ele   também   está   diretamente   relacionado   com   a   função   de   redução   da
  18. 18. temperatura, uma vez que o mais rápido a temperatura é diminuída, maior terá que ser o número de soluções geradas para que o equilíbrio seja alcançado. Um   valor   que   foi   determinado   como   sendo   apropriado   para   o   número   de perturbações é |N(x, σ)|, ou seja, a cardinalidade do conjunto de soluções vizinhas de uma dada solução. Ambos os tipos de schedule utilizam essa regra. 2.3.4 Critério de parada A critério de parada é baseado no fato de que quando a melhora na qualidade da solução  é  sucessivamente  pequena,  o  algoritmo  deve  ser  interrompido.   O  schedule estático interrompe a execução do algoritmo quando três soluções sucessivas obtiverem o mesmo valor. Já o schedule dinâmico utiliza a seguinte expressão: s f 2 t f .m0−m f  q ,onde θ é uma constante pequena e positiva, geralmente 0.00001 e µk a média dos custos das soluções geradas na temperatura k. A derivação da equação acima pode ser encontrada em []. 2.4 Acelerando o algoritmo Um dos principais problemas da heurística simulated annealing é seu alto tempo de execução, comparado à outras heurísticas. Em [] e [] foi proposta uma técnica eficiente para reduzir o tempo gasto pela heurística. Em linhas gerais, o método constitui em inicialmente executar uma heurística do tipo otimização local para o problema dado. Em seguida, a partir da solução obtida pela heurística, uma temperatura é calculada com base no custo desse solução. Essa temperatura tenta aproximar a temperatura que o algoritmo annealing estaria com tal solução. Dessa forma, o algoritmo annealing seria executado com temperatura inicial e solução inicial dadas pela temperatura calculada e pela solução da primeira heurística. Essa técnica e denominada de  two­stage simulated annealing (TSSA). O principal ponto da técnica TSSA é o cálculo da temperatura relacionado à solução da primeira heurística. Uma temperatura muito alta faz com que muitas soluções com   custo   pior   sejam   aceitas,   e   consequentemente,   o   trabalho   feito   pela   primeira heurística seja perdido. Uma temperatura muito baixa faz com que o algoritmo não consiga escapar do ótimo local e a qualidade da solução não é comparável a do algoritmo annealing tradicional.
  19. 19. Descreve­se então o método, proposto por Varanelli em [], para efetuar o cálculo da temperatura da solução heurística de forma eficaz e independente do problema sob estudo. O Método de Varanelli Vários autores fizeram estudos a respeito do comportamento típico do algoritmo annealing. Todos os estudos concluíram que o custo esperado (Ek) e o desvio padrão (σk) das soluções geradas na temperatura k podem ser dados por: Ek »E¥ − s¥ 2 tk  , σk ≈ σ∞, ,onde E∞ é a média do custo de todas as soluções do espaço de soluções e σ∞ é o desvio padrão dessas soluções. Tais equações são válidas para todas as temperaturas exceto aquelas próximas do valor do ótimo global. Esses mesmos estudos concluíram que a distribuição do custo para todas as soluções pode ser aproximada pela distribuição normal. As equações acima poderiam ser utilizadas para calcular a temperatura da solução da primeira heurística caso esta correspondesse a uma solução em equilíbrio. Entretanto isso é praticamente impossível de ocorrer na prática, uma vez que a heurística inicial teria que se comportar como o algoritmo annealing. Assume­se então, que a solução obtida pela primeira heurística é a melhor solução encontrada (bsf) até uma dada temperatura(tk). Em [], Varanelli observou que a melhor forma para estudar o comportamento das soluções bsf é normalizar o valor da solução bsf em unidades de desvio padrão (σ∞) com relação ao custo estimado (E∞) de todas as soluções. Temos então as equações: bsf norm=  E¥ −bsf  s¥ , tnorm= tk t0 , onde t0  é a temperatura inicial do algoritmo  annealing. A figura 2.2 mostra o comportamento do custo bsf normalizado com relação ao custo esperado.
  20. 20. Figura 2.2 ­ Custo Esperado vs. Custo Bsf (lin318) Pode­se observar que a curva do custo bsf está deslocada à direita da curva do custo esperado. Isso mostra que o custo esperado é algumas unidades de desvio padrão maior que o custo bsf. Para obtermos um valor correto para a temperatura temos então que calcular esse deslocamento(γ∞). A partir desse valor, podemos calcular a temperatura da solução por: tbsf » s¥ 2 E¥ −bsf −g¥ s¥ . Em   [],   Varanelli   demonstra   que   o   desvio  γ∞  pode   ser   calculado   de   forma probabilística, utilizando­se a seguinte equação: P[E∞ ­ γ∞σ∞ < X < E∞ + γ∞σ∞] ≈ 1 ­ |número_de_perturbações|­1 . Temos   então,   um   método   eficaz   para   calcular   a   temperatura   da   solução   da primeira heurística, independentemente do problema sendo resolvido. 2.5 Resultados experimentais
  21. 21. Abaixo   temos   alguns   resultados   experimentas   referentes   aos   três   problemas propostos no item 1 desse texto. 2.5.1 TSP Instância Custo Final Tempo(s) Acima do Ótimo dantzig42 709.8 0.356 0.015% brazil58 25411 0.973 0.0006% kroA100 21568.2 3.147 0.01% lin105 14556.2 3.477 0.01% d198 15939.6 16.68 0.01% tsp225 4012.4 21.06 0.02% rd400 15633.8 92.83 0.02% Tabela 2.1 ­ Schedule estático sem a técnica TSSA Instância Custo Final Tempo(s) Acima do Ótimo dantzig42 702.8 1.436 0.005% brazil58 25492.2 4.055 0.003% kroA100 21460.2 18.48 0.008% lin105 14444.8 21.77 0.004% d198 15891.4 147.8 0.007% tsp225 3947.4 188.5 0.009% rd400 15552 1004 0.01% Tabela 2.2 ­ Schedule dinânmico sem a técnica TSSA Instância Custo Final Tempo(s) Acima do Ótimo dantzig42 701.6 0.2772 brazil58 25502.8 0.7450 kroA100 21610 2.193 lin105 14546.2 2.400 d198 16021.6 11.08 tsp225 3976.8 12.57 rd400 15773.6 54.14 Tabela 2.3 ­ Schedule estático com a técnica TSSA 2.5.2 QAP Instância Custo Final Tempo(s) 15086 0.046339 4914.8 0.145339 3721.6 0.012613 6350.6 0.065133
  22. 22. 3248142.8 0.415824 5115602.8 0.468601 12160787.2 2.768244 21578483.2 7.613026 Instância Custo Final Tempo(s) 15243.5 0.140428 5141.2 0.315190 3721 0.105598 6924.8 0.216762 3239803.2 0.532601 5094001.6 1.403622 12184668.4 3.783508 21615316 9.243220 2.5.3 Placement Instância Custo Final Tempo(s)
  23. 23. 3  Tabu Search
  24. 24. 4  Referências Bibliográficas []  E. H. L. Aarts e P. J. M. van Laarhoven, “A New Polynomial­Time Cooling Schedule”, Proc. IEEE ICCAD­85, Santa Clara, CA, 206­208, 1985. []  V. Benz e J. Rose,”VPR: A New Packing, Placement and Routing Tool for FPGA Research”, International Workshop on Field Programmable Logic, 1997. [] V. Cerny, “Thermodynamical Approach to the Traveling Salesman Problem: An Efficient Simulation Algorithm”, J. Optimization Th. and Appl., vol. 45, 41­51, 1985. []  M. R. Garey e D. S. Johnson, “Computers and Intractability: A Guide to the Theory of NP­Completeness”, W. H. Freeman and Co., San Francisco, CA, 1979. []  L. K. Grover, “Standard Cell Placement Using Simulated Sintering”, Proc. 24th ACM/IEEE DAC, Miami Beach, Fl, 56­59, 1987. []  S. Kirkpatrick, C. D. Gelatt, e M. P. Vecchi. “Optimization by Simulated Annealing”. Science, vol. 220, 45­54, 1983. []  S. Lin, “Computer Solutions of the Traveling Salesman Problem”, Bell System Tech. J., vol. 44, 2245­2269, 1965. []  C. R. Reeves, “Modern Heuristic Techniques for Combinatorial Problems”, John Wiley & Sons Inc, 1993. []  G. Reinelt, “TSPLIB 95”, Universität Heidelberg. []  F. Romeo e A. Sangiovanni­Vicentelli, “A Theoretical Framework for Simulated Annealing”, Algorithmica, vol. 6, 302­345, 1991. []  J. S. Rose, W. M. Snelgrove, e Z. G. Vranesic, “Parallel Standard Cell Placement with Quality Equivalent to Simulated Annealing”, IEEE Trans. CADICS, vol. 7, 387­396, 1988. []  J. M. Varanelli, “On the Acceleration of Simulated Annealing”, PhD Dissertation, University of Virginia, 1996.

×