Heuristicas e metaheuristicas
description
Transcript of Heuristicas e metaheuristicas
Heurís'cas e Metaheurís'cas Thiago F. Noronha
Apresentação do curso
Belo Horizonte, 2012
Heurís'cas e Metaheurís'cas
• Professor do departamento de Ciência da computação da UFMG • Áreas de pesquisa:
– Projeto de algoritmos para problemas de o'mização combinatória
ICEx, sala 4049, email: [email protected]
Belo Horizonte, 2012
OBJETIVOS
Este curso visa apresentar técnicas fundamentais e avançadas para a construção de heurís'cas eficientes para problemas de o'mização, que surgem em diversas áreas do conhecimento.
Heurís'cas e Metaheurís'cas
Heurísticas e Metaheurísticas
PROBLEMAS DE OTIMIZAÇÃO
• Muitos problemas consistem na busca da melhor configuração de um conjunto de variáveis para obter certos objeFvos.
• As variáveis podem ser discretas ou conHnuas. • Dentre os problemas que podem ser modelados com variáveis discretas encontram-‐se os problemas de oFmização combinatória.
• O conjunto de todas as possíveis atribuições de valores às variáveis do problema é chamado de espaço de busca.
Heurís'cas e Metaheurís'cas
HeurísFcas e MetaheurísFcas
PROBLEMAS DE OTIMIZAÇÃO
• Exemplos de aplicações em computação: • Compiladores • Banco de dados • Redes de computadores • Engenharia de soTware • Biologia computacional • Visão computacional • Projetos de circuitos integrados • Ajuste de parâmetros de algoritmos
• Além de uma infinidade de outras aplicações em todas as áreas da engenharia.
Heurís'cas e Metaheurís'cas
HeurísFcas e MetaheurísFcas
HEURÍSTICAS
• Muitas vezes, não é possível resolver o problema de oFmização de forma exata. • O problema é muito diYcil de se modelar. • O problema não tem solução polinomial. • Os recursos (e.x.memória e CPU) são limitados. • A quanFdade de dados a serem processados é muito grande.
• Os algoritmos heurísFcos fornecem uma solução viável para o problema, mas não garantem que ela seja óFma.
Heurís'cas e Metaheurís'cas
HeurísFcas e MetaheurísFcas
EMENTA
• Complexidade de algoritmos e de problemas.
• Heurís'cas: – HeurísFcas ConstruFvas gulosas; – Algoritmos AproximaFvos; – HeurísFcas de Transformação (ou Redução); – HeurísFcas de Arredondamento Aleatorizado;
• Vizinhanças e espaço de busca • Heurís'cas de busca
• Metaheurís'cas
• Pesquisa cienTfica no desenvolvimento de heurís'cas.
HEURÍSTICAS Heurís'cas e Metaheurís'cas
HeurísFcas e MetaheurísFcas
AVALIAÇÃO
• TR -‐ Resumo de arFgos e capítulos de livros (10 pontos) – Sobre técnicas de construção de heurísFcas
• TA -‐ Apresentação de um arFgo (10 pontos) – Sobre alguma aplicação de heurísFcas em computação ou engenharia
• TI -‐ Trabalhos de implementação (30 pontos) – Três trabalhos de implementação valendo 10 pontos cada
• TP -‐ Pesquisa sobre heurísFcas para um problema de oFmização (50 pontos)
– Formalização do problema – Pesquisa bibliográfica sobre heurísFcas para o problema – Implementação de uma heurísFca para o problema – Implementação da sua heurísFca para o problema – Realização de experimentos computacionais – Redação de um relatório técnico experimental (arFgo)
Heurís'cas e Metaheurís'cas
Avaliação
HeurísFcas e MetaheurísFcas
PRÉ-REQUISITOS
• Obrigatórios: • AEDS II (DCC 004)
• Desejáveis: • Gostar de programar
– Preferencialmente em C/C++; • AEDS III (DCC 005) • Pesquisa Operacional (DCC 035)
Heurís'cas e Metaheurís'cas
Pré-‐Requisitos
HeurísFcas e MetaheurísFcas
BIBLIOGRAFIA
• Introduc'on to Algorithms • Cormen, Leiserson, Rivest, e Stein
• Local Search in Combinatorial Op'miza'on • Aarts e Lenstra
• Stochas'c Local Search: Founda'ons and Applica'ons • Hoos e Stützle
• Metaheuris'cs: from Design to Implementa'on • Talbi
Heurís'cas e Metaheurís'cas
Bibliografia
HeurísFcas e MetaheurísFcas
BIBLIOGRAFIA
• Algorithms • Sedgewick
• Search Methods • Burke e Kendall
• Handbook of Metaheuris'cs • Glover e Kochenberger
• Tabu Search • Glover e Laguna
• Outros livros e ar'gos
Heurís'cas e Metaheurís'cas
Bibliografia
HeurísFcas e MetaheurísFcas
PRÉ-REQUISITOS
• Obrigado Dario Aloise e Laura Bahiense por terem me cedido vários dos slides que uso a seguir.
Heurís'cas e Metaheurís'cas
Agradecimentos
HeurísFcas e MetaheurísFcas
Heurís'cas e Metaheurís'cas Thiago F. Noronha
Revisão de Teoria da Complexidade
Belo Horizonte, 2012
• Um algoritmo é uma sequência finita de instruções não ambíguas que podem ser executadas em um computador para se resolver algum problema.
• HeurísFcas são algoritmos que nem sempre retornam a resposta (solução) exata para o problema que elas tratam.
Heurís'cas e Metaheurís'cas
Introdução
• Um algoritmo é uma seqüência finita de instruções não ambíguas que podem ser executadas em um computador para se resolver algum problema.
• HeurísFcas são algoritmos que nem sempre retornam a resposta (solução) exata para o problema que elas tratam. – Entretanto, espera-‐se que a resposta seja próxima da solução exata do problema.
Heurís'cas e Metaheurís'cas
Introdução
• Um algoritmo é uma seqüência finita de instruções não ambíguas que podem ser executadas em um computador para se resolver algum problema.
• HeurísFcas são algoritmos que nem sempre retornam a resposta (solução) exata para o problema que elas tratam. – Entretanto, espera-‐se que a resposta seja próxima da solução exata do problema.
• UFlizamos heurísFcas em vários casos – Quando o tempo gasto pelo melhor algoritmo que existe para o problema é maior que
o disponível. – Quando a quanFdade de memória necessária para se resolver o problema é maior que
a quanFdade de memória disponível. – Quando não se sabe como resolver o problema de forma exata.
Heurís'cas e Metaheurís'cas
Introdução
• Estuda a complexidade inerente aos problemas computacionais e aos algoritmos que resolvem estes problemas.
• Complexidade de Algoritmos – Quais são os requisitos de tempo e de memória de um determinado
algoritmo em função do tamanho da entrada?
• Complexidade de problemas – Qual é a complexidade do algoritmo de menor complexidade que
resolve o problema?
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• InserFonSort
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• InserFonSort
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• QuickSort
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• Complexidade Polinomial – A complexidade de um algoritmo ou de um problema é dita polinomial
se ela é limitada por um polinômio. – Exemplo: O(n), O(n.logn), O(n3), O(n100)
• Complexidade Exponencial – A complexidade de um algoritmo ou de um problema é dita
exponencial, se ela cresce de acordo com uma função exponencial. – Exemplo: O(2n) , O(n!), O(nn)
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• Como provar a complexidade de um problema? – A complexidade de um algoritmo que resolve o problema nos dá um
limite superior para a complexidade do problema. • Problema da envoltória convexa
• Resolvido em O(n2) pelo algoritmo incremental • Resolvido em O(n.logn) pelo algoritmo de Graham. • Dá para fazer melhor?
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• Como provar a complexidade de um problema? – Limites inferiores para a complexidade de um problema X são
geralmente calculados; – Analisando-‐se caracterísFcas estruturais de X, ou por redução
(transformação) de um outro problema para X; – O problema de se calcular a envoltória convexa é Ω(n), já que todos
os n pontos tem que ser carregados na memória. – Ou seja, a complexidade do problema é maior ou igual a n e menor ou
igual a n.log.n.
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• Como provar a complexidade de um problema? – Vamos provar que a complexidade de se calcular a envoltória
convexa de um conjunto de pontos é maior ou igual a complexidade de se ordenar um conjunto de pontos.
– Pode-‐se ordenar qualquer conjunto de números usando o seguinte algoritmo:
• Transforme o problema de ordenação em um problema de E.C.. O(n) P = {(a, a2), (b, b2), (c, c2), ..., (z, z2)}
• Resolva o problema resultante com o algoritmo de Graham. O(n.log n) • Percorra todos os pontos no polígono resultante e idenFfique o ponto com
menor coordena no eixo das Abscissas (eixo X). O(n) • A parFr deste ponto, percorra novamente todos os pontos no polígono e
imprima sua coordenada X. O(n) • A complexidade deste algoritmo é
T(n) = O(n) + O(n.log n) + O(n) + O(n) = O(n.log n)
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• Como provar a complexidade de um problema? – Está provado que a complexidade do problema de ordenação é Ω(n.log n).
– Se a complexidade de se calcular envoltória convexa de um conjunto de pontos fosse O(n), poderíamos ordenar um conjunto de pontos em O(n).
– Como já está provado que isto é impossível, a complexidade se calcular a envoltória convexo de um conjunto de pontos é pelo menos Ω(n.log n).
Heurís'cas e Metaheurís'cas
Teoria da Complexidade
• Tipos de problemas computacionais – Problemas de Decisão – Problemas de Localização (ou de Busca) – Problemas de OFmização
• Classe de problemas computacionais – Classe NP de problemas – Classe P de problemas – Classe NPC (ou NP-‐Completo) de problemas
Heurís'cas e Metaheurís'cas
Tipos de problemas
• Dado um conjunto P de pontos turísFcos no Rio de Janeiro, existe um percurso turísFco que passa por todos os pontos em P em um único dia?
• Resposta: Sim ou Não.
Heurís'cas e Metaheurís'cas
Problemas de Decisão
• Problema da Sa'sfabilidade (SAT) – Dada uma expressão booleana E, existe uma atribuição de valores
(verdadeiro ou falso) para as variáveis desta expressão tal que ela seja avaliada como verdadeira?
– x1 = V, x2 = F, x3 = F, x4 = V – Muito importante na verificação de circuitos digitais
Heurís'cas e Metaheurís'cas
Problemas de Decisão
X XOR Y = (X & ~Y ) + (~X & Y)
• Dado um conjunto P de pontos turísFcos no Rio de Janeiro, encontre um percurso turísFco de um único dia que passa por todos os pontos em P.
• Resposta: Percurso turís@co.
Heurís'cas e Metaheurís'cas
Problemas de Localização
• Problema de confecção de tabelas para campeonatos esporFvos
Heurís'cas e Metaheurís'cas
Problemas de Localização
• Dado um conjunto P de pontos turísFcos no Rio de Janeiro, qual é percurso que passa por todos os pontos em P na menor quanFdade de tempo possível.
• Resposta: Percurso turís@co (o mais rápido).
Heurís'cas e Metaheurís'cas
Problemas de O'mização
Árvore geradora mínima (AGM): Teorema de Caley: Entrada:
1
2 2 3
1
1
Heurís'cas e Metaheurís'cas
Problemas de O'mização
Problema do Caixeiro viajante (PCV): Dado um grafo com custos associados às arestas: encontrar um ciclo hamiltoniano de comprimento mínimo.
(5 1)!2−
Heurís'cas e Metaheurís'cas
Problemas de O'mização
• Problemas de decisão – Pergunta: “existe uma determinada estrutura saFsfazendo certa
propriedade?” – Resposta: “sim” ou “não”.
• Problemas de localização – Pergunta: “existe uma determinada estrutura saFsfazendo certa
propriedade?” – Resposta: “a estrutura” (se houver).
• Problemas de oFmização – Pergunta: “dentre todas as estruturas saFsfazendo determinada
propriedade, qual é aquela que oFmiza (minimiza ou maximiza) certa função de custo?”
– Resposta: uma estrutura “óFma”.
Heurís'cas e Metaheurís'cas
Tipos de Problemas (Resumo)
• A teoria da complexidade concentra-‐se nos problemas de decisão.
• As propriedades que são válidas para os problemas de decisão também são válidas para as versões de oFmização do mesmo problema.
• Classe de problemas mais importantes para nós são: – Classe NP de problemas – Classe P de problemas – Classe NPC (ou NP-‐Completo) de problemas
Heurís'cas e Metaheurís'cas
Classes de problemas
• Problemas que podem ser resolvidos em tempo polinomial em máquinas de Turing não determinísFcas. – A máquina de Turing é um modelo teórico de um
computador que pode simular a lógica de qualquer algoritmo.
• Quando a resposta do problema é sim, pode-‐se apresentar um cer@ficado para esta resposta, que por sua vez pode ser verificado em tempo polinomial.
• Nenhuma condição é estabelecida para o caso da resposta ser não. • Classe dos problemas cuja viabilidade de uma solução pode ser verificada em
tempo polinomial.
Heurís'cas e Metaheurís'cas
Classe NP (Nondeterminis'c Polynomial-‐'me)
• Problema que podem ser resolvidos em tempo polinomial em máquinas de Turing determinísFcas.
• P é um subconjunto da classe NP. • Exemplos de problemas da classe P:
– Ordenação; – Caminhos mais curtos em um grafo; – Árvore geradora de peso mínimo; – Fluxo máximo (corte mínimo); – Programação linear.
• Todos problemas em NP podem ser resolvidos em tempo polinomial? – P = NP?
Heurís'cas e Metaheurís'cas
Classe P (Determinis'c Polynomial-‐'me)
• Transformação polinomial – um problema de decisão A transforma-‐se polinomialmente em outro
problema de decisão B se: • dada qualquer entrada IA para o problema A, pode-‐se construir uma entrada IB
para o problema B em tempo polinomial, de tal forma que • IA é uma instância “sim” para A se e somente se IB é uma instância “sim” para B.
• Primeiro problema NP-‐Completo – Em 1971, Stephen Cook provou que todos os problemas em NP podem
ser reduzidos (transformados) ao Problema da SaFsfabilidade (SAT) em tempo polinomial.
Heurís'cas e Metaheurís'cas
Classe NPC (NP-‐Complete)
• Conseqüência – Se exisFr uma algoritmo polinomial ALG para SAT, existe um algoritmo
polinomial para qualquer problema de decisão D ∈ NP. • Transforme D em SAT. O(nk). • Resolva o problema SAT resultante com o algoritmo ALG. O(nd) • Se a resposta do SAT for sim, responda sim para D. O(1) • A complexidade deste algoritmo é T(n) = O(nk) + O(nd) + O(1) = O(nmax(k,d)).
• Até hoje, ninguém conseguiu projetar um algoritmo polinomial para SAT.
Heurís'cas e Metaheurís'cas
Classes NPC (NP-‐Complete)
• Na busca de algoritmos polinomiais para SAT, diversos autores propuseram a transformações polinomiais de SAT para outros problemas. – 3-‐SAT, Clique, ect.
• Classe NPC (NP-‐Complete): um problema de decisão D ∈ NP é dito NP ̶ Completo quando qualquer outro problema de
NP pode ser transformado polinomialmente em D.
– Conseqüência forte: se exisFr um algoritmo polinomial para a resolução de algum problema NP ̶ completo, então todos os problemas da classe NP também poderão ser resolvidos em tempo polinomial;
– Até hoje, ninguém conseguiu projetar um algoritmo polinomial para nenhum problema em NPC.
Heurís'cas e Metaheurís'cas
Classe NPC (NP-‐Complete)
• Classe dos problemas NP ̶ árduos ou NP ̶ dihceis: – Problemas nos quais qualquer problema em NP pode ser transformado, mas estes por sua vez não estão em NP.
– Problemas de oFmização cujo problema de decisão associado é NP ̶ completo.
• Diversos problemas com grande importância práFca e teórica enquadram-‐se nesta classe de problemas.
Heurís'cas e Metaheurís'cas
Classe NPH (NP-‐Hard)
• Como tratar na práFca os problemas NP ̶ diYceis? – Algoritmos pseudo-‐polinomiais
• Problema da Mochila
– IdenFficação de casos parFculares polinomiais. • Coloração de Grafos
– Métodos exatos de enumeração implícita • complexidade exponencial no pior caso • B&B, B&C, B&P, etc.
– Algoritmos aproximaFvos • Algoritmos polinomiais que não garantem a solução óFma do problema,
mas garantem um desvio máximo entre o custo solução retornada e o custo da solução óFma. • Algoritmo de Christofides para TSP: 1.5-‐aproximaFvo.
– HeurísFcas/MetaheurísFcas • Realizam uma busca no espaço de soluções e armazenam a melhor solução encontrada. • Não dão garanFa de custo da solução retornada, mas • através de experimentos computacionais pode-‐se mostrar que o custo da solução retornada é
próximo do custo da solução óFmo (e.g. até 10%).
Heurís'cas e Metaheurís'cas
Classe NPH (NP-‐Hard)
Heurís'cas e Metaheurís'cas Thiago F. Noronha
Heurís'cas Constru'vas
Belo Horizonte, 2012
Heurís'cas Definição
HeurísFcas são algoritmos que em um curto período de tempo
conseguem encontrar soluções viáveis, sem garanFa oFmalidade.
Heurísticas e Metaheurísticas
Heurís'cas Classes
• HeurísFcas ConstruFvas: – Algoritmos AproximaFvos* – HeurísFcas Gulosas – HeurísFcas de Transformação (ou Redução) – HeurísFcas de Arredondamento Aleatorizado
Heurísticas e Metaheurísticas
Heurís'cas HeurísFcas construFvas
• Dada uma instância de um problema de oFmização, as heurís'cas constru'vas constroem uma solução viável para o problema, onde: – Somente a viabilidade da solução é garanFda. – A princípio, nenhuma propriedade relacionada a qualidade da solução
construída é exigida.
• Entretanto, espera-‐se que esta heurísFca seja projetada de forma a almejar soluções cujo custo seja próximo ao custo da solução óFma para o problema.
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos • Dada uma instância de um problema de oFmização, os
algoritmos aproxima'vos constroem uma solução viável para o problema.
• Neste caso, pode-‐se provar que a qualidade da solução não é pior que um certo fator є do valor da solução óFma.
• Por exemplo, para є = 2, um algoritmo é 2-‐aproximaFvo, se o valor da solução produzida é no pior caso duas vezes pior que o valor da solução óFma.
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema do Caixeiro Viajante
• HeurísFca da Árvore Geradora Mínima Dupla – Calcule a Árvore Geradora Mínima (AGM) do grafo.
D
A
C
E
B
13 7
12
12
9
9 8
11 10 4
Heurísticas e Metaheurísticas
• HeurísFca da Árvore Geradora Mínima Dupla – Calcule a Árvore Geradora Mínima (AGM) do grafo. – Duplique as arestas da AGM e calcule um circuito euleriano no grafo
resultante.
E
D
A
C
B
7
9 8
4
D
A
C
B
7
9 8
4
E 8
9 7 4
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema do Caixeiro Viajante
• HeurísFca da Árvore Geradora Mínima Dupla – Calcule a Árvore Geradora Mínima (AGM) do grafo. – Duplique as arestas da AGM e calcule um circuito euleriano no grafo
resultante. – Construa um circuito euleriano, executando uma busca em
profundidade parFndo de qualquer vérFce, guardando em uma lista todos os vérFces que são visitados.
(A, C, D, B, D, E, D, C, A)
D
A
C
B
7
9 8
4
E 8
9 7 4
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema do Caixeiro Viajante
• HeurísFca da Árvore Geradora Mínima Dupla – Calcule a árvore geradora mínima do grafo. – Duplique as arestas da AGM e calcule um circuito euleriano no grafo
resultante. – Construa um circuito euleriano, executando uma busca em
profundidade parFndo de qualquer vérFce, guardando em uma lista todos os vérFces que são visitados.
– Percorra a lista de vérFces visitados eliminando os vérFces repeFdos, formando um Circuito Hamiltoniano.
E
D
A
C
B (A, C, D, B, D, E, D, C, A) (A, C, D, B, E, A)
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema do Caixeiro Viajante
Algoritmos Aproxima'vos Problema do Caixeiro Viajante
• A heurísFca da Árvore Geradora Mínima Dupla é 2-‐aproximado.
• Prova: – Sejam
• H* o ciclo hamiltoniano óFmo, • T* a árvore geradora mínima do grafo e • H a solução retornada pela heurísFca da árvore geradora mínima dupla.
– Temos que • custo(T*) ≤ H* e • custo(H) ≤ 2.custo(T*),
– Sendo assim • custo(H) ≤ 2.custo(H*)
Heurísticas e Metaheurísticas
• Dado um conjunto de itens (i1,i2,i3, ...im) com diferente volumes (v1, v2,v3, ..., vm) que devem ser empacotados em um número finito de Caixas (c1, c2, ...,cn) de capacidade V igual a 1 de forma a minimizar o número de caixa uFlizadas.
• O Problema de Bin Packing é NP -‐ DiYcil.
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
Heurísticas e Metaheurísticas
0.5 0.7 0.5 0.2 0.4 0.2 0.5 0.1 0.6 0.6
0.1 0.5 0.4 0.2
0.7
0.2 0.5 0.5
…… 1
Conjunto de itens
Caixas de capacidade 1
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
0.5 0.7 0.5 0.2 0.4 0.2 0.5 0.1 0.6
….… 1
0.1
0.5
0.4
0.6
0.2 0.7
0.2
0.5
0.5 N0 = 4
Solução ótima:
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.5
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.5 0.7
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.5 0.7
0.5
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.5 0.7
0.5 0.2
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.5 0.7
0.5 0.2
0.4
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.5 0.7
0.5 0.2
0.4
0.6
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.5 0.7
0.5 0.2
0.4 0.5
0.6
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.6
0.5 0.7
0.5 0.2
0.4 0.5
0.1
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• HeurísFca First-‐fit (FF) – Os itens são processados em ordem arbitrária. – Para cada item é verificado se existe uma caixa para acomoda-‐lo. – Se não exisFr, uma nova caixa é criada e o item inserido.
0.5 0.7
0.5 0.2
0.4
0.2
0.5
0.6
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
Heurísticas e Metaheurísticas
0.1
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
• A heurísFca da FF é 2-‐aproximada. – No máximo uma caixa com menos da metade da capacidade. – Só abre uma nova caixa se todas as caixas estão mais do que V/2 cheias
ou se chegar um item com volume maior que V/2. – Dado B caixas, pelo menos B-‐1 caixas estão mais da metade cheias.
– Um limite inferior para o número óFmo de caixas é
– Assim, temos que B -‐ 1 < 2*OPT e portanto B ≤ 2*OPT.
• A heurísFca da FF é (1.7*OPT + 2)-‐aproximada. • A heurísFca da FFD é (1.23*OPT + 1)-‐aproximada.
Heurísticas e Metaheurísticas
Algoritmos Aproxima'vos Problema de Bin Packing 1-‐D
Heurís'cas Gulosas
• Técnica mais simples e mais uFlizada – para se projetar uma heurísFca construFva para um problema de
oFmização.
• Parte de uma solução parcial (e.g. Vazia) • Adiciona (ou remove) sequencialmente elementos a solução
através de algum critério (função de avaliação) guloso: – Trata-‐se de um algoritmo míope, pois avalia somente um elemento da
solução de cada vez.
• Ao final, é gerada uma solução viável. – Algoritmos gulosos encontram soluções óFmas para diversos problema
de oFmização.
Heurísticas e Metaheurísticas
Heurís'cas Gulosas Exemplo
Alg HeurísFcaConstruFva(f(x), s): 1. s = Ø; 2. Inicializa a lista de elementos candidatos C; 3. Enquanto (C ≠ Ø) faça: 4. x = melhor{f(x) | x є C}; 5. s = s U {x}; 6. Remove x da lista de candidatos C; 7. Fim enquanto; 8. Retorne s;
Heurísticas e Metaheurísticas
Heurís'cas Gulosas Problema do Caixeiro Viajante
• TSP, do inglês Traveling Salesperson Problem. • Dado um grafo G=(V, E) com custos ce associados às arestas em E. • O TSP consiste em encontrar um ciclo hamiltoniano de comprimento mínimo.
Heurísticas e Metaheurísticas
5
6
12
4
1 3
2 7
5
8
2
3
1 1
Heurís'cas Gulosas HeurísFca Vizinho mais próximo para TSP
Escolha um vérFce inicial
Enquanto houver vérFce não-‐visitado efetue: • Selecione vérFce não-‐visitado mais próximo de uma das extremidades •
• Se é a aresta entre as extremidades de então:
Retorne ciclo de peso
Observações: " Complexidade: O(n2); " Grande influência do vérFce
inicial; " Aplicar a parFr de cada nó: O(n3).
V=18
4
1 3
2
5
7
5
1
2
3
4
3
2
1
2 2
3 3
1
Heurís'cas Gulosas HeurísFca Vizinho mais próximo para TSP
• Pode não gerar soluções Viáveis
5
4 3
2
1
2
1
1
1
1
2 2
2 2 M
Heurísticas e Metaheurísticas
Heurís'cas Gulosas HeurísFca Vizinho mais próximo para TSP
• Pode soluções arbitrariamente ruins.
Redução
• Uma redução é uma transformação de um problema em outro.
• O problema A é reduHvel ao problema B se existe uma maneira de transformar uma solução para B numa solução para A
• Algoritmo de redução – Para construir um algoritmo para o problema A, – Transforma-‐se o problema A em um problema B
• de forma exata ou heurísFca,
– Resolve B com com algum algoritmo • exato ou heurísFco),
– Constrói uma solução viável para A a parFr da solução gerada para B.
Heurísticas e Metaheurísticas
Redução Polinomial
• SorFng à Convex Hull • Subset Sum à Knapsack • Shortest Path à Min-‐cost Network Flow
• Min-‐cost Network Flow à Linear Programming
Heurísticas e Metaheurísticas
Redução Pseudo-‐polinomial
• Bin Packing à MulFprocessor Scheduling
Heurísticas e Metaheurísticas
0.5 0.7
0.5 0.2
0.4
0.2 0.5
0.6
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
0.1
Heurísticas e Metaheurísticas
0.5 0.7
0.5
0.2
0.4
0.2 0.5
0.6
0.1 0.5 0.4 0.2 0.2
0.5 0.5 0.6 0.7
0.1
Redução Pseudo-‐polinomial
• Bin Packing à MulFprocessor Scheduling
• Roteamento e atribuição mínima de Comprimentos de onda (min-‐RWA) – MulFplexação WDM. – As conexões são estabelecidas por caminhos óFcos. – Comutadores totalmente óFcos. – Sem conversores de comprimentos de onda.
Heurísticas e Metaheurísticas
Redução Heurís'ca min-‐RWA
Heurísticas e Metaheurísticas
Redução Heurís'ca min-‐RWA
• Estabelecer um conjunto de caminhos óFcos. • Atribuir um determinado comprimento de onda para cada
uma deles. • Dois caminhos óFcos que comparFlham algum enlace da
rede devem ter comprimentos de onda diferentes. • Minimizar o número total de comprimentos de onda
uFlizado.
Heurísticas e Metaheurísticas
Redução Heurís'ca min-‐RWA
• Problema de Roteamento. – Calcular o caminho mais curto para cada conexão.
• Problema de atribuição de comprimentos de onda. – Grafo de conflitos. – Coloração de grafos.
Heurísticas e Metaheurísticas
Redução Heurís'ca min-‐RWA
Conexões: (a -> e) (b -> f) (c -> m) (d -> b) (e -> h)
Redução Heurís'ca Roteamento por caminhos mais curtos
Redução Heurís'ca Grafo de Conflitos
1
5 2
4 3
Conexões: 1: (a -> e) 2: (b -> f) 3: (c -> m) 4: (d -> b) 5: (e -> h)
1
5 2
4 3
Redução Heurís'ca Grafo de Conflitos
1
5 2
4 3
w1 w2 w3
Redução Heurís'ca Grafo de Conflitos
1
5 2
4 3
Conexões: 1: (a -> e) : w1 2: (b -> f) : w2 3: (c -> m) : w3 4: (d -> b) : w2 5: (e -> h) : w1
Redução Heurís'ca Solução
Conexões: 1: (a -> e) 1: (b -> f) 1: (c -> m) 1: (d -> b) 1: (e -> h)
Redução Heurís'ca Roteamento por k-‐caminhos mais curtos
1 0
6
3
2
4 5
7
8
Redução Heurís'ca Grafo de Conflitos
1 0
6
3
2
4 5
7
8
Heurísticas e Metaheurísticas
Redução Heurís'ca Problema de coloração de parFções
1
6
3
5
8
Heurísticas e Metaheurísticas
Redução Heurís'ca Problema de coloração de parFções
w1 w2
1
6
3
5
8
Conexões: (a -> e) : w1 (b -> f) : w2 (c -> m) : w2 (d -> b) : w1 (e -> h) : w1
Redução Heurís'ca Solução
Heurísticas e Metaheurísticas
Nós de Steiner
Redução Heurís'ca Problema de Steiner em Grafos
Heurísticas e Metaheurísticas
Redução Heurís'ca Problema de Steiner em Grafos
Heurísticas e Metaheurísticas
Redução Heurís'ca Problema de Steiner em Grafos
• Seja o grafo G=(N, A), – onde N é o conjunto de nós e A o conjunto de arcos valorados.
• Sejam os conjuntos P (de nós terminais) e B (de nós brancos ou nós de Steiner) – tais que P U B = N e B ∩ P =Ø .
• Determinar um subgrafo de custo mínimo – G’= (N’,A’), N’ є N, A’ є A tal que – G’ é uma árvore contendo todos os nós de P e – alguns nós de Steiner opcionalmente.
Heurísticas e Metaheurísticas
Redução Heurís'ca Problema de Steiner em Grafos
• HeurísFca da Árvore Geradora Mínima – Fixa o conjunto de nós de Steiner de tal forma que o grafo resultante
seja conexo.
Heurísticas e Metaheurísticas
Redução Heurís'ca Problema de Steiner em Grafos
Redução Heurís'ca Problema de Steiner em Grafos
• HeurísFca da Árvore Geradora Mínima • Executa um algoritmo para AGM no grafo induzido pelos nós terminais
e pelos nós de Steiner fixados no passo anterior.
Heurísticas e Metaheurísticas
• HeurísFca da Árvore Geradora Mínima • Executa um algoritmo para AGM no grafo induzido pelos nós terminais
e pelos nós de Steiner fixados no passo anterior.
Heurísticas e Metaheurísticas
Redução Heurís'ca Problema de Steiner em Grafos
• HeurísFca da Árvore Geradora Mínima • Elimina da árvore os nós de Steiner de grau 1.
Heurísticas e Metaheurísticas
Redução Heurís'ca Problema de Steiner em Grafos
Heurísticas e Metaheurísticas
• HeurísFca da Árvore Geradora Mínima • Elimina da árvore os nós de Steiner de grau 1.
Redução Heurís'ca Problema de Steiner em Grafos
• Problema de Programação Linear (PL) :
• Este problema pode ser resolvido em tempo polinomial.
Heurísticas e Metaheurísticas
Heurís'cas de Arredondamento Aleatorizado
Heurís'cas de Arredondamento Aleatorizado
• Problema de Programação Linear Inteira (PLI)
• PLI é NP-‐DiYcil
Heurísticas e Metaheurísticas
• CongesFon minimizaFon MulFcommodity flow problem – Conectar diversos pares de vérFces no grafo minimizando a aresta
mais congesFonada.
Heurísticas e Metaheurísticas
10
4
7
3 9
2 8
6
5
1
Heurís'cas de Arredondamento Aleatorizado
Heurís'cas de Arredondamento Aleatorizado
• Redução para PLI – CongesFon minimizaFon MulFcommodity flow problem
• CongesFon minimizaFon MulFcommodity flow problem – Restrições de conservação de fluxo na formulação inteira
Heurísticas e Metaheurísticas
s
4
d
3 9
2 8
6
5
1
Heurís'cas de Arredondamento Aleatorizado
(1) (1)
• Problema de Programação Linear (PL) : – Relaxação Linear
Heurís'cas de Arredondamento Aleatorizado
• CongesFon minimizaFon MulFcommodity flow problem – Restrições de conservação de fluxo na formulação linear
Heurís'cas de Arredondamento Aleatorizado
s
4
d
3 9
2 8
6
5
1
(0.33) (0.35)
(0.32)
(0.33) (0,28)
(0.10)
(0.25)
• A abordagem básica 1. Formular o problema para ser resolver como um PLI. 2. Obter uma solução fracionaria do problema resolvendo a Relaxação
Linear do PLI. 3. Gerar uma solução inteira a parFr da solução fracionária por meio
de arredondamento do valor das variáveis fracionárias.
• CongesFon minimizaFon MulFcommodity flow problem – HeurísFca de Raghavan e Thompson, 1987
Heurís'cas de Arredondamento Aleatorizado
10
4
7
3 9
2 8
6
5
1
sd(0.33) (0.35)
(0.32)
(0.33) (0,28)
(0.10)
(0.25)
• Path Stripping – Seleciona um conjunto de rotas para cada par (s,d) em P.
Heurís'cas de Arredondamento Aleatorizado
10
4
7
3 9
2 8
6
5
1
sd(0.33) (0.35)
(0.32)
(0.33) (0,28)
(0.10)
(0.25)
• Path Stripping – Seleciona uma conjunto de rotas para cada par (s,d) em P.
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02
10
4
7
3 9
2 8
6
5
1
sd(0.33) (0.35)
(0.32)
(0.33) (0,28)
(0.10)
(0.25)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02
10
4
7
3 9
2 8
6
5
1
sd(0.33) (0.33)
(0.32)
(0.33) (0,28)
(0.08)
(0.25)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02
10
4
7
3 9
2 8
6
5
1
sd(0.33) (0.33)
(0.32)
(0.33) (0,28)
(0.08)
(0.25)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08
10
4
7
3 9
2 8
6
5
1
sd(0.33) (0.33)
(0.32)
(0.33) (0,28)
(0.08)
(0.25)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08
10
4
7
3 9
2 8
6
5
1
sd(0.25) (0.25)
(0.32)
(0.33) (0,28)
(0.00)
(0.25)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08
10
4
7
3 9
2 8
6
5
1
sd(0.25) (0.25)
(0.32)
(0.33) (0,28)
(0.25)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08
10
4
7
3 9
2 8
6
5
1
sd(0.25) (0.25)
(0.32)
(0.33) (0,28)
(0.25)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08
10
4
7
3 9
2 8
6
5
1
sd(0.25) (0.25)
(0.32)
(0.33) (0,28)
(0.25)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25
10
4
7
3 9
2 8
6
5
1
sd
(0.32)
(0.33) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25
10
4
7
3 9
2 8
6
5
1
sd
(0.32)
(0.33) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32
10
4
7
3 9
2 8
6
5
1
sd
(0.32)
(0.33) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32
10
4
7
3 9
2 8
6
5
1
sd
(0.00)
(0.33) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32
10
4
7
3 9
2 8
6
5
1
sd
(0.33) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32
10
4
7
3 9
2 8
6
5
1
sd
(0.33) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32, 0.05
10
4
7
3 9
2 8
6
5
1
sd
(0.33) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32, 0.05
10
4
7
3 9
2 8
6
5
1
sd
(0.28) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32, 0.05
10
4
7
3 9
2 8
6
5
1
sd
(0.28) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32, 0.05
10
4
7
3 9
2 8
6
5
1
sd
(0.28) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32, 0.05, 0.28
10
4
7
3 9
2 8
6
5
1
sd
(0.28) (0,28)
Heurís'cas de Arredondamento Aleatorizado
• τi = 0.02, 0.08, 0.25 , 0.32, 0.05, 0.28
10
4
7
3 9
2 8
6
5
1
sd
(0.00) (0,00)
Heurís'cas de Arredondamento Aleatorizado
0.02 0.05
0.08
0.25
0.28
0.32
• τ1 = 0.02, 0.08, 0.25 , 0.32, 0.05, 0.28
Heurís'cas de Arredondamento Aleatorizado
Heurís'cas de Arredondamento Aleatorizado
0.19 0.21
0.28 0.32
• τ2 = 0.19, 0.21 , 0.32, 0.28
Heurís'cas de Arredondamento Aleatorizado
0.3 0.3
0.4
• τ3 = 0.3 , 0.3, 0.4
Heurís'cas de Arredondamento Aleatorizado
0.3 0.3
0.4
• Aleatorização – Seleciona uma rota para cada conexão de acordo com o peso da rota. – A probabilidade de uma rota ser escolhida é proporcional ao seu peso.
0.19 0.21
0.28 0.32
0.02 0.05
0.08
0.25
0.28
0.32
τ1
τ3
τ2
Heurís'cas e Metaheurís'cas Thiago F. Noronha
Heurís'cas de Busca
• Espaço de soluções – Conjunto de soluções viáveis para o problema.
• Algoritmos de busca – Soluciona um problema através de uma busca do espaço de soluções
• Exemplos – Algoritmos de busca exausFva
• Backtraking – Algoritmos de enumeração implícita
• Branch-‐and-‐bound, Constraint Programming
– HeurísFcas de busca em vizinhança • Busca Local, Busca Tabu, Simulated Annealing, ...
– HeurísFcas populacionais • Sca�er Search, Algoritmos GenéFcos, ...
– MetaheurísFcas em geral
Heurís'cas de Busca Algoritmos de Busca
• Problema combinatório: f (s*) = min{ f(s): s ∈ S } onde S é um conjunto discreto de soluções.
• Vizinhança: elemento que introduz a noção de proximidade entre as soluções em S.
• Uma vizinhança é um mapeamento N: S → 2S que leva as soluções de S a um subconjunto deste mesmo conjunto de soluções.
• Boas vizinhanças permitem representar de forma compacta/ eficiente o conjunto de soluções vizinhas a qualquer solução s.
Vizinhança
Vizinhança N1 no espaço dos vetores {0,1}3
000
100
110
010 011
001
101
111
Problema do Caixeiro viajante (PCV): Dado um grafo G = (V, E) com custos ce ( e ϵ E) associados às arestas: -‐ Encontrar um ciclo hamiltoniano de comprimento mínimo.
(5 1)!2−
Heurís'cas de Busca Exemplo de Problema de OFmização
Vizinhança 2-‐OPT para TSP
2 5
4 3
1
5
4 3
2
1 5
4 3
2
1
1
5
4 3
2 5
4 3
2
1
2 5
4 3
1
Espaço de busca • O espaço de busca pode ser visto como um grafo
– Os vérFces representam as soluções – As arestas representam soluções vizinhas.
Espaço de busca
• O espaço de busca pode ser visto como uma superYcie, com vales e cumes definidos pelo custo das soluções.
• O espaço de busca pode ser visto como uma superYcie, com vales e cumes definidos pelo custo das soluções.
Ótimo Global
Ótimo Local Ótimo Local
Espaço de busca
Ó'mos locais e globais
• A noção de proximidade induz o conceito de distância entre soluções, que define um espaço topológico.
• ÓFmo local: solução tão boa ou melhor do que qualquer das soluções vizinhas. Para um problema de minimização:
s+ é um óFmo local ⇑⇓ f (s+) ≤ f (s), ∀s ∈ N(s+). • ÓFmo global ou solução óFma s*: s* é um óFmo global ⇑⇓ f (s*) ≤ f (s), ∀s ∈ S (espaço de busca).
Busca local • Busca local em uma vizinhança:
– Um caminho no espaço de busca é formado por uma sequência de soluções vizinhas.
– Algoritmos de busca local são construídos como uma forma de exploração do espaço de busca .
– ParFda: solução inicial obFda através de um método construFvo . – Iteração: melhoria sucessiva da solução corrente através de uma
busca na sua vizinhança . – Parada: primeiro óFmo local encontrado .
• não existe solução vizinha “aprimorante” .
Estratégias de Busca na Vizinhança
5
4 3
2
1
2 5
4 3
1 L=19 (+)
5
4 3
2
1
L=21 (+)
2 5
4 3
1
L=14 (-‐)
1
5
4 3
2
L=16 (-‐)
5
4 3
2
1
L=17 (=)
5 1
3 3
5
procedure Descida-‐Mais-‐Rápida(s0) s ← s0; melhoria ← .true. while melhoria do melhoria ← .false.; fmin ← +∞ for-‐all s’ ∈ N(s) do if ( f(s’) < fmin ) then smin ← s’; fmin ← f(s’) end-‐if end-‐for-‐all if ( fmin < f(s) ) then s ← smin ; melhoria ← .true. end-‐if end-‐while return s end Descida-‐Mais-‐Rápida
Belo Horizonte, 2012
Estratégias de Busca na Vizinhança Busca Local Melhor Aprimorante
Belo Horizonte, 2012
f(0,0,0) = 3
f(1,0,0) = 4 f(0,0,1) = 5 f(0,1,0) = 2
F(1,1,0) = 2 F(0,1,1) = 1
f(1,1,1) = 6
Estratégias de Busca na Vizinhança Busca Local Melhor Aprimorante
procedure Melhoria-‐IteraFva(s0) s ← s0; melhoria ← .true. while melhoria do melhoria ← .false. for-‐all s’∈ N(s) .and. melhoria == .false. do if ( f(s’) < f(s) ) then s ← s’; melhoria ← .true. end-‐if end-‐for-‐all end-‐while return s end Melhoria-‐IteraFva
Belo Horizonte, 2012
Estratégias de Busca na Vizinhança Busca Local Primeiro Aprimorante
Belo Horizonte, 2012
f(0,0,0) = 3
f(1,0,0) = 3 f(0,0,1) = 1 f(0,1,0) = 2 f(0,1,0) = 2
Estratégias de Busca na Vizinhança Busca Local Primeiro Aprimorante
Belo Horizonte, 2012
f(0,0,0) = 3
f(1,0,0) = 5 f(0,0,1) = 1 f(0,1,0) = 2 f(0,1,0) = 2
Estratégias de Busca na Vizinhança Busca Local Primeiro Aprimorante
F(1,1,0) = 2 F(0,1,1) = 1
f(1,1,1) = 2
Busca Local Situação Ideal
Belo Horizonte, 2012
f(1,0,0) = 5 f(0,1,1) = 3 f(0,1,0) = 4
f(1,1,0) = 6
f(1,0,1) = 3
f(1,1,1) = 4
f(0,0,0) = 3 f(0,0,1) = 0
Ó'mo Global
Busca Local Situação realisFca
Belo Horizonte, 2012
f(1,0,0) = 1 f(0,1,1) = 3 f(0,1,0) = 2
f(1,1,0) = 6
f(1,0,1) = 3
f(1,1,1) = 1
f(0,0,0) = 3 f(0,0,1) = 0 Ó'mo Global
Ó'mo Local
Ó'mo Local
Ó'mo Local
Sensível à solução de par'da.
f(1,0,0) = 1 f(0,1,0) = 2
f(1,1,1) = 1
Questões Fundamentais • Definição da vizinhança; • Estratégia de busca na vizinhança; • Complexidade de cada iteração:
– Proporcional ao tamanho da vizinhança; – Eficiência: depende da forma como é calculada a variação da função
objeFvo para cada solução vizinha; • Algoritmos eficientes ↔ capazes de recalcular as variações de modo a
atualizá-‐las apenas quando a solução corrente se modifica, evitando cálculos repeFFvos e desnecessários da função objeFvo.
Belo Horizonte, 2012
• Conexidade – Deve exisFr um caminho entre qualquer par de soluções no espaço
de busca.
• Distância entre duas soluções – Número de soluções visitadas ao longo de um caminho mais curto
entre elas.
• Diâmetro – Distância entre duas das soluções mais afastadas.
• Região de atração de um óFmo local – Conjunto de soluções iniciais a parFr das quais o algoritmo de busca
local leva a este óFmo local.
Questões Fundamentais
Dificuldades da busca local • Término prematuro no primeiro óFmo local encontrado. • Sensível à solução de parFda. • Sensível à vizinhança escolhida. • Sensível à estratégia de busca. • Pode exigir um número exponencial de iterações!
Belo Horizonte, 2012
Contornando as dificuldades da busca local
• Redução da vizinhança – InvesFgar um subconjunto da vizinhança da solução corrente (e.g.
por “aleatorização”).
• MulF-‐parFda – RepeFr a busca local a parFr de diferentes soluções de parFda.
• MulF-‐vizinhança – Considera mais de uma vizinhança. Ao aFngir um óFmo local com
relação a uma vizinhança, inicia uma outra busca local empregando outra vizinhança. O algoritmo termina quando a solução corrente é um óFmo local em relação a todas as vizinhanças empregadas.
• Segmentação da vizinhança – UFlizada para aumentar a eficiência quando vizinhanças muito
grandes são uFlizadas. Pode ser vista como uma estratégia mulF-‐vizinhança: N(s) = N1(s) ∪ N2(s) ∪…∪ Np(s).
METODOLOGIA CIENTÍFICA
Heurís'cas e Metaheurís'cas Thiago F. Noronha
"Quem não sabe o que procura não entende o que encontra"
Hans Selye
Metodologia CienTfica
CIÊNCIA
• De modo geral ciência refere-‐se a um sistema de adquirir conhecimento baseado no método cienHfico.
• O método cienHfico é uma ferramenta para gerar conhecimento muito flexível e muito poderosa.
• Existe uma dinâmica e um rigor que deve ser seguido para que o conhecimento gerado seja considerado cienHfico (confiável).
Metodologia CienTfica
CONHECIMENTO CIENTÍFICO VS. EMPÍRICO
• Conhecimento empírico • Relacionado a experiências e observações práFcas • Indisciplinar e imetódico • Superficial e subjeFvo
• Conhecimento cienHfico • ObjeFvo • Verificável • Provisório • Reversível
Metodologia CienTfica
• Conjunto de regras básicas para desenvolver uma experiência a fim de produzir novo conhecimento.
• Elementos: • Caracterização • Hipóteses • Experimentos
• Aspectos: • Observação (medição) • Descrição (replicável) • Previsão (atemporal) • Controle (uma variável por vez) • Falseabilidade (testável) • Explicação das causas (fenomenologia)
Metodologia CienTfica Método CienHfico
MÉTODO CIENTÍFICO
• Etapas: • Definir o problema • Coletar os dados • Elaborar uma ou mais hipóteses • Realizar experiências controladas. • Analisar os resultados • Interpretar os dados e Frar conclusões • Apresentar os resultados obFdos à comunidade cienHfica
• Mas não acaba por aí! • Revisão pelos pares • Reprodução por outros grupos de pesquisa • Só então o conhecimento é considerado conhecimento cienHfico estabelecido!!!
Metodologia CienTfica Método CienHfico
CIÊNCIA EM COMPUTAÇÃO
• Nas ciências naturais procura-‐se descobrir teorias ou leis que explicam fenômenos naturais. • Em computação, a coisa não é bem assim...
• Em geral, a pesquisa em computação consiste na construção de • um programa, • um modelo, • um algoritmo ou • um sistema novo!
• A originalidade dos resultados é considerada um fator fundamental.
Metodologia CienTfica
TERMINOLOGIA
• Modelo • Representação computacional de uma enFdade do mundo real.
• Algoritmo • Sequência finita de instruções bem definidas e não ambíguas que solucionam um determinado problema.
• Programa • SoTware que resolve um problema e que o usuário é normalmente o próprio autor.
• Sistema • SoTware que interage com os usuários que não são necessariamente seus autores.
Belo Horizonte, 2012
Metodologia CienTfica
• Classificação – Pesquisa analíFca – Pesquisa quanFtaFva – Pesquisa bibliográfica – Pesquisa qualitaFva – Pesquisa experimental
Metodologia CienTfica Classificação
• Pesquisa AnalíFca • Mais comum no contexto de modelos e algoritmos. • Cria um modelo dos dados de entrada e da máquina onde o algoritmo/programa será implementado e
• prova que o programa tem algumas propriedades interessantes.
• Exemplos – Complexidade assintóFca no pior caso – Complexidade problemas – Algoritmos aproximaFvos
Metodologia CienTfica Classificação
PESQUISA QUALITATIVA
• Pesquisa Bibliográfica • Não se limita a coletar e resumir arFgos relevantes para a solução de um problema.
• Consiste na revisão sistemáFca de todos os arFgos publicados na literatura, resultando numa avaliação qualitaFva e quanFtaFva desses resultados.
• Os objeFvos geralmente são – Classificar as diferentes estratégias de solução. – IdenFficar os pontos fortes e fracos de cada uma delas e (se possível), – agregar as diversas abordagens numa única estratégia de solução.
Metodologia CienTfica Classificação
PESQUISA QUALITATIVA
• Pesquisa QualitaFva • Baseia-‐se na observação cuidadosa dos ambientes onde o sistema está sendo ou será usado.
• Procura entender as várias perspecFvas dos usuários do sistema.
• Os principais métodos de pesquisa qualitaFva são: – Pesquisa observacional (estudo de casos) – Pesquisa intervencionista (pesquisa-‐ação)
Metodologia CienTfica Classificação
• Pesquisa QuanFtaFva – Caracteriza-‐se pelo emprego de quanFficação dos dados e dos resultados
obFdos. – Baseada na medida de variáveis objeFvas.
• Número de pontos de acoplamento entres subsistemas. • Qualidade da solução heurísFca.
– Fundamentada na comparação de resultados e no uso intensivo de estaHsFca. – Técnicas mais uFlizadas:
• benchmarks, • simulações, • quesFonários.
Metodologia CienTfica Classificação
• Pesquisa Experimental – Faz uso de experimentos para confirmar ou refutar suas hipóteses. – Um experimento é projetado para avaliar cada hipótese. – O resultado do experimento deve ser sinteFzado e apresentado de forma que
a conclusão seja facilmente idenFficada. – É o Fpo de pesquisa mais uFlizada na ciência da computação.
Metodologia CienTfica Classificação
PESQUISA EXPERIMENTAL
• Antes de iniciar uma pesquisa experimental: • Definia o problema que você irá abordar. • Tenha claro quais são as hipóteses que você quer confirmar ou refutar.
• Pense em quais os experimentos você pode realizar para confirmar suas hipóteses.
• Conheça a literatura e idenFfique qual é o seu baseline.
Metodologia CienTfica Pesquisa Experimental
PESQUISA EXPERIMENTAL
• Ao descrever uma pesquisa experimental: • Definia claramente e objeFvamente o problema que está sendo tratado e seus objeFvos.
• JusFfique a uFlização de uma abordagem experimental e a necessidade de cada experimento que você realizou.
• Mencione detalhes suficientes de cada experimento. • O leitor tem que ser capaz de reproduzir seus experimentos e chegar nos mesmos resultados. • Mas não dê detalhes de mais!
• Tome muito cuidado na apresentação dos dados experimentais.
• Quais e como reportar os dados? • Sempre explique as tabelas e gráficos.
• Apoie todas as suas conclusões com os dados experimentais que você gerou. • Cuidado para não exagerar nas generalizações!
• Concentre-‐se na causa e não no efeito.
Metodologia CienTfica Pesquisa Experimental
Estrutura do Ar'go • Introdução
– Contextualização • “Problema real”
– Definição do problema • Modelo de oFmização
– Caracterização do problema • Complexidade polinomial ou exponencial? • Problemas semelhantes
– MoFvação • Por que vale a pena estudar este problema
– ObjeFvos • Até onde você quer chegar nesta pesquisa
– JusFficaFva • Por que é importante aFngir estes objeFvos
Estrutura do Ar'go
• Introdução (con@nuação) – Roteiro texto
Estrutura do Ar'go
• Trabalhos relacionados – Apresentar as soluções que já foram propostas para o problema
• Destacar pontos fortes • Destacar pontos fracos • Resumir conclusões • Lembre-‐se que seu leitor sempre pode ler o trabalho original
– Não se prender as soluções específicas para o problema que você está tratando
• Soluções bem sucedidas para problemas semelhantes ao seu são as melhores candidatas para se iniciar a pesquisa
Estrutura do Ar'go
• Trabalhos relacionados (con@nuação) – Apresentar estes trabalhos sistemaFcamente
• Separar por Fpo do algoritmo (exato vs. heurís@co) • Separar pelo Fpo de estratégia de solução (o@mização vs. simulação)
• Entre vários outros
Estrutura do Ar'go
• Trabalhos relacionados (con@nuação) – MoFvar a escolha da estratégia de solução que está sendo proposta!
• Sua solução deve ser original, • mas ao mesmo tempo fundamentada na literatura.
Estrutura do Ar'go
• Metodologia – Descrição geral do algoritmo – Pseudocódigo (explicado) de cada procedimento (não trivial)
– Calculo da complexidade
Estrutura do Ar'go
• Experimentos Computacionais – Apresentar as condições em que o experimentos foram realizados. • Máquina (Clock, RAM, 32/64 bits, etc.), S.O., gerador de números aleatórios, entre outros.
• Técnica empregada: Benchmarks vs. Simulação • Instâncias reais • Instâncias aleatórias • Instâncias ad-‐hoc (onde alguma propriedade é garanFda)
• Instâncias degeneradas
Estrutura do Ar'go
• Experimentos Computacionais (con@nuação) • Para cada hipótese levantada
– Apresentar a hipótese – Descrever o experimento que será realizado para avaliar esta hipótese
– Apresentar os resultados do experimento • Através de tabelas e gráficos. • Descrever detalhadamente as tabelas e gráficos.
– DiscuFr os resultados do experimento • “Ler” as tabelas e os gráficos no texto. • Concluindo com a confirmação ou refutação da hipótese.
Estrutura do Ar'go
• Experimentos Computacionais – Ajuste de parâmetros das heurísFcas.
• Realizar um experimento para ajustar cada parâmetro. – Critério de parada – Critério de aceitação – Tamanho da lista restrita de candidatos – Entre (muitos) outros.
Estrutura do Ar'go
• Experimentos Computacionais (con@nuação) – Ajuste de parâmetros das heurísFcas (con@nuação) • Se os parâmetros forem muitos? • Se um parâmetro depender muito do valor de outros parâmetros?
– Em que ordem ajustar cada parâmetro?
– Você também pode usar valores muito usados na literatura.
Estrutura do Ar'go
• Experimentos Computacionais – Avaliar qualidade
Estrutura do Ar'go
• Experimentos Computacionais – Avaliar qualidade vs. tempo
Estrutura do Ar'go
• Experimentos Computacionais – Avaliar qualidade vs. tempo (con@nuação)
Estrutura do Ar'go
• Experimentos Computacionais – Avaliar qualidade vs. Tempo (con@nuação)
Estrutura do Ar'go
• Experimentos Computacionais – Tempo (em relação a implementação padrão)
Estrutura do Ar'go
• Experimentos Computacionais – Avaliar robustez
Estrutura do Ar'go
• Conclusões / Considerações finais – RepeFr os objeFvos do trabalho – Resumir as conclusões do trabalho
• para cada hipótese levantada – Propor trabalhos futuros
LEITURA RECOMENDADA
• How to present a paper on experimental work with algorithms • (McGeoch e Moret).
• A theoreFcian's guide do the experimental anaysis of algorithms • (David S. Johnson)
• Performance of various computers using standard linear equalFons soTware • (Jack J. Dongarra)
• TTTPLOTS: A perl program to create Fme-‐to-‐target plots • (R.M. Aiex, M.G.C. Resende, and C.C. Ribeiro)
Algumas referências