Métodos Heurísticos Genéricos: Meta-heurísticas e Hiper-heurísticas Igor Ribeiro Sucupira (Mestrando em Ciência da Computação pelo IME-USP) Orientador: Prof. Dr. Flávio S. C. da Silva Meta-heurísticas e hiper-heurísticas São métodos heurísticos que podem lidar com qualquer problema de otimização, ou seja, que não estão atrelados a um problema específico. Neste seminário Meta-heurísticas: – Definição. – Tipos. – Uma meta-heurística clássica. – Uma meta-heurística recente. Hiper-heurísticas: – Definição. – Exemplos concretos. Meta-heurísticas Do sítio www.metaheuristics.net : “Uma meta-heurística é um conjunto de conceitos que podem ser utilizados para definir métodos heurísticos aplicáveis a um extenso conjunto de problemas.” Tipos de meta-heurísticas Uma possível divisão, por Melián et al. (Universidad de La Laguna - Espanha): – Meta-heurísticas de busca por entornos: percorrem o espaço de busca levando em conta, fundamentalmente, a “vizinhança” da solução em mãos, definida como o conjunto de soluções que podem ser obtidas a partir da aplicação de algum operador à solução atual. – Meta-heurísticas de relaxação: simplificam o problema (criando um problema relaxado) e utilizam a solução encontrada como guia para o problema original. – Meta-heurísticas construtivas: definem de forma meticulosa o valor de cada componente da solução. – Meta-heurísticas evolutivas: lidam com uma população de soluções, que evolui, principalmente, através da interação entre seus elementos. Exemplos (busca por entornos) GLS (Guided Local Search): busca monotônica. Porém, altera a função objetivo ao encontrar um ótimo local. Simulated Annealing : não monotônica. Probabilidade de “movimentos ruins” decresce exponencialmente com o aumento na diferença de custo. Busca Tabu: não monotônica. Classifica como tabu os componentes de soluções adicionados ou removidos recentemente. Busca Reativa: Busca Tabu com detecção de ciclos. Exemplo (construtiva) GRASP (Greedy Randomized Adaptive Search Procedure): cada iteração é composta por uma fase construtiva e uma fase de busca por entornos. Em cada passo da fase construtiva: – Selecionam-se os componentes que causam melhor efeito se adicionados à solução atual. – Acrescenta-se um desses elementos (selecionado aleatoriamente) à solução. Exemplo (relaxação) Relaxação Lagrangeana: remove algumas restrições de um problema de programação linear, atribui um peso (multiplicador de Lagrange) a cada uma delas e altera a função objetivo para penalizar as soluções que seriam inviáveis no problema original. Exemplos (evolutivas) Algoritmos genéticos. Algoritmos meméticos: algoritmos genéticos que realizam otimização local. Estimação de distribuição: verificam a distribuição dos componentes nas melhores soluções e criam a geração seguinte aleatoriamente, segundo essa distribuição. Busca dispersa e Path relinking : criam caminhos entre soluções e geram a população seguinte a partir das soluções que aparecem nesses caminhos. Outros exemplos Meta-heurísticas de decomposição: indicam como decompor o problema em instâncias e utilizar as soluções resultantes na construção da solução para o problema original. Ant colony optimization : formigas artificiais percorrem um grafo em que cada aresta representa um componente de solução. Otimização extrema: em cada iteração, remove o pior componente. Particle swarm optimization. Iterated local search : tenta realizar uma espécie de busca por entornos nos ótimos locais. Exemplos em detalhes Uma meta-heurística clássica: – Algoritmo genético. Uma meta-heurística recente: – Particle swarm optimization (1995). Algoritmo genético É uma meta-heurística evolutiva. Cada elemento da população é uma seqüência de símbolos (“genes”), chamada cromossomo. Exemplo simples: problema da mochila 0-1 com n itens. Cromossomo tem n genes. Cada i -ésimo gene é um bit, associado ao i -ésimo item. Algoritmo genético Operador de mutação: escolhe aleatoriamente um gene do cromossomo e o altera (para um valor aleatório). Tm Є [0, 1] é a taxa de mutação. Operador de cruzamento: gera um par de cromossomos a partir dos genes de outro par. Tc Є [0, 1] é a taxa de cruzamento. Função de aptidão: mede a qualidade de um indivíduo. Exemplo (mochila - i -ésimo item tem valor vi): f (c) (i 1 ci.vi) penalidade n Passagem entre gerações m : tamanho da população. Partindo de M = {}, repetir m vezes: – Selecione aleatoriamente um indivíduo da população. Probabilidades são proporcionais às aptidões. – Adicionar a M o indivíduo selecionado. Para formar a próxima população, repita m/2 vezes: – Selecione um par de indivíduos de M e, com probabilidade Tc, realize cruzamento em um ponto aleatório, gerando dois outros indivíduos. – Adicione os dois indivíduos gerados à nova população. – Realize mutação nos indivíduos (probabilidade Tm). Algumas aplicações Problema da mochila (múltiplo e 0-1). Problemas de agendamento. Problemas de coloração de vértices (ou arestas). Terminal assignment problem. Problema da soma de subconjunto (subset sum). Problema do corte máximo. Problema da cobertura por conjuntos (set covering). Conjunto independente máximo. Problema da cobertura mínima de vértices. Codificação e decodificação de códigos de grupo. Problema da montagem de fragmentos de DNA (fragment assembly). Particle Swarm Optimization Desenvolvida por James Kennedy (psicólogo) e Russell Eberhart (engenheiro), com base no comportamento de pássaros em revoadas, modelado pelo biólogo Frank Heppner. Elementos do algoritmo: – – – – – – A : população de agentes. xi : posição do agente ai no espaço de soluções. f : função de avaliação. vi : velocidade do agente ai. V(ai) : conjunto fixo de vizinhos do agente ai. Todos os agentes estão conectados, direta ou indiretamente. Iteração Para cada agente ai : vi := ω.vi + η1.rand().(yi - xi) + η2.rand().(zi - xi) xi := xi + vi Sendo: – yi : melhor posição em que ai já esteve. – zi : melhor posição em que algum vizinho de ai já esteve. Aplicações de PSO Aplicações bem-sucedidas mais comuns: – Evolução de redes neurais artificiais. – Extração de regras de RNAs. Aplicação recente: – Bandwidth Minimization Problem (2003). Algumas aplicações pontuais recentes (2004): – Caminho ótimo para operações de perfuração automatizadas. – Mineração de dados para tarefas de classificação. – Posicionamento de bases em computação móvel. – Aproximação poligonal ótima de curvas digitais. Motivação para as hiper-heurísticas Implementações de meta-heurísticas podem ser algoritmos extremamente poderosos. Porém, normalmente isso exige alterações substanciais para cada novo problema a ser tratado. O objetivo das hiper-heurísticas é resolver esse conflito entre facilidade de implementação e qualidade. Portanto, a idéia não é necessariamente superar a qualidade das outras técnicas. Conceito de hiper-heurística O termo hiper-heurística (2000) se refere aos algoritmos heurísticos que operam em um alto nível de generalidade. O domínio de uma hiperheurística é composto por conjuntos de heurísticas (e não pelo conjunto das instâncias de um problema de otimização). Uma hiper-heurística encontra soluções indiretamente, utilizando de maneira inteligente as heurísticas que lhe foram fornecidas. Ross et al. (Napier / Nottingham) 2003 Vantagens Simplicidade: para adaptar uma hiper-heurística a um novo problema, basta alterar o conjunto de heurísticas simples de baixo nível. Vantagens potenciais: – Robustez: uma hiper-heurística é um algoritmo bem definido que, idealmente, apresenta eficiência e eficácia no tratamento de diversos problemas de otimização, pois sua “inteligência” está implementada em um nível independente do domínio do problema. – Os erros de decisão praticados por cada uma das heurísticas pouco elaboradas são suprimidos em um processo de intercalação. A hiper-heurística é, portanto, insensível a essas falhas. Um exemplo concreto Hiper-heurística desenvolvida em 2002, por Cowling et al. (Bradford / Nottingham). A hiper-heurística é um algoritmo genético: – Cada cromossomo é uma seqüência de inteiros no intervalo [0, nh - 1], sendo nh o número de heurísticas de baixo nível. – A população inicial é criada com números aleatórios. Tamanho da população: 30. Número de gerações: 200. Porém, 100 gerações fornecem resultados semelhantes. Elitismo: população com os 30 melhores entre a população atual e a população gerada. Versões da hiper-heurística Oito versões: – Quatro com tamanho fixo de cromossomo. – Quatro com tamanho adaptativo de cromossomo. Taxas fixas e função de aptidão simples. 2. Taxas adaptativas e função de aptidão simples. 3. Taxas fixas e função de aptidão com tempo de CPU. 4. Taxas adaptativas e função de aptidão com tempo de CPU. 1. Características das versões Versões com taxas fixas: – Taxa de cruzamento: 0,6. – Taxa de mutação: 0,1. Taxas adaptativas: Tm se eleva (e Tc diminui) quando não há aumento na aptidão média por três gerações seguidas. O inverso ocorre quando há aumento de aptidão por três gerações. Aumento de uma taxa T := (T + 1) / 2. Diminuição: divisão por 2. Função de aptidão simples: valor objetivo resultante da aplicação do cromossomo à melhor solução já encontrada em todo o processo. Função de aptidão com tempo de CPU: o valor acima é dividido pelo tempo de CPU tomado na aplicação do cromossomo. Número variável de genes Operadores adicionais, que lidam com subseqüências de genes: – Um operador de cruzamento permuta a melhor seqüência de um cromossomo com a melhor seqüência do outro. – Um operador de mutação remove a pior seqüência do cromossomo. – Outro operador de mutação insere no cromossomo a melhor seqüência de um outro cromossomo (selecionado aleatoriamente). Cromossomos muito grandes são penalizados pela função de aptidão. Aplicação Problema: agendamento de cursos. D : conjunto de docentes. L : centros de treinamento (localidades), cada um com um certo número de salas. P : matriz de penalidades (D x L). n : número de vagas na grade horária. C : conjunto de cursos. A cada curso c estão associados: – – – – – Um conjunto de docentes competentes para ministrá-lo. Um intervalo dentro do qual c deve se iniciar. Um conjunto de localidades. Uma duração (entre 1 e 5 vagas da grade horária). Um valor que indica a sua prioridade (importância). Agendamento de cursos Objetivo: maximizar W - D, sendo: – W : soma das prioridades dos cursos realizados. – D : soma das penalidades aplicadas. Restrições adicionais: – Nenhum docente pode ministrar dois cursos simultaneamente. – Nenhum docente pode trabalhar em mais de 60% das vagas de horários. Heurísticas de baixo nível Tipo 1 (5 heurísticas): escolhem um curso e tentam agendá-lo. Tipo 2 (4 heurísticas): idem, mas, na presença de conflitos, tentam trocar os dados entre o curso escolhido e outro curso já agendado. Pode ser exaustivo. Tipo 3 (3 heurísticas): agendam o curso de maior prioridade que melhore a solução mesmo após a remoção dos cursos conflitantes. Experimentos Para efeito de comparação, também foram desenvolvidas duas meta-heurísticas, implementadas de forma não trivial: um algoritmo genético e um algoritmo memético. As heurísticas de baixo nível da hiper-heurística foram utilizadas como operadores para o algoritmo memético. Heurísticas H1, ..., H5 : cinco execuções da hiperheurística mais simples em uma instância complexa. Experimentos Todas as instâncias têm 25 professores, 10 localidades e 60 vagas de horários. São baseadas em um caso real ocorrido em uma instituição financeira de grande porte. Defeito: poucas instâncias (5). Instâncias diferem na complexidade: – Número médio de professores associados a cada curso. – Número médio de localidades associadas a cada curso. Instância mais complexa: para cada curso, 1 localidade e 5 docentes. Outro exemplo concreto Hiper-heurística desenvolvida em 2001 por Cowling et al. (Nottingham). Seleciona uma heurística de baixo nível a cada iteração. Recebe os componentes da função objetivo, com seus respectivos pesos. f1c(Hi) : desempenho histórico de Hi em relação ao componente c. f2c(Hi, Hk) : desempenho histórico (em relação ao componente c) de Hi quando executada logo após Hk. f3(Hi) : tempo decorrido desde a última execução de Hi. αc, βc e δ : pesos dos fatores históricos. Fatores históricos f1 e f2 são critérios de intensificação. f3 é um critério de diversificação. Intensificação : exploração do espaço de busca através de componentes e de tipos de movimentos que, historicamente, levam a soluções de boa qualidade. Diversificação : tentativa de construção de soluções que pertencem a regiões não exploradas do espaço de busca e diferem significativamente das soluções já encontradas. Iteração da hiper-heurística Seleciona aleatoriamente um componente c, com probabilidades proporcionais aos pesos. Hk : última heurística executada. Executar-se-á a heurística Hi que maximiza o valor: fc(Hi) = αc∙f1c(Hi) + βc∙f2c(Hi, Hk) + δ∙f3(Hi). Versões 1. 2. 3. Pesos fixos para os fatores históricos e função objetivo atômica. Pesos adaptativos e função objetivo atômica. Pesos adaptativos e função objetivo decomposta. Adaptabilidade: – Quando a heurística selecionada aumenta a qualidade da solução, o peso do maior fator de intensificação (max{α, β}) sofre elevação proporcional. – O mesmo peso é reduzido quando não há ganho de qualidade. – Quando não há progresso durante b iterações, o fator de diversificação se eleva (b é o número de heurísticas de baixo nível). – Quando há progresso em b iterações seguidas, o fator de diversificação é reduzido. Quatro versões simples 1. 2. 3. 4. Também foram desenvolvidas quatro hiper-heurísticas simples, semelhantes a meta-heurísticas de busca por entornos. SimpleRandom : seleciona uma heurística aleatoriamente e a aplica à solução corrente. RandomDescent : seleciona uma heurística aleatoriamente e a aplica repetidamente até que não haja ganho de qualidade. RandomPerm : cria aleatoriamente uma permutação das heurísticas e a aplica. RandomPermDescent : semelhante ao método acima, mas cada heurística é aplicada, repetidamente, até que não haja ganho de qualidade. Aplicação a um problema Problema real: feira comercial. Companhia promove um evento que envolve fornecedores e delegados. Fornecedores indicam os delegados que desejam encontrar, classificando alguns encontros como prioritários. Delegados também participam de seminários. Cada delegado indica os seminários de que gostaria de participar. Todas as participações são garantidas, para os delegados convidados. Cada encontro ocupa um horário na grade. Cada seminário ocupa três horários. O objetivo é selecionar quais delegados serão convidados e agendar encontros. Feira comercial Um delegado não pode participar de mais de 12 encontros. Um delegado não pode participar de duas atividades (seminário ou encontro) ao mesmo tempo e um fornecedor não pode participar de dois encontros ao mesmo tempo. Restrições desejáveis (soft constraints): – Cada fornecedor deve ter ao menos 20 encontros. – Cada fornecedor deve ter ao menos 17 encontros prioritários. Função a ser minimizada: E = B + 0,05∙C + 8∙H. – C : penalidades pela não realização dos 20 encontros. – B : idem, para os encontros prioritários. – H = d - 72, onde d é o número de delegados convidados e 72 é um limite inferior (se cada fornecedor tem 20 encontros). Resolução Apenas a versão 3 da hiper-heurística foi utilizada. Solução inicial para a hiper-heurística: resultado de um algoritmo guloso desenvolvido pelos autores. Componentes da função objetivo: (1, B), (0,05, C), (8, H). 10 heurísticas de baixo nível, que adicionam e/ou removem encontros ou delegados. Experimentos Deixam a desejar: – Não comparam as hiper-heurísticas com outros métodos. – A instância é um caso real, mas foi a única utilizada. Dados: 43 99 12 24 fornecedores. potenciais delegados. seminários. horários disponíveis. Resultados Outro problema Problema real: agendamento de apresentações de projetos em um curso de graduação. Apenas uma instância. As três versões da hiper-heurística foram utilizadas. 8 heurísticas de baixo nível. Principais referências (metaheurísticas) MELIÁN, B. et al. Metaheuristics: A Global View. In Revista Iberoamericana de Inteligencia Artificial. Asociación Española de Inteligencia Artificial, 2003. v. 2, n. 19. 2. REEVES, C. R. Genetic Algorithms. In GLOVER, F., KOCHENBERGER, G. Handbook of Metaheuristics. Kluwer, 2003. Cap. 3. 3. POMEROY, P. An Introduction to Particle Swarm Optimization. 2003. (http://www.adaptiveview.com/articles/ipsop1.html) 4. Metaheuristics Network. (http://www.metaheuristics.net) 1. Principais referências (hiperheurísticas) 1. 2. 3. ROSS, P. et al. Hyper-heuristics: An Emerging Direction in Modern Search Technology. In Handbook of Metaheuristics. Kluwer, 2003. COWLING, P. et al. An Adaptive Length Chromosome Hyperheuristic Genetic Algorithm for a Trainer Scheduling Problem. Submitted to SEAL 2002 Conference). University of Nottingham. COWLING, P. et al. Hyperheuristics: A Tool for Rapid Prototyping in Scheduling and Optimization. In LNCS 2279, Applications of Evolutionary Computing: Proceedings of Evo Workshops 2002. Mais referências na minha monografia: http://www.ime.usp.br/~igorrs/monografias/metahiper.pdf Meta-referência: http://www.ime.usp.br/~igorrs/seminarios/metahiper.ppt