QAP: Metodos construtivos, 2-opt, Busca tabu

667 visualizações

Publicada em

Problema quadrático de alocação (QAP): Métodos construtivos, Busca local 2-opt, Busca tabu.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

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

Nenhuma nota no slide

QAP: Metodos construtivos, 2-opt, Busca tabu

  1. 1. Problema quadrático de alocação (QAP) Métodos construtivos Busca local 2-opt Busca tabu Daniel Lemes Gribel daniel.gribel@uniriotec.br 18 de dezembro de 2013
  2. 2. Métodos construtivos Foram elaborados dois métodos construtivos gulosos, ambos orientados a construir uma solução de tal forma que o custo total seja mínimo. 1. FIA (Facilidade inicial arbitrária) 2. NFI (N facilidades iniciais)
  3. 3. Métodos construtivos Método 1: FIA (Facilidade inicial arbitrária) Algoritmo guloso que consiste em obter o menor custo total a cada atribuição de facilidade a um local, sendo que a atribuição da primeira facilidade a um local é arbitrária. 1. A facilidade 0 é alocada ao local 0. 2. Verifica-se dentre as facilidades disponíveis qual facilidade deveria ser escolhida para ser alocada ao próximo local i, de tal forma que o custo total seja mínimo. 3. Executa-se o passo 2 até a n-ésima facilidade, gerando uma permutação que corresponde à solução final.
  4. 4. Métodos construtivos Método 1: FIA (Facilidade inicial arbitrária) 1. (n-1) iterações 2. (n-2) iterações 3. (n-3) iterações 4. (n-4) iterações 5. (n-5) iterações … n-1.(n-(n-1)) iterações Complexidade: O((n² - n)/2) ⇒ O(n²)
  5. 5. Métodos construtivos Método 2: NFI (N facilidades iniciais) Este método é um aprimoramento da construção FIA. Ele consiste em n execuções do algoritmo FIA, atribuindo cada uma das n facilidades à facilidade inicial. 1. Executa-se o algoritmo FIA (com a facilidade i alocada ao local 0). 2. Armazena-se o custo da permutação pi 3. Repete-se os passos 1 e 2 atribuindo a facilidade i+1 ao local 0 até que todas as n facilidades sejam testadas como sendo a facilidade inicial no algoritmo FIA. 4. A iteração que gerar o menor custo é sempre armazenada e a solução final é então escolhida.
  6. 6. Métodos construtivos Método 2: NFI (N facilidades iniciais) 1. (n-1) iterações 2. (n-2) iterações 3. (n-3) iterações 4. (n-4) iterações 5. (n-5) iterações … n-1.(n-(n-1)) iterações n vezes Complexidade: O(n × (n² - n)/2) ⇒ O(n³)
  7. 7. Métodos construtivos Método 2: NFI (N facilidades iniciais) def initial_solution(distance, flow): n = int(math.sqrt(len(distance))) best_cost_final = 0 m_x = [] for q in range(0, n): m = [q] m2 = [q] j = 0
  8. 8. Métodos construtivos # here FIA starts while j < n-1: k = get_minor(m, n) m.append(k) m2 = copy(m) best_cost = cost(m, distance, flow) if j == 0: best_cost_final = best_cost for i in range(0, n): if i not in m: m2[len(m2)-1] = i c = cost(m2, distance, flow) if c < best_cost: m[len(m)-1] = i best_cost = c j = j + 1 # here FIA ends if best_cost < best_cost_final: best_cost_final = best_cost m_final = copy(m)
  9. 9. Busca local def iteration_2opt(p, dist, flow): 2-opt Nesse método, as facilidades são transpostas durante a execução do algoritmo. Se o número de facilidades e locais for n, então o número de transposições em cada iteração do algoritmo será (n²-n)/2. Inicialmente, o algoritmo considera a transposição das facilidades alocadas nos locais 0 e 1. Se o valor da função objetivo resultante para a solução for menor que o valor da solução inicial, então esta solução é armazenada como uma solução candidata para o futuro. Caso contrário, ela é descartada. O procedimento de transposições continua até que todas as trocas de pares sejam consideradas. best_solution = [] best_solution = copy(p) best_cost = cost(p, dist, flow) size = len(p) i = 0 for i in range(0, size-1): for j in range(i+1, size): posI = p.index(i) posJ = p.index(j) p[posI] = j p[posJ] = i current_cost = cost(p, dist, flow) if(current_cost < best_cost): best_solution = copy(p) best_cost = current_cost
  10. 10. Busca local 2-opt Effective heuristics and meta-heuristics for the quadratic assignment problem with tuned parameters and analytical comparisons. Mahdi Bashiri, Hossein Karimi
  11. 11. Busca Tabu A origem da palavra tabu remonta ao Tongan, um idioma da Polinésia. A palavra era utilizada pelos nativos da ilha Tonga para indicar objetos que não podiam ser tocados por serem sagrados. O nome deste método vem das listas tabu, que consistem em listas com soluções (movimentos) não permitidas. Na sua forma mais básica, contém os últimos elementos visitados. Outras listas podem conter soluções proibidas devido a, por exemplo, certos atributos da solução ou movimentos ilegais no contexto do problema.
  12. 12. Busca Tabu Movimentos Tabu: Ro-TS Exemplo Metaheuristics for Hard Optimization: Methods and Case Studies. Pag. 64. Johann Dréo, Alain Pétrowski, Patrick Siarry, Eric Taillard.
  13. 13. Busca Tabu Parâmetros void tabu_search(long n, // problem size type_matrix & a, // flows matrix type_matrix & b, // distance matrix type_vector & best_sol, // best solution found long & best_cost, // cost of best solution long min_size, // parameter 1: 0.9n long max_size, // parameter 2: 1.1n long aspiration, // parameter 3: 2n² long 1000000) // number of iterations Robust taboo search procedure for the quadratic assignment problem (c++ program). Eric Taillard
  14. 14. Busca Tabu Movimentos Tabu ★ Pequeno número de movimentos tabu ⇒ descoberta de ótimos locais ★ Pequeno número de movimentos tabu ⇒ repetição de soluções ★ Grande número de movimentos tabu ⇒ diminui possibilidade de repetições (confinamento) ⇒ aumenta possibilidade de visitar boas soluções ★ Grande número de movimentos tabu ⇒ diminui probabilidade de encontrar bons ótimos locais
  15. 15. Busca Tabu Pequeno número de movimentos tabu
  16. 16. Busca Tabu Grande número de movimentos tabu
  17. 17. Busca Tabu Duração tabu aleatória Para se obter o benefício simultâneo das vantagens oferecidas por um pequeno número de movimentos tabu (permite a exploração profunda de um vale) e por um grande número de movimentos tabu (permite pular de um vale para outro), uma possibilidade é modificar essa duração durante o processo de busca. Por exemplo, pode ser usado um valor aleatório entre um limite inferior e superior a cada iteração ou a cada n iterações. Estes limites podem ser identificados, inclusive podem ser aumentados ou diminuídos com base em certas características observadas durante a busca.
  18. 18. Busca Tabu Duração tabu aleatória // forbid reverse move for a fixed number of iterations if(min_size == max_size) { tabu_list[i_retained][p[j_retained]] = current_iteration + min_size; tabu_list[j_retained][p[i_retained]] = current_iteration + min_size; } // forbid reverse move for a random number of iterations else { tabu_list[i_retained][p[j_retained]] = current_iteration + unif(min_size,max_size); tabu_list[j_retained][p[i_retained]] = current_iteration + unif(min_size,max_size); } Robust taboo search procedure for the quadratic assignment problem (c++ program). Eric Taillard
  19. 19. Resultados Ajuste de parâmetros Duração da condição tabu
  20. 20. Busca Tabu Critério de aspiração Um movimento vai passar no critério de aspiração se: ★ for um movimento que leve à maior redução no custo da solução atual ★ o movimento levar as facilidades à locais em que ambos não tenham ocupado nas últimas t iterações
  21. 21. Busca Tabu Critério de aspiração Exemplo p = {3, 4, 2, 1, 5, 6} m = (2, 5): 4 → 5, 5 → 2 last_assignment(4, 5) = i2; last_assignment(5, 2) = i8 current_i = 22 2 < 22 - a ? 8 < 22 - a ? Qual valor atribuir ao parâmetro a? a grande ⇒ maior possibilidade de “libertar” movimento ⇒ aspiração aceita! a pequeno ⇒ menor possibilidade de “libertar” movimento (mais rígido) ⇒ aspiração negada!
  22. 22. Resultados Ajuste de parâmetros Critério de aspiração
  23. 23. Resultados
  24. 24. Resultados
  25. 25. Resultados NFI, 2-opt + Ro-TS
  26. 26. Referências QAPLIB - A Quadratic Assignment Problem Library. R .E. Burkard, E. Çela, S. E. Karisch, F. Rendl. http://www.seas.upenn.edu/qaplib/ Robust taboo search for the quadratic assignment problem. E. Taillard. Metaheuristics for Hard Optimization: Methods and Case Studies. Johann Dréo, Alain Pétrowski, Patrick Siarry, Eric Taillard. Robust taboo search procedure for the quadratic assignment problem (c++ program). http://mistic.heig-vd.ch/taillard/codes.dir/tabou_qap.cpp
  27. 27. Obrigado. https://github.com/danielgribel/qap

×