Modelagem de uma Arquitetura Multiagente para a Solução, via
Transcrição
Modelagem de uma Arquitetura Multiagente para a Solução, via
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Diretoria de Pesquisa e Pós-Graduação Curso de Mestrado em Modelagem Matemática e Computacional Modelagem de uma Arquitetura Multiagente para a Solução, via Metaheurísticas, de Problemas de Otimização Combinatória Dissertação de Mestrado, submetida ao Curso de Mestrado em Modelagem Matemática e Computacional, como parte dos requisitos para a obtenção do título de Mestre em Modelagem Matemática e Computacional. Aluna: Maria Amélia Lopes Silva Orientador: Prof. Dr. Sérgio Ricardo de Souza (CEFET/MG) Co-orientador: Prof. Dr. Henrique Elias Borges (CEFET/MG) Belo Horizonte, outubro de 2007. S586m SILVA, Maria Amélia Lopes 2007 Modelagem de uma Arquitetura Multiagente para a Solução, via Metaheurísticas, de Problemas de Otimização Combinatória. Belo Horizonte: CEFET-MG, 2007. 114p. Dissertação (Mestrado) Centro Federal de Educação Tecnológica de Minas Gerais CEFET/MG. 1. Computação. 2. Otimização combinatória. 3. MetaHeurística. 4. Pesquisa Operacional. I. Título. CDD: 004.0151 Às pessoas que são meus maiores exemplos de vida, meu pai e minha mãe, José Ivo e Nina. ii Agradecimentos Ao concluir este trabalho tenho a certeza de que é importante agradecer. Agradecer muito a todos que ajudaram e foram pacientes nos momentos difíceis e cansativos. Agradeço a Deus, por todas as oportunidades maravilhosas que coloca na minha vida. Ao meu orientador, Prof. Sérgio Ricardo de Souza, por ser mestre e amigo, obrigado pelo conhecimento transmitido e pelo incentivo constante. Ao meu co-orientador, Prof. Henrique Elias Borges, pela contribuição fundamental para o desenvolvimento do trabalho. Leonardo, obrigado pelo carinho, amizade, paciência e compreensão que nunca faltaram nos momentos de aflição. Agradeço aos meus queridos pais, pelo incentivo incondicional e por acreditarem que sou capaz de coisas que até mesmo eu não sei. Ao meu irmão e minhas maninhas, deixo a certeza de que valeu a tolerância nos momentos de minha impaciência e tensão. Foi porque sempre estivemos juntos que venci mais esta etapa. Amo vocês! À Sabrina, obrigado pelo suporte, amizade e sugestões para a realização do trabalho. Ao meu cunhadinho Gabriel, pelas idéias brilhantes que permitiram que grandes pepinos fossem resolvidos. Aos colegas de mestrado, que na verdade, hoje, são grandes amigos, agradeço pelo apoio, amizade e auxílio prestado. Agradeço à CAPES pelo apoio financeiro individual recebido. A todos vocês, meus sinceros agradecimentos. iii iv Resumo Este trabalho apresenta a Arquitetura Multiagente para Metaheurística, nomeada como AMAM. Esta arquitetura tem, como objetivo, combinar diversas metaheurísticas para a solução de problemas de otimização combinatória. Desta forma, na arquitetura proposta, cada metaheurística é projetada como um agente autônomo e interage em seu ambiente (espaço de busca do problema) de forma cooperativa. A interação de um ou mais agentes se dá através da troca de mensagens sobre o espaço de busca do problema, para melhor atingir um mesmo objetivo, podendo ser realizada a partir do envio e percepção de estímulos e por meio do ambiente. A AMAM é flexível o bastante para ser utilizada na solução de problemas de otimização combinatória de qualquer classe, sem que seja necessário reescrever os algoritmos, considerando que a simples troca do ambiente da arquitetura corresponde à troca de problema a ser tratado. Nesta arquitetura, novos agentes que implementam e encapsulam metaheurísticas específicas podem ser adicionados com o mínimo de impacto no restante da arquitetura. Desta forma, especializações da arquitetura foram desenvolvidas e testadas para solução do Problema de Roteamento de Veículos com Janela de Tempo. Os resultados obtidos nestes testes mostram a viabilidade da proposta apresentada, assim como confirmam a presença de características como flexibilidade, escalabilidade e encapsulamento. Palavras-Chave: Metaheurísticas, Sistemas Multiagente, Problemas de Otimização Combinatória. v Abstract This work introduces a Multiagent Architecture for Metaheuristic, denominated as AMAM. This architecture has as objective to combine several mataheuristics in order to obtain solutions for combinatorial optimization problems. Therefore, in the proposed architecture, each metaheuristic is projected as an autonomous agent and interacts at its environment (search space of the problem) in a cooperative way. The interaction between one or more agents is done through the interchange of messages from the search space of the problem, and seeks to the best way for achieving the same objective, able to be accomplished from the emission and perception of stimulous by the environment. The AMAM is flexible enough to be used in solutions for several class of combinatorial optimization problems, without the necessity of rewriting algorithms, considering that a simple change of the architecture environment corresponds to a problem change to be treat. At this architecture, new agents implement and encapsulate specific metaheuristics which can be added with the lowest possible impact in the remaining architecture. Thus, the architecture specializations were developed and tested for solutions of Vehicle Routing Problems with Time Windows. The obtained results show the viability of the proposal presented, and confirm the presence of characteristics such as flexibility, scalability and encapsulability. Keywords: Metaheuristic, Multiagent Systems, Combinatorial Optimization Problems. vi Sumário 1 Introdução 1.1 Aspectos Gerais . . . . . . . 1.2 Objetivos . . . . . . . . . . 1.2.1 Objetivo Geral . . . 1.2.2 Objetivos Específicos 1.3 Metodologia de Pesquisa . . 1.4 Estrutura da Dissertação . . . . . . . . . . . . . . 2 Sistemas Multiagentes 2.1 Introdução . . . . . . . . . . . . 2.2 Definições . . . . . . . . . . . . 2.2.1 Agentes . . . . . . . . . 2.2.2 Sistemas Multiagentes . 2.2.3 Agentes e Objetos . . . 2.3 Interações . . . . . . . . . . . . 2.4 Ambiente . . . . . . . . . . . . 2.5 Arquiteturas de Agentes . . . . 2.5.1 Arquitetura Deliberativa 2.5.2 Arquitetura Reativa . . 2.5.3 Arquitetura Híbrida . . 2.6 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Metaheurísticas para Otimização Combinatória 3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . 3.2 Conceitos Importantes . . . . . . . . . . . . . . . 3.3 Classificação . . . . . . . . . . . . . . . . . . . . . 3.4 Principais Metaheurísticas . . . . . . . . . . . . . 3.4.1 Métodos baseados em Um Único Ponto . . 3.4.2 Métodos Populacionais . . . . . . . . . . . 3.5 Considerações Finais . . . . . . . . . . . . . . . . 4 Trabalhos Correlatos 4.1 Introdução . . . . . . 4.2 Asynchronous Teams 4.3 AGENT-DOSS . . . 4.4 Coal-VRP . . . . . . 4.5 DyCoal-VRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 2 3 3 . . . . . . . . . . . . 5 5 6 6 8 10 12 13 16 16 17 17 17 . . . . . . . 19 19 19 21 23 23 28 29 . . . . . 30 30 30 32 33 34 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 Hiperheurísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metaheurísticas Cooperativas . . . . . . . . . . . . . . . . . . . . . . MAGMA (MultiAGent Metaheuristics Architecture) . . . . . . . . . . FGAS (Fine-Grained Agents System) . . . . . . . . . . . . . . . . . . MAA-VRPTW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Um Framework Orientado a Objeto para Busca Local . . . . . . . . . Um Framework Orientado a Objetos para Busca Local Multiobjetivo Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 35 36 39 39 41 43 45 5 Arquitetura Multiagente para Metaheurísticas 5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Aspectos desejáveis numa Arquitetura Multiagente para Otimização Combinatória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Estrutura Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Ambiente de Atuação . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Agentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Algumas Especializações da Arquitetura AMAM . . . . . . . . . . . . 5.4.1 Especialização da Arquitetura AMAM para a Metaheurística ACO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.2 Especialização da Arquitetura AMAM para a Metaheurística Algoritmos Genéticos . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Especialização da Arquitetura AMAM para a Metaheurística Simulated Annealing . . . . . . . . . . . . . . . . . . . . . . . 5.4.4 Instância da Arquitetura AMAM para a Metaheurística Busca Tabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.5 Especialização da Arquitetura AMAM para a Metaheurística GRASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.6 Especialização da Arquitetura AMAM para a Metaheurística VNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.7 Especilização da Arquitetura AMAM para a Metaheurística ILS 5.5 Modelagem UML aplicada à AMAM . . . . . . . . . . . . . . . . . . 5.6 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 46 6 Experimentos Computacionais 6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Problema de Roteamento de Veículos com Janela de Tempo 6.2.1 Modelagem do PRVJT . . . . . . . . . . . . . . . . . 6.2.2 Descrição dos Problemas-Teste . . . . . . . . . . . . . 6.3 Heurísticas e Metaheurísticas Utilizadas . . . . . . . . . . . 6.3.1 Heurística Construtiva . . . . . . . . . . . . . . . . . 6.3.2 Heurística de Busca Local . . . . . . . . . . . . . . . 6.3.3 Metaheurística Iterated Local Search . . . . . . . . . 6.3.4 Algoritmo Variable Neighborhood Search . . . . . . . 6.4 Experimentos com as especializações da Arquitetura AMAM 6.4.1 Especialização AMAM-ILS . . . . . . . . . . . . . . . 6.4.2 Especialização AMAM-VNS . . . . . . . . . . . . . . 6.4.3 Especialização AMAM-ILS-ILS . . . . . . . . . . . . 70 70 71 72 74 75 76 76 76 77 78 78 81 83 viii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 48 49 50 53 55 56 58 58 59 61 62 64 69 6.5 6.4.4 Especialização AMAM-VNS-VNS . . . . . . . . . . . . . . . . 86 6.4.5 Especialização AMAM-ILS-VNS . . . . . . . . . . . . . . . . . 89 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7 Conclusões Gerais e Trabalhos Futuros 93 7.1 Conclusões Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Referências 95 ix Lista de Tabelas 6.1 6.2 6.3 6.4 6.5 6.6 Informações dos problemas-teste de Solomon (Solomon, Soluções do AMAM-ILS para o PRVJT. . . . . . . . . Soluções do AMAM-VNS para o PRVJT. . . . . . . . . Soluções do AMAM-ILS-ILS para o PRVJT. . . . . . . Soluções do AMAM-VNS-VNS para o PRVJT. . . . . . Soluções do AMAM-ILS-VNS para o PRVJT. . . . . . x 1987). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 80 82 85 88 91 Lista de Figuras 2.1 2.2 2.3 Sistema Multiagente. Fonte: Wooldridge (2002). . . . . . . . . . . . . 10 Sistemas de software homogêneos são substituídos por uma coleção de simples agentes com tarefas específicas. . . . . . . . . . . . . . . . 11 Relação Agente/Ambiente. Fonte: Wooldridge (2002). . . . . . . . . . 15 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 Grafo que representa o espaço de busca e as relações entre as Ótimo Global e Ótimo Local no espaço de busca. . . . . . . Pseudocódigo Algoritmo de Busca Local. . . . . . . . . . . . Pseudocódigo Algoritmo Simulated Annealing. . . . . . . . . Funcionamento da Metaheurística Busca Tabu. . . . . . . . Pseudocódigo Algoritmo Busca Tabu. . . . . . . . . . . . . . Pseudocódigo Algoritmo GRASP. . . . . . . . . . . . . . . . Pseudocódigo Algoritmo VNS. . . . . . . . . . . . . . . . . . Funcionamento da Metaheurística ILS. . . . . . . . . . . . . Pseudocódigo Algoritmo ILS. . . . . . . . . . . . . . . . . . Pseudocódigo Algoritmo AG. . . . . . . . . . . . . . . . . . Pseudocódigo Algoritmo ACO. . . . . . . . . . . . . . . . . . 4.1 4.5 4.6 4.7 4.8 Asyncronous Teams: C1-C5 são agentes construtores; D1-D2 são agentes destrutores; e M1-M2 são memórias. Fonte: Talukdar e Souza (1990) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MAGMA - Arquitetura Multi-Níveis para metaheurísticas. Fonte: Milano e Roli (2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . Especialização da arquitetura MAGMA para GRASP. Fonte: Milano e Roli (2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Especialização da arquitetura MAGMA para ACO. Fonte: Milano e Roli (2004) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmo Multiagente para o PRVJT. Fonte: Leong e Liu (2006) . . Interações entre agentes em MAA-VRPTW. Fonte: Leong e Liu (2006) O Framework Buscador de Vizinhos. Fonte: Andreatta et al. (1998) . O Framework METHOOD. Fonte: Claro e Sousa (2001) . . . . . . . 38 40 41 42 44 5.1 5.2 5.3 5.4 5.5 5.6 Arquitetura Multiagente AMAM. . . . . . . . . . Modelo do Ambiente. . . . . . . . . . . . . . . . . Modelo do ambiente para o Problema da Mochila. Estrutura Interna dos Agentes de Busca. . . . . . Algoritmo para um Agente Construtor Básico. . . Algoritmo para um Agente de Busca Local básico. 48 49 50 53 54 55 4.2 4.3 4.4 xi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . soluções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 21 23 24 25 25 26 27 27 27 28 29 31 37 38 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17 5.18 5.19 5.20 5.21 5.22 5.23 5.24 5.25 5.26 5.27 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 Especialização da Arquitetura AMAM para a metaheurística ACO. . Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística ACO. . . . . . . . . . . . . . . . . . . . . . . . . . . . Especialização da Arquitetura AMAM para a metaheurística AG. . . Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística AG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Especialização da Arquitetura AMAM para a metaheurística SA. . . Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística SA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Especialização da Arquitetura AMAM para a metaheurística BT. . . Especialização da Arquitetura AMAM para a metaheurística BT. . . Especialização da Arquitetura AMAM para a metaheurística GRASP. Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística GRASP. . . . . . . . . . . . . . . . . . . . . . . . . . Especialização da Arquitetura AMAM para a metaheurística VNS. . Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística VNS. . . . . . . . . . . . . . . . . . . . . . . . . . . . Especialização da Arquitetura AMAM para a metaheurística ILS. . . Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística ILS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelagem simplificada da Arquitetura AMAM. . . . . . . . . . . . . Modelo Detalhado da Arquitetura AMAM. . . . . . . . . . . . . . . . Interações entre os agentes e o mediador. . . . . . . . . . . . . . . . . Padrão Estratégia na definição dos Agentes Construtores. . . . . . . . Padrão Estratégia na definição dos Agentes de Busca. . . . . . . . . . Padrão Estratégia na definição dos Agentes de Busca. . . . . . . . . . Padrão Fachada na definição de uma interface para os Agentes. . . . (A) grafo que representa o PRVJT e (B) grafo que representa uma solução para o PRVJT. . . . . . . . . . . . . . . . . . . . . . . . . . Problema de Roteamento de Veículos com Janela de Tempo. . . . . Instância C101. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instância R101. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instância RC101. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmo da Construção Gulosa baseada em Janela de Tempo. . . Algoritmo do Método de Descida. . . . . . . . . . . . . . . . . . . . Algoritmo do Método Iterated Local Search. . . . . . . . . . . . . . Algoritmo do Método VNS. . . . . . . . . . . . . . . . . . . . . . . AMAM-ILS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AMAM-VNS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AMAM-ILS-ILS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gráfico comparativo do desempenho entre as especializações AMAMILS e AMAM-ILS-ILS. . . . . . . . . . . . . . . . . . . . . . . . . . AMAM-VNS-VNS. . . . . . . . . . . . . . . . . . . . . . . . . . . . Gráfico comparativo do desempenho entre as especializações AMAMVNS e AMAM-VNS-VNS. . . . . . . . . . . . . . . . . . . . . . . . AMAM-ILS-VNS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii . . . . . . . . . . . . 55 56 57 57 58 59 59 60 60 61 61 62 63 63 65 66 67 67 68 68 68 71 73 74 75 75 76 77 77 77 79 81 83 . 84 . 86 . 87 . 89 6.17 Gráfico comparativo do desempenho entre as especializações AMAMILS, AMAM-VNS e AMAM-ILS-VNS. . . . . . . . . . . . . . . . . . 89 6.18 Gráfico comparativo do desempenho entre as especializações AMAMILS-ILS, AMAM-VNS-VNS e AMAM-ILS-VNS. . . . . . . . . . . . . 90 xiii Capítulo 1 Introdução 1.1 Aspectos Gerais Problemas de otimização combinatória são freqüentemente encontrados em diversas áreas, como aplicações industriais, processos logísticos, dentre outras. Estes problemas consistem na busca do melhor ajuste do valor de suas variáveis de modo a atender a um objetivo e satisfazer a um conjunto de restrições pré-definidas. Em parte dos casos, a solução destes problemas pode ser determinada através de métodos de programação matemática, como o método Branch-and-Bound (veja Bertsimas e Tsitsiklis (1997)), capazes de encontrar a solução ótima exata dessa classe de problemas. Grande parte dos Problemas de Otimização Combinatória é classificada, na literatura, como NP-difícil, para os quais ainda não existem algoritmos que os resolvam em tempo polinomial. Desta forma, os algoritmos exatos podem precisar de tempo computacional exponencial ou maior, no pior caso, para solucionar estes problemas, tornando o uso destes métodos bastante restrito. Tal dificuldade vem sendo em parte ultrapassada com a aplicação de técnicas heurísticas e metaheurísticas, que possibilitam a determinação de soluções factíveis sub-ótimas para uma enorme gama de problemas encontrados na vida prática. A principal dificuldade a ser vencida pelos métodos baseados em programação matemática reside na necessidade de uma busca exaustiva a ser realizada no espaço de soluções dos problemas objeto de interesse. Já os procedimentos heurísticos e metaheurísticos tentam ultrapassar essa questão, guiando a geração de soluções de modo a proporcionar uma solução de qualidade (avaliada segundo funções expressando os interesses de decisão postos) em um tempo computacional limitado. As metaheurísticas combinam, em sua ação, diferentes táticas e atuações, no intuito de buscar o melhor resultado para o problema sob análise. Essa ação pode se dar, contudo, através de sua formulação como sistemas de diversos agentes, atuando de forma cooperativa e competitiva. A evolução das redes de computadores permitiu a utilização de sistemas distribuídos na solução de problemas complexos. Esta complexidade é reduzida por meio da divisão do problema em subproblemas menores. A demanda por softwares cada vez mais adaptativos e inteligentes tem conduzido à incorporação de novas tecnologias no tratamento de diversos problemas, como por exemplo, a tecnologia baseada em agentes inteligentes. 1 1.2 Objetivos 2 Considerando que grande parte dos problemas de otimização combinatória são complexos e possuem características distribuídas, a abordagem baseada em agente distingue-se, no tratamento desta classe de problemas, pelo seu poder em modelar problemas de natureza distribuída e expressar, através das entidades do sistema, a complexidade das relações envolvidas. Sistemas multiagentes são sistemas compostos de múltiplos elementos computacionais, em constante interação, chamados agentes (Wooldridge, 2002). Nestes sistemas, a possibilidade de interação e cooperação entre os diversos agentes permite uma maior exploração do espaço de busca, já que cada agente possui uma “esfera de influência” diferente e trocam informações sobre elas. Este trabalho pretende combinar diversas metaheurísticas através da abordagem multiagente e, desta forma, explorar a atuação cooperativa, existente em um ambiente multiagente, para melhor conhecer as características do espaço de busca e obter “boas” soluções para o problema. Adicionalmente, a flexibilidade de uma arquitetura multiagente possibilita que novos agentes (no caso deste trabalho, as metaheurísticas) sejam facilmente incorporados. Assim, esta abordagem também diminui o esforço empregado no desenvolvimento de metaheurísticas híbridas, que demonstram melhor desempenho na solução de problemas. 1.2 1.2.1 Objetivos Objetivo Geral O objetivo geral deste trabalho é a modelagem de uma arquitetura multiagente para a solução, via metaheurísticas, de problemas de otimização combinatória. Na arquitetura, nomeada como AMAM, cada metaheurística é definida como um agente de busca, que atua na exploração do espaço de busca. O ambiente, no qual os agentes atuam, é parte integrante da arquitetura e corresponde ao espaço de busca do problema em questão. Os agentes possuem capacidade de comunicação entre si e com o seu ambiente. A partir das possibilidades de comunicação, o comportamento dos agentes tende a atingir um objetivo comum (solução ótima) de forma cooperativa. A arquitetura AMAM propõe uma estrutura geral (framework ), onde as diversas metaheurísticas existentes podem ser facilmente adicionadas, como agentes, e utilizadas na solução dos diferentes tipos de problemas de otimização combinatória. 1.2.2 Objetivos Específicos Para que este objetivo geral seja alcançado é necessário atingir os seguintes objetivos específicos: (i) Conhecimento da literatura relevante associada aos principais temas envolvidos no trabalho, qual seja, metodologias multiagentes usadas na solução de problemas de otimização combinatória; projeto e implementação de sistemas multiagentes; 1.4 Metodologia de Pesquisa 3 (ii) Estudo e implementação computacional das principais técnicas heurísticas e metaheurísticas existentes; (iii) Definição e modelamento dos elementos de uma arquitetura multiagente para a solução de problemas de otimização combinatória; (iv) Desenvolvimento de especializações da arquitetura para problemas de otimização combinatória, que serão utilizadas para teste e validação da Arquitetura proposta. 1.3 Metodologia de Pesquisa Para o desenvolvimento deste trabalho e a definição da arquitetura AMAM é preciso, inicialmente, identificar e determinar seus componentes. Neste sentido, as principais propostas de arquiteturas de software baseadas em agentes devem ser analisadas para fornecer fundamentos e técnicas adequadas para a elaboração de sistemas multiagentes. O projeto da arquitetura AMAM deve incluir: as características das partes que irão compor a arquitetura, como elas interagem e onde estas interações ocorrem. Uma revisão de literatura, relacionada a metaheurísticas, permitirá a identificação das semelhanças entre os diversos métodos, possibilitando a modelagem dos agentes de busca que farão parte da arquitetura proposta. Em conjunto com a revisão das principais metaheurísticas, para a modelagem dos agentes serão examinadas as definições relacionadas à arquitetura de agentes de softwares: classificações de agentes, mapeamento de percepções e ações, entre outras características que devem ser consideradas para a correta aplicação do termo agente. Após a modelagem da arquitetura AMAM, especializações da mesma serão desenvolvidas com o objetivo de analisar seu adequado funcionamento na solução de diferentes problemas de otimização e a flexibilidade da arquitetura, através da adição de novos agentes (metaheurísticas) com o mínimo de impacto. Na implementação destas aplicações, será utilizada a linguagem Java, empregando a plataforma Eclipse. Por especializações, é entendido neste trabalho como o desenvolvimento de algumas metaheurísticas, ou seja, partes do framework proposto, bem como partes do seu processo de comunicação. Isso porque, não é escopo deste trabalho a implementação do framework completo, apenas a sua proposta e modelagem. A análise dos resultados obtidos nos testes destas especializações permitirá a avaliação do desempenho da arquitetura e sua possível validação. 1.4 Estrutura da Dissertação O presente trabalho está organizado da seguinte forma: no capítulo 2, uma revisão de literatura em relação a sistemas multiagentes é apresentada, buscando introduzir os principais conceitos envolvidos; o capítulo 3 descreve conceitos importantes ligados à metaheurísticas, assim como as principais metaheurísticas conhecidas e suas formas de classificação; o capítulo 4 discute trabalhos que utilizam as abordagens multiagente e orientada a objetos no tratamento de metaheurísticas; no 1.4 Estrutura da Dissertação 4 capítulo 5 é apresentada a arquitetura AMAM proposta, assim como os elementos que a compõem e as formas de interação existentes entre eles; o capítulo 6 apresenta algumas especializações da arquitetura AMAM para o Problema de Roteamento de Veículo com Janela de Tempo, com resultados obtidos nos testes destas especializações. Por fim, o capítulo 7 apresenta as conclusões do trabalho e as perspectivas de trabalhos futuros. Capítulo 2 Sistemas Multiagentes 2.1 Introdução A Inteligência Artificial (IA) é uma área de conhecimento que utiliza o comportamento individual humano como modelo para desenvolver sistemas inteligentes. Na metade da década de 1970, a formulação de Inteligência Artificial Distribuída (IAD) é apresentada como uma sub-área da Inteligência Artificial. A IAD se baseia no comportamento social para o desenvolvimento de projeto de sistemas, dando ênfase em ações e interações sociais. Desde o seu surgimento, a IAD tem evoluído e se diversificado rapidamente, apresentando aplicações que abrangem diferentes áreas. Uma das principais razões para a utilização da Inteligência Artificial Distribuída no desenvolvimento de sistemas está na possibilidade de se resolver problemas complexos, que envolvam um maior número de variáveis e até mesmo recursos fisicamente distribuídos. Ao mesmo tempo que a quantidade de informação a ser tratada cresce continuamente e as aplicações envolvendo tomada de decisão são cada vez mais necessárias (e.g., sondas, buscadores de internet, robótica). Neste sentido, para evitar as dificuldades em manter consistência em grandes projetos de software, existe uma tendência em decompor sistemas em componentes menores que podem ser compreendidos de forma independentes. A IAD é dividida em duas áreas: Solução Distribuída de Problemas (SDP) e Sistemas MultiAgentes (SMA). A SDP busca solucionar um problema específico, dividindo-o em muitos módulos que cooperam interagindo e trocando conhecimentos sobre o problema e sua solução. A área de Sistemas MultiAgentes estuda como coordenar o comportamento de uma sociedade de agentes autônomos para resolver um determinado problema. Desta forma, contrapondo à SDP, que tem seu foco no problema, os Sistemas MultiAgentes se concentram nos agentes. A tecnologia de agentes é um paradigma de software apropriado à exploração das possibilidades apresentadas em grandes sistemas distribuídos abertos - como, por exemplo, a Internet. Assim, o objetivo deste capítulo é introduzir os principais tópicos relacionados a sistemas de multiagentes que serão úteis no decorrer deste trabalho, assim como, procurar responder a questões como: (i) Por que acredita-se que agentes são uma nova e importante forma de concepção 5 2.2 Definições 6 e implementação de sistemas computacionais? (ii) O que são agentes? (iii) Quais são as principais abordagens que têm sido utilizadas na implementação de agente? Quais os méritos e desafios enfrentados? (iv) Quais são os componentes básicos de um sistema multiagente? 2.2 Definições Diversas técnicas de solução de problemas têm sido desenvolvidas utilizando os conceitos de Inteligência Artificial (IA). Dentre estes, pode-se destacar métodos heurísticos e metaheurísticos (Blum e Roli, 2003), algoritmos evolutivos (Bäck, 1996), redes neurais (Bleale e Jackson, 1990), sistemas fuzzy (Driankov et al., 1990), entre outros. Entretanto, com o surgimento das redes de computadores e seu crescimento, questões relacionadas aos processos de interação e de comunicação entre os sistemas computacionais foram levantadas. Adicionalmente, a complexidade das tarefas que são automatizadas e delegadas aos computadores cresce continuamente. Fatores como estes motivaram o nascimento, ainda na década de 70, da Inteligência Artificial Distribuída (IAD), que envolve a solução de problemas nos quais as características distribuídas são inerentes. É neste contexto que surgem os agentes e sistemas multiagentes e se tornam uma importante forma de lidar com uma quantidade cada vez maior de informações e dados. Nesta seção, alguns conceitos básicos em sistemas multiagentes são apresentados. 2.2.1 Agentes Como em outros sistemas inspirados na natureza, a IA se baseia no comportamento individual do ser humano para projetar sistemas computacionais que buscam desempenhar atividades como: pensar, raciocinar, tomar decisões, planejar, perceber, comunicar e aprender. O termo agente é usado para nomear estes tipos de sistemas. Há pouca concordância na literatura a respeito do termo agente, isto porque, para diferentes domínios, existem diferentes níveis de relevância e pertinência em cada uma das propriedades relacionadas com agentes. Em Wooldridge (2002) é proposta a seguinte definição para o termo agente: “Um agente é um sistema de computador que é situado em um ambiente, e é capaz de ação autônoma neste ambiente para conhecer seus objetivos de projeto.” Já segundo Russell e Norvig (1995), o mesmo termo pode ser visto como: “Um agente é uma entidade que pode perceber seu ambiente através de sensores (ou sistemas de percepção) e atuar sobre ele por intermédio de seus mecanismos de atuação (ou sistemas de atuação, atuadores). Para 2.2 Definições 7 isso dispõe de uma representação parcial deste ambiente, podendo, em um universo multiagente, comunicar-se com outros agentes. O comportamento global do agente ou da comunidade de agentes é conseqüência de suas percepções e conhecimentos, bem como das iterações realizadas.” No contexto de métodos metaheurísticos, uma definição, apresentada por Milano e Roli (2004), que se enquadra aos interesses deste trabalho é apresentada: “Um agente pode ser entendido como um sistema capaz de construir uma solução, mover em um espaço de busca, comunicar com outros agentes, ser ativo e possívelmente adaptativo.” Adicionalmente, para fins deste trabalho, é importante destacar que o agente deve ser capaz de perceber os atributos do ambiente em que está situado, como já apresentado por Russell e Norvig (1995), em sua definição. A partir das definições apresentadas, é possível identificar propriedades que são fundamentais na distinção entre agente e outros sistemas computacionais. De acordo com Wooldridge e Jennings (1995), de uma forma mais geral, as principais propriedades de um agente são: (i). Autonomia: característica que permite ao agente atingir seu objetivo sem intervenções ou comandos do ambiente, ou seja, o agente é capaz de agir sozinho. Assim, o agente possui algum tipo de controle sobre suas ações e seu estado interno. (ii). Habilidade social: o agente interage com outros agentes (e possivelmente humanos) através de algum tipo de linguagem de comunicação. (iii). Reatividade: é a habilidade que o agente possui de reagir apropriadamente às influências ou informações de seu ambiente. O agente percebe o ambiente, (que pode ser o mundo físico, um usuário via uma interface gráfica, uma coleção de agentes, entre outros), e responde em tempo oportuno às mudanças ocorridas nele. (iv). Pro-atividade: o agente não apenas reage a mudanças ambientais, mas toma iniciativa sobre circunstâncias específicas. Para que esta habilidade seja alcançada, é preciso que o agente seja orientado a metas, ou seja, possua objetivos bem definidos. Entretanto, outras características consideradas importantes são destacadas por vários autores, como Nwana (1996), Lesser (1999), dentre outros. São elas: (v). Raciocínio/Aprendizado: a inteligência de um agente é formada principalmente por três fatores: (1) base de conhecimento; (2) capacidade de raciocínio baseado no conteúdo da base de conhecimento; e (3) habilidade de aprender e/ou adaptar-se a mudanças do ambiente. Entretanto, a presença dos três fatores em conjunto não é essencial. (vi). Mobilidade: é a habilidade do agente de se mover e ser executado em outras plataformas. 2.2 Definições 8 (vii). Cooperação: é a habilidade de comunicação com outros agentes, para atingir um mesmo objetivo conjuntamente. Um sistema multiagente, assim, é composto por um conjunto de agentes em um ambiente, cada um com uma função específica, e um conjunto de objetivos a serem alcançados. (viii). Personalidade: capacidade do agente de personificar-se, utilizando recursos que emulem aqueles de seres humanos. (ix). Adaptabilidade: propriedade amplamente relacionado com a autonomia. Quanto mais autônomo uma agente é, mais adaptável ele será ao contexto de solução do problema. A importância dada a cada uma dessas características depende, como já foi dito, do interesse de cada domínio. Um bom exemplo para esta afirmativa está na propriedade de mobilidade, que é de extrema relevância no que diz respeito a sistemas de agentes situados em uma rede e que precisam se mover através dela ou, até mesmo, um sistema de agentes projetado em um ambiente complexo, que possui, como característica essencial, o aprendizado. Lesser (1999) afirma, ainda, que os agentes podem ser caracterizados como sendo benevolentes (cooperativos) ou auto-interessados. Agentes benevolentes trabalham para atingir um objetivo comum, enquanto agentes auto-interessados têm objetivos distintos, embora possam interagir para avançar segundo o seu próprio objetivo. As propriedades descritas acima podem ser divididas em dois tipos: as propriedades internas e as propriedades externas de um agente. As propriedades internas são aquelas que formam o estado interno do agente, ou seja, o aprendizado, a reatividade, a autonomia e a orientação a metas. As propriedades externas são aquelas que afetam a interação entre os diversos agentes (cooperação) ou a comunicação dos agentes. O agente possui um conjunto de ações disponíveis, que representam a sua habilidade em atuar e modificar o seu ambiente. Além disso, pré-condições são relacionadas com cada ação, definindo quando elas podem ser usadas. O agente deve escolher qual a melhor ação a ser executada, ou seja, qual ação o aproxima mais do seu objetivo. O agente pode possuir, também, algum tipo de estrutura de dados interna (estado interno) que armazene informações sobre o estado do ambiente e sua história. Este estado interno pode ser definido como o conhecimento do agente e é utilizado também no processo de tomada de decisão. Baseado nas interações com o ambiente e com os outros agentes do sistema, o agente é capaz de atualizar o seu estado interno, atualizando o seu conhecimento do ambiente. 2.2.2 Sistemas Multiagentes A Inteligência Artificial Distribuída é uma subárea da IA que estuda a utilização de uma sociedade de agentes na solução de um único problema através da divisão deste em problemas menores. A solução de problemas, a partir da IAD, é baseada no comportamento do homem em sociedade e suas interações. Uma definição apropriada para Sistemas MultiAgentes, apresentada em Lesser (1999), diz que: 2.2 Definições 9 “Sistemas multiagentes são sistemas computacionais em que dois ou mais agentes interagem ou trabalham juntos para desempenhar um conjunto de tarefas ou satisfazer um conjunto de objetivos.” Da mesma forma, Wooldridge (2002) afirma que um conjunto de agentes autônomos em um ambiente caracteriza um sistema multiagente. Assim, ainda segundo este mesmo autor, um sistema multiagente é composto por agentes em um ambiente, cada um com uma função específica, e um conjunto de objetivos a serem alcançados. A soma das habilidades de cada um dos agentes possibilita a solução do problema e a constante interação entres os agentes define o comportamento global do sistema. Sistemas complexos, por possuírem componentes heterogêneos com vários tipos de dependências ou de natureza distribuída, constituem potenciais aplicações para Sistemas Multiagentes. Algumas das áreas que utilizam tipicamente a abordagem multiagente são: e-commerce, controle aéreo, gerenciamento de sistemas industriais, desenvolvimento de jogos, robótica, sistemas de informação, dentre outras. A educação é uma área em que a tecnologia de agentes tem sido amplamente usada. Diversos ambientes educacionais e sistemas tutores inteligentes buscam auxiliar no ensino-aprendizagem, oferecendo ambientes dinâmicos e recursos que facilitam a interação do estudante. O MathTutor é um sistema tutor inteligente proposto em Frigo et al. (2004) e utiliza as técnicas de Sistemas Multiagentes, visando o acompanhamento da aprendizagem do estudante num dado domínio. Este sistema multiagente modela o conhecimento do estudante sobre um determinado assunto à medida que ele interage com o sistema, comparando este conhecimento com o modelo do especialista do domínio. Sistemas multiagentes são, também, freqüentemente utilizados no desenvolvimento de jogos. Um exemplo da utilização de agentes em jogos é apresentado em Machado et al. (2004), no qual jogos de RPG (jogos de interpretação de personagem) são desenvolvidos, buscando uma maior interatividade através da abordagem multiagente. Vários trabalhos têm utilizado a abordagem de agentes para a solução de problemas de otimização a partir de métodos metaheurísticos, como é o caso do presente trabalho. Estes trabalhos serão descritos com maiores detalhes no capítulo 4. Moulin e Chaib-draa (1996) descrevem algumas vantagens significativas dos Sistemas Multiagentes em relação aos solucionadores de problemas monolíticos. Dentre as citadas nesta referência, destacam-se as seguintes: - maior rapidez na resolução de problemas através dos aproveitamento do paralelismo; - diminuição da comunicação por transmitir somente soluções parciais em alto nível para outros agentes ao invés de dados brutos para um lugar central; - mais flexibilidade por ter agentes com diferentes habilidades que são dinamicamente agrupados para resolver problemas; e - aumento da segurança pela possibilidade de agentes assumirem responsabilidades de outros agentes que falham. 2.2 Definições 10 Adicionalmente, em um ambiente multiagente, cada agente possui sua “esfera de influência”, ou seja, um agente tem visibilidade e acesso a apenas uma região do ambiente, conforme apresentado na Figura 2.1. Desta forma, um dos principais objetivos da utilização de sistemas multiagentes na solução de problemas é explorar a capacidade dos agentes em controlar em diferentes partes do ambiente, obtendo, assim, um maior conhecimento do mesmo. Isto acontece porque, através da troca de informações entre os agentes, estes obtêm acesso a dados que, caso estivessem trabalhando sozinhos, estariam fora do seu alcance. Um bom exemplo do limite de influência de um agente em seu ambiente pode ser descrito a partir da utilização da abordagem multiagente no projeto de métodos metaheurísticos, como apresentado neste trabalho. Cada metaheurística possui sua função de vizinhança (ou mais de uma, em alguns casos), que define a sua possibilidade de atuação sobre o espaço de busca do problema a ser tratado. Assim, esta atuação está limitada à parte do espaço de busca a qual a função de vizinhança consegue acessar, ou seja, quais possíveis soluções para o problema podem ser geradas a partir dela. Ambiente Legenda: esferas de influência relações organizacionais interações agente Figura 2.1: Sistema Multiagente. Fonte: Wooldridge (2002). 2.2.3 Agentes e Objetos A tecnologia de agentes provoca uma revolução no desenvolvimento de software. Desta forma, a Figura 2.2 mostra como a tecnologia agente muda a forma como o software é estruturado em relação à tecnologia convencional. Na tecnologia convencional, o software é construído como camadas de abstração, enquanto que os sistemas agentes são formados por muitos programas independentes construídos com base no modelo de tarefas. O modelo de desenvolvimento da tecnologia convencional 2.3 Definições 11 apresenta alguns problemas, como, principalmente, o crescimento, proporcional ao número de funcionalidades do sistema e interações de usuários, da complexidade de construção da interface entre as diferentes camadas (já que cada uma delas representa um nível de abstração diferente). Sistema de Informação Aplicações Linguagem de Alto-Nível Sistema Operacional Gerenciamento de Recursos Modelo de Tarefas Modelo Modelo de de Tarefas Tarefas Compor- Compor- Comportamento tamento tamento Modelo de Tarefas Comportamento Gerenciamento de Recursos Figura 2.2: Sistemas de software homogêneos são substituídos por uma coleção de simples agentes com tarefas específicas. Neste sentido, a tecnologia de agentes possibilita a diminuição da complexidade de desenvolvimento de grandes sistemas, pois cada cada agente pode ser estruturado de forma independente e novas funcionalidade podem ser acrescentadas a partir da adição de novos agentes, sem que a complexidade de cada agente individual ou de sua interface seja influenciada. Vários autores, como Wooldridge e Jennings (1995), apresentam questões relacionadas às similaridades e às diferenças entre agentes e objetos, assim como destacam a importância de se identificar estas diferenças, que são significativas. Wooldridge e Jennings (1995) apresentam a seguinte definição para objeto: “Objetos são entidades computacionais que encapsulam algum estado, são capazes de desempenhar ações, ou métodos sobre este estado, e se comunicam por meio de transferência de mensagens”. Estes mesmos autores descrevem três diferenças fundamentais entre agentes e objetos. Estas diferenças são sumarizadas a seguir: (i). Grau de autonomia existente em agentes e objetos: no caso orientado-aobjetos, a decisão de executar determinado método, quando isto for solicitado por outro objeto, não é do objeto que possui o método, mas, sim, daquele que faz a chamada, ou seja, o objeto não possui controle sobre o seu comportamento. No caso de agentes, a decisão de realizar ou não uma certa tarefa solicitada, está com o agente que recebe a requisição. (ii). Comportamento autônomo flexível (reatividade, pro-atividade, habilidade social): o modelo de objetos não tem nada a dizer sobre como construir sistemas que integrem este tipo de comportamento, presente no modelo de agentes. (iii). Número de threads envolvidas: um sistema multiagente é inerentemente multithreads, já que cada agente é assumido como tendo ao menos uma thread de controle. No modelo padrão de objetos, existe, em geral, uma simples thread de controle no sistema. 2.3 2.3 Interações 12 Interações A interação é um dos elementos mais importantes em um sistema multiagente e acontece através das trocas de informação que podem ocorrer entre os agentes. Lesser (1999) apresenta duas situações básicas que determinam como as relações (interações) surgem naturalmente com a decomposição de um problema em subproblemas. A primeira situação é aquela na qual os subproblemas são os mesmos ou estão sobrepostos, embora diferentes agentes tenham métodos ou dados alternativos que podem ser usados para gerar uma solução. A segunda forma de interdependência ocorre quando dois subproblemas são partes de um problema maior, e a solução para este problema maior requer que certas restrições existam na solução dos seus subproblemas. Desta forma, o protocolo de comunicação para o sistema multiagente é o primeiro passo para que agentes possam trocar e compreender mensagens enviadas por outros agentes. Através da comunicação, os agentes buscam coordenar suas ações e seus comportamentos, para melhor atingir seus próprios objetivos ou os objetivos da sociedade de agentes. Em um sistema multiagente, é do interesse de cada um dos agentes integrantes que todos sejam capazes de participar de uma conversação. Neste sentido, os protocolos de comunicação são definidos para permitirem o entendimento de uma mensagem, considerando três aspectos básicos (Weiss, 2000): (i) sintaxe (ou seja, como os símbolos de comunicação são estruturados); (ii) semântica (o que os símbolos conotam); e (iii) pragmática (como os símbolos são interpretados). O significado da mensagem é a combinação de semântica e pragmática. Um exemplo conhecido de protocolo de comunicação é o Knowledge Query and Manipulation Language - KQML (Linguagem de manipulação e Consulta ao Conhecimento). O protocolo KQML é um protocolo para a troca de informação e conhecimento (Weiss, 2000), sendo que sua estratégia é incluir, na própria comunicação, toda a informação necessária para a compreensão do conteúdo da mensagem. Outra estrutura típica de comunicação, de Quadro-Negro (Blackboard ), é um exemplo de forma de comunicação em sistemas multiagente. Nesta abordagem, uma espécie de repositório (Quadro-Negro), no qual os agentes podem ler e escrever mensagens, é usado como meio de interação. Desta forma, este repositório define uma memória “comunitária” (compartilhada) de dados, soluções parciais, alternativas ou finais, e informações de controle. Assim, como o repositório normalmente é parte integrante do ambiente, este pode ser utilizado como mediador de comunicação, já que, através do repositório, os agentes podem inserir e retirar informações. Uma revisão de sistemas de quadro-negro é apresentada por Corkill (1991). Já os protocolos de interação permitem que, através do trabalho em conjunto, agentes estabeleçam uma conversação. Estes agentes, no entanto, podem possuir objetivos conflitantes ou, até mesmo, compartilharem objetivos comuns. Desta forma, pode ser necessário a existência de uma coordenação das atividades dos agentes durante a solução do problema, buscando manter a coesão do sistema. Segundo Weiss (2000), a cooperação é a coordenação entre agentes aliados, enquanto a negociação é a coordenação entre agentes competitivos e simplesmente auto-interessados. Uma das possibilidades de interação é a cooperação entre os agentes, que permite 2.4 Ambiente 13 a realização de alguma ação de troca entre dois ou mais agentes que estejam tentando atingir conjuntamente um mesmo objetivo. A organização determina estruturas hierárquicas e diretrizes para que os agentes possam atingir um objetivo comum. Assim, uma sociedade de agentes pode se organizar de diferentes formas, como, por exemplo, em uma relação Mestre-Escravo, em que existem gerentes (mestres), que coordenam e distribuem as tarefas, e trabalhadores (escravos), que as realizam, ou ainda, em uma relação de Mecanismos de Mercado, em que todos os agentes estão em um mesmo nível e conhecem as tarefas que cada agente é capaz de desempenhar (Ferreira, 2002). A interação em um sistema multiagente, do ponto de vista das teorias cognitivas contemporâneas, considerando a formulação de Agentes de Software Cognitivos e Situados (Santos, 2003), é realizada por meio de atuadores e sensores que possibilitam estimular o ambiente e ser estimulado por este. Desta forma, o agente percebe o mundo dinamicamente, à medida que com ele interagem. Segundo Santos (2003), os sensores e atuadores são responsáveis pelo comportamento do agente e por possibilitar a interação com o ambiente e com outros agentes. Estes componentes determinam o domínio das relações e interações do agente. Segundo ainda este mesmo autor, os componentes sensores e atuadores são específicos para sentirem determinados tipos de estímulos do ambiente. 2.4 Ambiente Esta seção tem o objetivo de ressaltar a importância do ambiente para um sistema multiagente, assim como destacar a relevância que tem sido dada a este elemento em trabalhos recentes associados a este tema. Assim, Platon et al. (2007), Valckenaers et al. (2007), Weyns et al. (2007), Henderson-Sellers e P. Giorgini (2005), apresentam o ambiente como uma parte explícita e essencial aos sistemas multiagente, opondo-se à idéia do ambiente como externo ao sistema. Estes mesmos autores consideram o ambiente, no desenvolvimento de sistemas multiagentes, como uma abstração primária durante as fases de análise e projeto. Assim, o ambiente deixa de ser o “mundo externo” do sistema multiagente, para ser um componente ativo dentro deste, possuindo responsabilidades específicas, que se diferem das responsabilidades dos agentes; mediando interações e o acesso a recursos; possibilitando percepções; e gerenciando mudanças de estados. Várias definições de ambiente, no contexto de sistemas multiagente, podem ser encontradas na literatura, sendo que cada uma destas definições demonstra uma caráter subjetivo e apresenta papéis diferentes para o ambiente. Cinco destas definições são consideradas mais relevantes à luz dos interesses desse trabalho. A primeira delas é devida a Russell e Norvig (1995), que define ambiente como um “programa de ambiente genérico”. Segundo os autores, este programa permite aos agentes perceberem o ambiente e as respostas deste em relação às suas ações. Desta forma, a partir das ações do agente, o programa atualiza o estado do ambiente e possibilita outros processos dinâmicos. A segunda definição advém de Parunak (1997). Nesse caso, o ambiente é definido como uma tupla <Estado, Processo>, em que: 2.4 Ambiente 14 - Estado: é o conjunto de valores que define completamente o ambiente, incluindo os agentes e objetos dentro dele. - Processo: indica que o ambiente por si mesmo é uma entidade ativa, ou seja, seus próprios processos podem mudar seu estado, independente das ações dos agentes. Uma terceira definição é apresentada em Demazeau (2003), propondo que um sistema de agentes possui quatro blocos de construção essenciais: (i). os agentes, ou seja, as entidades dos processos; (ii). as interações, ou melhor, os elementos para estruturar as interações internas entre as entidades; (iii). as organizações, representadas pelos elementos para estruturar conjuntos de entidades dentro do SMA; (iv). e, finalmente, o ambiente, qual seja, os elementos dependentes do domínio, que estruturam as interações externas entre as entidades. Segundo Odell et al. (2003), apresentada aqui como a quarta definição de interesse, “o ambiente fornece as condições sob as quais uma entidade (agente ou objeto) existe”. Desta forma, estes autores distinguem o ambiente em duas partes: o ambiente físico, que fornece as leis, regras, restrições e políticas que governam e suportam a existência física das entidades, e o ambiente de comunicação, que fornece os princípios e os processos que governam e suportam as trocas de informação, assim como as funções e estruturas, que são empregadas na comunicação. Por fim, a quinta e última é devida a de Weyns et al. (2007). Para eles “o ambiente é uma abstração de primeira classe que fornece as condições ambientais para os agentes existirem e que media as interações entre os agentes e o acesso a recursos”. Assim, segundo Weyns et al. (2007), a afirmação de que o ambiente é uma abstração primária acentua o fato de que o ambiente é um bloco de construção independente do restante do SMA, que encapsula suas próprias responsabilidades definidas. Da mesma forma, esta definição salienta que o ambiente é parte essencial de todo SMA, atuando ativamente, através da mediação e do gerenciamento de recursos. É importante ressaltar que esta última definição é a mais adequada aos objetivos pretendidos pelo presente trabalho, que tem o ambiente como um dos principais componentes da arquitetura proposta. Desse modo, segundo o entendimento aqui adotado, o ambiente inclui todos os elementos não-agentes do sistema multiagente, tais como, bases de dados, serviços web, infraestrutura de comunicação e topologia de um domínio espacial (Weyns et al., 2007). As interações entre agente e ambiente interferem de forma indireta na atuação do agente. As percepções do agente dependem de dois fatores: a capacidade dos sensores de entrada e o tipo de ambiente em que este está inserido. Russell e Norvig (1995) sugere a seguinte classificação das propriedades do ambiente: 2.4 Ambiente 15 • Acessível × Inacessível: um ambiente acessível é aquele em que o agente pode obter informações completas, acuradas e atualizadas sobre o estado do ambiente. A maioria dos ambientes do mundo real (incluindo, por exemplo, o mundo físico cotidiano e a internet) não é acessível neste sentido. • Determinístico × Não-Determinístico: um ambiente determinístico é aquele em que qualquer ação tem um efeito simples garantido - não há nenhuma incerteza sobre qual será o resultado da execução de uma determinada ação. Por outro lado, o não-determinismo captura o fato de que o agente tem uma “esfera de influência” limitada e que suas ações podem falhar, não obtendo o efeito desejado. • Estático × Dinâmico: um ambiente estático é aquele que permanece inalterado, exceto pela execução de ações do agente. Em contraste, um ambiente dinâmico é aquele que tem outros processos operando sobre ele, e que, portanto, se altera por si só, independente do controle do agente. O mundo físico é um ambiente altamente dinâmico, como o é também a internet. • Discreto × Contínuo: um ambiente é discreto se existe um número fixo e finito de ações e percepções nele. Em um ambiente contínuo, existem incontáveis estados. A figura 2.3 apresenta uma visão da relação entre agente e ambiente. O agente obtém entradas sensórias do ambiente e produz, como saída, ações que afetam o ambiente. AGENTE Sensor de Entrada Ação de Saída AMBIENTE Figura 2.3: Relação Agente/Ambiente. Fonte: Wooldridge (2002). Desta forma, identificar e modelar o ambiente envolve determinar todas as entidades e recursos que o SMA pode explorar, controlar, ou consumir quando está trabalhando para a realização do objetivo organizacional (Henderson-Sellers e P. Giorgini, 2005). Neste mesmo sentido, ainda segundo Henderson-Sellers e P. Giorgini (2005), algumas questões fundamentais que devem ser consideradas na fase de modelagem do ambiente são: (a). Avaliar os recursos ambientais que o agente pode efetivamente acessar; (b). Avaliar como os agentes devem perceber o ambiente, isto é, que representação do ambiente é apropriada em uma dada situação; (c). Avaliar o que deve ser de fato parte do ambiente. 2.5 Arquiteturas de Agentes 16 As responsabilidades centrais do ambiente são relacionadas em Weyns et al. (2005), e descritas a seguir: (i). O ambiente estrutura o Sistema Multiagente: o ambiente é um espaço compartilhado pelos agentes, recursos e serviços, os quais estruturam o sistema. Três formas de estruturação são definidas: estrutura física (espacial, topologia), estrutura de comunicação (protocolos, entre outros) e estrutura social (organização). (ii). O ambiente embute recursos e serviços: recursos e serviços são tipicamente situados em uma estrutura física. O ambiente deve fornecer uma interface com o nível de recursos e serviços. (iii). O ambiente pode manter processos dinâmicos: além da atividade do agente, o ambiente pode manter processos próprios, independentes do agente. (iv). O ambiente é localmente observável pelo agente: a observação de uma estrutura é tipicamente limitada ao contexto atual no qual o agente se encontra. Em geral, os agentes deve ser capazes de inspecionar o ambiente de acordo com suas tarefas correntes. (v). O ambiente é localmente acessível ao agente: os agentes devem poder acessar as diferentes estruturas do ambiente, bem como seus recursos, serviços e possíveis estados externos dos outros agentes. Assim como a observação, o acesso às estruturas é limitado ao contexto atual no qual o agente se encontra. (vi). O ambiente pode definir regras para o sistema multiagente: regras podem refletir as restrições impostas pelo domínio (como, por exemplo, mobilidade na rede), ou as leis impostas pelo projetista (exemplo, limitações de acessos a nós da rede). Elas podem restringir, também, o acesso a recursos ou serviços, ou até determinar o resultado das interações dos agentes. 2.5 Arquiteturas de Agentes A questão tratada nesta seção envolve a parte prática da construção de sistemas de computadores que possuem as características de um sistema de agentes. Segundo Ferreira (2002), uma arquitetura representa o projeto global, ou seja, a solução computacional ao problema identificado. Desta forma, o objetivo da arquitetura é mostrar quais as principais propriedades das partes que compõem o sistema e como estas interagem. Wooldridge e Jennings (1995) apresentam uma revisão das diversas abordagens relacionadas às arquiteturas de agentes. Estas abordagem são resumidas a seguir. 2.5.1 Arquitetura Deliberativa Uma definição para o termo agente deliberativo ou arquitetura agente deliberativa, segundo Wooldridge e Jennings (1995), inclui agentes que possuem uma representação explícita, um modelo simbólico do mundo, no qual as decisões são 2.6 Considerações Finais 17 tomadas via raciocínio lógico, baseado em combinação de padrões e manipulação simbólica. Entretanto, esta abordagem apresenta algumas desvantagens, relacionadas ao modelo simbólico que a compõe. Este modelo deve ser definido em uma forma na qual realmente represente as informações e entidades do problema em questão, assim como definir agentes que consigam inferir sobre estas informações. Dada a complexidade dos problemas tratados, as desvantagens apresentadas têm levado alguns pesquisadores a explorarem técnicas alternativas na construção de agentes. Estas técnicas são descritas na subseções seguintes. 2.5.2 Arquitetura Reativa Contrapondo-se à abordagem deliberativa, a abordagem reativa não inclui qualquer tipo de modelo simbólico do mundo e não usa raciocínio simbólico complexo. Neste sentido, esta proposta baseia-se na idéia de que o agente pode desenvolver inteligência a partir de interações com seu ambiente, não necessitando de um modelo pré-estabelecido. Assim, segundo Brooks (1991), é possível obter comportamento reativo sem que seja necessário uma representação e raciocínio explícito. Considerando-se suas características, a abordagem reativa se tornou uma alternativa no desenvolvimento de agentes, reduzindo os problemas associados com a complexidade de representação da abordagem deliberativa. 2.5.3 Arquitetura Híbrida Muitos pesquisadores têm proposto a união das abordagens deliberativa e reativa, sugerindo que nenhuma destas duas abordagens são adequadas para o desenvolvimento de agentes, quando utilizadas separadamente. Desta forma, a arquitetura híbrida propõe o desenvolvimento de um subsistema deliberativo, que possui uma representação simbólica, planeja e toma decisões da maneira proposta pela Inteligência Artificial simbólica, e, em conjunto, um subsistema reativo, capaz de reagir a eventos que ocorrem no ambiente sem ocupar-se de raciocínios complexos. 2.6 Considerações Finais O foco deste capítulo está na sub-área da Inteligência Artificial Distribuída, que envolve o desenvolvimento de Sistemas Multiagentes. Assim, alguns conceitos que serão utilizados no restante deste trabalho são apresentados. Embora não haja um consenso em relação ao conceito de agente, a capacidade de autonomia no seu ambiente é considerada de fundamental importância para a definição de um agente. Adicionalmente, em um sistema multiagente, como cada agente tem sua área de atuação, a atuação em conjunto permite que o sistema tenha um maior conhecimento do seu ambiente. O ambiente e as interações são elementos importantes em um sistema multiagente e podem exercer influência na forma de atuação dos agentes. Por fim, abordagens relacionadas à arquiteturas de agentes são apresentadas. 2.6 Considerações Finais 18 Os conceitos apresentados aqui serão amplamente utilizados na definição da arquitetura proposta. Capítulo 3 Metaheurísticas para Otimização Combinatória 3.1 Introdução A busca por técnicas eficientes para a solução de problemas complexos, não solucionados por metodologias clássicas, motivou a exploração de técnicas da inteligência computacional. Os métodos metaheurísticos são exemplos destas técnicas utilizadas na resolução de problemas de otimização. Eles oferecem uma solução eficiente, baseada no não-determinismo e na probabilidade (Milano e Roli, 2004). Diferentemente dos algoritmos exatos, as metaheurísticas não garantem a solução ótima do problema objeto de interesse, mas permitem, de outro lado, a determinação de soluções de boa qualidade em um tempo computacional reduzido. Este fato é particularmente vantajoso em problemas NP-difíceis, nos quais a aplicação de métodos exatos pode, no pior caso, necessitar de tempo computacional exponencial para encontrar a melhor solução. Neste capítulo, são discutidos conceitos importantes para o estudo de Metaheurísticas, que serão utilizados nas seções seguintes. Ao mesmo tempo, é apresentada uma descrição das principais metaheurísticas conhecidas, segundo a formulação de interesse da abordagem aqui adotada. 3.2 Conceitos Importantes O termo metaheurística foi inicialmente introduzido por Glover (1986) e deriva de duas palavras gregas: “heuriskein”, que significa “buscar”, e “meta”, que significa “em um nível superior”. Uma conceituação de metaheurísticas apropriada aos interesses deste trabalho é apresentada em Osman e Laporte (1996): “Uma metaheurística é formalmente definida como um processo de geração iterativo, que guia uma heurística subordinada, pela combinação de diferentes conceitos inteligentes para explorar e expandir o espaço de busca. Estratégias de aprendizagem são usadas para estruturar informações com a finalidade de encontrar de forma eficiente soluções próximas do ótimo.” 19 3.2 Conceitos Importantes 20 Blum e Roli (2003) apresentam propriedades fundamentais associadas às metaheurísticas: (i). O objetivo é explorar eficientemente o espaço de busca, para encontrar soluções próximas do ótimo; (ii). Técnicas que constituem algoritmos de metaheurísticas variam de um simples procedimento de busca local a processos complexos de aprendizagem; (iii). As metaheurísticas devem incorporar mecanismos que evitem ficar presas em áreas limitadas do espaço de busca; (iv). Metaheurísticas não são voltadas para a solução de problemas específicos; (v). Metaheurísticas podem utilizar experiências de busca (na forma de algum tipo de memória, por exemplo) para guiar sua busca. Assim, de forma objetiva, a principal finalidade das metaheurísticas é guiar a exploração do espaço de busca utilizando diversas estratégias. Neste sentido, considerando um problema de otimização combinatória definido por um conjunto de variáveis X = {x1 , x2 , . . . , xn }; o domínio deste conjunto; um conjunto de restrições sobre as variáveis; e uma função objetivo, o espaço de busca é, então, o conjunto de todas as soluções factíveis para o problema, ou seja, todas aquelas que satisfazem o conjunto de restrições. Adicionalmente, o espaço de busca de um problema de otimização combinatória pode ser interpretado como um grafo, na forma da figura 3.1, no qual os nós são as soluções (estados) e os arcos representam a relação de vizinhança entre as soluções (Milano e Roli, 2004). s3 s2 s1 s5 s4 Figura 3.1: Grafo que representa o espaço de busca e as relações entre as soluções. Em seu processo de busca, metaheurísticas usualmente utilizam, como heurística subordinada, métodos de busca local. Estes métodos buscam soluções através da troca sistemática da solução corrente por uma melhor solução, dentro da vizinhança (definida conforme algum critério) da solução corrente. Uma solução vizinha, nos métodos de busca local, é determinada a partir de uma função de vizinhança (estrutura de vizinhança). Uma função de vizinhança é definida como um operador que recebe um estado s1 (figura 3.1) e o transforma em outro estado s2 , pertencente à vizinhança de s1 (Milano e Roli, 2004). Métodos de busca local utilizam soluções iniciais para começar seu processo iterativo. Esta solução inicial é gerada a partir de métodos construtivos. Os métodos 3.3 Classificação 21 Função de Avaliação construtivos tipicamente começam o seu processo com uma solução inicialmente vazia e acrescentam elementos, a cada iteração, até que esta se encontre completa. A principal diferença entre métodos heurísticos (construtivos e busca local) e as metaheurísticas está na capacidade de escapar de ótimos locais, presente apenas nas metaheurísticas. Para isto, as metaheurísticas utilizam diferentes estratégias que permitem uma melhor exploração do espaço a partir de movimentos sobre as diferentes vizinhanças do espaço de busca e procurando melhores ótimos locais. Um ótimo local, em relação à vizinhança N , é uma solução s, cuja a função de avaliação f(s) é menor do que todas as soluções pertencentes a N (s). Da mesma forma, o ótimo global é uma solução s cuja a função de avaliação f(s) é menor do que todas as soluções pertencentes ao espaço de busca (veja figura 3.2). Otimo Local Otimo Global Espaco de Busca Figura 3.2: Ótimo Global e Ótimo Local no espaço de busca. Várias são as estratégias que permitem escapar de ótimos locais, como, por exemplo, movimentos de piora da solução, a geração de novas soluções iniciais, o uso de memória (baseada em decisões tomadas anteriormente ou em experiências de busca), ou, até mesmo, decisões probabilísticas. Entretanto, grande parte dos melhores resultados encontrados através de metaheurísticas para diversos problemas foram obtidos a partir de técnicas de hibridismo (Blum e Roli, 2003). O hibridismo é a combinação de uma ou mais metaheurísticas e/ou estratégias com o objetivo de melhorar o desempenho da busca. A utilização de procedimentos de busca local por métodos como otimização por colônia de formigas e algoritmos evolucionários é uma forma de hibridismo. A identificação de elementos comuns nos algoritmos das metaheurísticas permite um melhor conhecimento destas. Neste sentido, a classificação das metaheurísticas existentes possibilita sua comparação e, assim, a identificação de suas similaridades e diferenças. As principais classificações encontradas na literatura são descritas na seção seguinte. Uma revisão detalhada dos conceitos básicos envolvidos em metaheurísticas e as principais classificações pode ser encontrada em Blum e Roli (2003). 3.3 Classificação Diversas são as formas de classificação de metaheurísticas, cada uma de acordo com um ponto de vista particular. Elas se diferem por características como funcio- 3.3 Classificação 22 namento, critério de escolha da solução inicial, uso ou não de memória, definição da vizinhança, critério de parada, dentre outras. As classificações mais citadas nas bibliografias recentes são descritas a seguir, seguindo a exposição feita por Birattari et al. (2001) e Blum e Roli (2003). Uma forma de diferenciar as metaheurísticas é com relação ao modo como percorrem o espaço de busca. Métodos de Trajetória seguem um caminho de busca simples, correspondendo a um passeio fechado em uma vizinhança. Normalmente, eles precisam permitir movimentos de piora da solução para escapar de ótimos locais. Alguns exemplos dessa classe de métodos são os métodos Simulated Annealing e Busca Tabu. Métodos descontínuos permitem grandes saltos no gráfico de vizinhança. Metaheurísticas como Colônia de Formigas, Iterated Local Search (ILS), GRASP, dentre outros, são exemplos destes métodos. Uma outra característica que pode ser usada na classificação das metaheurísticas é o número de soluções envolvidas no processo de busca. Os Métodos Baseados em População utilizam um grupo de soluções ao mesmo tempo, realizando um processo de busca que descreve a evolução de um conjunto de pontos do espaço. Colônia de Formigas e Algoritmos Genéticos utilizam uma população de formigas e indivíduos, respectivamente, em seu processo de busca. Por outro lado, métodos como Busca Tabu, Simulated Annealing, Iterated Local Search e GRASP manipulam somente uma solução em cada iteração do algoritmo. O uso, ou não, de memória também pode ser usado na diferenciação das metaheurísticas. Memória é explicitamente usada em Busca Tabu; de forma indireta, no algoritmo Colônia de Formigas, através de um tipo de memória adaptativa (via feromônio); como também na população de indivíduos do Algoritmo Genético, que pode ser interpretada como uma forma de experiência de busca recente. Estes são exemplos de métodos que utilizam algum tipo de memória para evitar ciclagem ou até mesmo para diversificar e intensificar características. De outro lado, Simulated Annealing e GRASP são exemplos de métodos que não usam informação na forma de memória para influenciar a direção da busca: apenas o estado corrente do processo de busca é usado para determinar a próxima ação. O número de estruturas de vizinhança usadas no processo de busca é uma característica que também classifica as metaheurísticas. Os métodos baseados em uma única estrutura de vizinhança definem um único tipo de movimento permitido. Em outras palavras, o método tem acesso apenas a uma região do espaço de busca durante o curso do algoritmo. A maioria dos algoritmos de busca local utiliza uma única estrutura de vizinhança. Outras metaheurísticas, como Variable Neighborhood Search (VNS), usam um conjunto de estruturas de vizinhança que dá a possibilidade de diversificar a busca pela troca entre diferentes partes do espaço de busca. O método ILS, embora utilize uma segunda vizinhança somente para ejetar a busca para outro ponto, quando um ótimo local é alcançado, também pode ser interpretado como operando com várias vizinhanças. Uma outra classificação de metaheurísticas é de acordo com a forma com que usam a função objetivo do problema objeto de interesse. Alguns algoritmos modificam a função objetivo durante a busca, tornando-a uma função de avaliação de seu desempenho ao longo de sua aplicação. Estes métodos introduzem penalidades, tentando incorporar informações coletadas no espaço de busca para escapar de ótimos locais. O método Guided Local Search (GLS) é um exemplo dessa formulação. A 3.4 Principais Metaheurísticas 23 maioria dos métodos mantém a função objetivo, dada na representação do problema, durante a busca. A origem dos algoritmos também é usada como ponto de classificação. Existem métodos que são inspirados na natureza, como Algoritmos Genéticos, Colônia de Formigas, Simulated Annealing. Outros, no entanto, não possuem a formulação associada a fenômenos da natureza, como por exemplo, ILS e Busca Tabu. Todas estas classificações, contudo, apresentam algumas deficiências, em especial quando do desenvolvimento de algoritmos híbridos envolvendo formulações e classes diversas de metaheurísticas. A classificação mais adequada aos interesses desse trabalho e que será, portanto, aqui utilizada, é a relacionada ao número de soluções tratadas durante o processo de busca. Esta escolha se deve à semelhança existente na estrutura dos métodos baseados em um único ponto, o que facilita a proposição de um framework que os associe. Já os métodos baseados em população, por outro lado, devem ser abordados com base em suas próprias particularidades e, desta forma, serão incluídos na arquitetura proposta. 3.4 Principais Metaheurísticas A descrição das metaheurísticas mais conhecidas e que serão tratadas neste trabalho é apresentada a seguir, sendo separadas segundo a tipologia de classificação em termos do número de soluções envolvidas no processo de busca. 3.4.1 Métodos baseados em Um Único Ponto 3.4.1.1 Busca Local Básica O método de Busca Local Básica é normalmente chamado de “melhoramento iterativo”, visto que cada movimento só é executado se a solução resultante é melhor que a solução corrente (Blum e Roli, 2003). O pseudocódigo do Algoritmo de Busca Local é mostrado na figura 3.3. A função Melhora(s, N (s)) depende da heurística de busca local utilizada, podendo ser, por exemplo, um procedimento que explora a vizinhança da solução corrente e seleciona a primeira solução que melhora o valor da função objetivo da solução corrente (denominado, então, método de busca de Primeiro de Melhora), ou um procedimento que realiza uma exploração exaustiva na vizinhança, retornando a solução com o melhor valor da função objetivo (Método de Descida). Algoritmo BuscaLocal(·) 1 inicio 2 s ← GeraSolucaoInicial(·); 3 repita 4 s ← Melhora(s, N (s)); 5 ate nao conseguir melhorar s; 6 fim. Figura 3.3: Pseudocódigo Algoritmo de Busca Local. 3.4 Principais Metaheurísticas 3.4.1.2 24 Simulated Annealing (SA) A metaheurística Simulated Annealing (SA) foi originalmente proposta, em 1983, por Kirkpatrick et al. (1983). A idéia principal se baseia na termodinâmica, simulando o resfriamento (recozimento) de um conjunto de átomos (Dowsland, 1993). Este método utiliza um mecanismo estatístico, de tal modo que a probabilidade de que um movimento de piora seja realizado decresce durante a busca. Iniciando de uma solução inicial qualquer e em um processo iterativo, o método SA gera, a cada iteração, um único vizinho aleatório da solução corrente s. O movimento para a solução vizinha s será aceito caso a variação do valor da função de avaliação utilizada for tal que = f (s ) − f (s) < 0. Caso ≤ 0, a solução s candidata poderá ser aceita com uma probabilidade p(T ) = e−/T , sendo o parâmetro T chamado de temperatura corrente, que regula a probabilidade de se aceitar soluções de pior custo. O parâmetro T é iniciado com um valor alto, que diminui gradualmente durante o processo de busca, de modo que o algoritmo venha a convergir a um simples algoritmo de melhoramento iterativo. A figura 3.4 descreve o pseudocódigo da metaheurística Simulated Annealing. Algoritmo SA(·) 1 inicio 2 s0 ← GeraSolucaoInicial(·); 3 T ← T0 ; 4 enquanto CriterioDeP arada nao for satisfeito 5 s ← GeraV izinho(s); 6 se f (s ) < f (s) 7 s ← s ; 8 senao 9 Aceita s como nova solucao, com probabilidade p(T, s , s); 10 fim se; 11 atualizaT emperatura(T ); 12 fim enquanto; 13 fim. Figura 3.4: Pseudocódigo Algoritmo Simulated Annealing. 3.4.1.3 Busca Tabu Glover e Laguna (1998) descrevem a metaheurística Busca Tabu, na qual o conceito de histórico de busca é explicitamente usado. Neste método, movimentos de piora da solução são permitidos (como mostra a figura 3.5) e, desta forma, o método pode escapar de ótimos locais. O processo de busca começa com uma solução inicial e, a cada iteração, explora a vizinhança da solução corrente. O vizinho desta solução que será escolhido é aquele que possuir o melhor valor de função objetivo, mesmo que este seja pior que a solução corrente. Desta forma, a busca local é o ingrediente básico deste método. 3.4 Principais Metaheurísticas 25 Movimento de Piora Ótimo Local Espaço de Busca Figura 3.5: Funcionamento da Metaheurística Busca Tabu. Para que a busca não entre em ciclagem ao aceitar movimentos de piora, uma memória de curto prazo é usada para armazenar as últimas soluções visitadas e as soluções proibidas. Esta memória é chamada de Lista Tabu e, normalmente, é implementada usando ordem de inserção do tipo FIFO (First In, First Out), ou seja, quando uma nova solução é adicionada à lista, a mais antiga sai. A figura 3.6 mostra o pseudocódigo de um algoritmo de Busca Tabu básico. Algoritmo BuscaT abu(·) 1 inicio 2 s0 ← GeraSolucaoInicial(·); 3 InicializaListaBuscaT abu(LT ); 4 enquanto CriterioDeP arada nao for satisfeito 5 MovimentosP ermitidos ← s pertencente a vizinhança que nao viola LT ; 6 s ← MelhorSolucao(MovimentosP ermitidos); 7 atualizaListaT abu(LT ); 8 fim enquanto; 9 fim. Figura 3.6: Pseudocódigo Algoritmo Busca Tabu. 3.4.1.4 GRASP A metaheurística GRASP (Greedy Randomized Adaptive Search Procedure) é um método de busca adaptativa gulosa e aleatória, que combina heurística construtiva e busca local. Uma descrição detalhada desta metaheurística pode ser encontrada em Feo e Resende (1995) e Pitsoulis e Resende (2002). Este método é composto por dois elementos: um procedimento de construção de solução gulosa aleatória e um procedimento de busca local. No procedimento de construção, a cada iteração, uma lista de candidatos restrita é gerada com os melhores elementos. Em seguida, cada elemento a ser inserido na solução é escolhido aleatoriamente, na lista de candidatos restrita. Esta heurística construtiva é chamada dinâmica (Blum e Roli, 2003), já que, a cada iteração, 3.4 Principais Metaheurísticas 26 os valores são atualizados, alterando-se a probabilidade de inserção dos elementos durante a construção. A busca local, fase iniciada logo após a construção da solução, tem o objetivo de melhorar a solução encontrada na fase de construção. A figura 3.7 apresenta um pseudo-código da metaheurística GRASP. Algoritmo GRASP (·) 1 inicio 2 enquanto CriterioDeP arada nao for satisfeito 3 Constroi uma solucao s com um procedimento guloso aleatorio; 4 s ← BuscaLocal(s); 5 s∗ ← MelhorSolucao(s, s ); 6 fim enquanto; 7 fim. Figura 3.7: Pseudocódigo Algoritmo GRASP. 3.4.1.5 Variable Neighborhood Search Proposto em Hasen e Mladenovic (1999) e Hasen e Mladenovic (2001), a metaheurística Variable Neighborhood Search (VNS) se caracteriza pela troca sistemática de vizinhança como estratégia para escapar de ótimos locais. Esta metaheurística realiza, a cada iteração, uma busca local na solução corrente, com o objetivo de refinar a solução. Em seguida, compara a solução encontrada na busca local com a solução corrente; caso não obtenha melhora, faz a troca da função de vizinhança. A metodologia VNS não é um método de trajetória, já que, através da troca de vizinhança, é capaz de explorar diferentes partes do espaço de busca, realizando saltos durante a exploração. O pseudocódigo da metaheurística VNS é mostrado na figura 3.8. 3.4.1.6 Iterated Local Search A metaheurística Iterated Local Search (ILS), proposta por Lourenço et al. (2001), constrói soluções iterativamente a partir de uma heurística embutida, realizando modificações nas melhores soluções com o objetivo de escapar de ótimos locais e diversificar a busca. Para isso, o algoritmo ILS aplica metaheurísticas de busca local na solução inicial fornecida até que se obtenha um ótimo local; em seguida, perturba a solução local e reinicia a aplicação da metodologia de busca local na solução perturbada, como mostra a figura 3.9, para um problema de minimização. Na perturbação, o método ILS aplica uma função de vizinhança diferente da utilizada na aplicação da metaheurística de busca local, conseguindo, assim, transferir a busca para outra região do espaço de busca. O pseudocódigo da metaheurística ILS é mostrado na figura 3.10. A função CriterioDeAceitacao(s , s , histrico) faz a escolha entre a solução encontrada na 3.4 Principais Metaheurísticas 27 Algoritmo V NS(·) 1 inicio 2 s ← GeraSolucaoInicial; 3 f uncaovizinhanca ← 1; 4 enquanto CriterioP arada nao for satisfeito 5 s ← GeraV izinho(s, f uncaovizinhanca); 6 s ← BuscaLocal(s ); 7 se f (s ) < f (s ) 8 s ← s ; 9 senao 10 T rocaF uncaoV izinhanca(f uncaovizinhanca); 11 fim se; 12 fim enquanto; 13 fim. Figura 3.8: Pseudocódigo Algoritmo VNS. Pertubação s1 s Busca Local s2 Espaço de Busca Figura 3.9: Funcionamento da Metaheurística ILS. metodologia de busca local e a solução corrente, de acordo com o objetivo a ser perseguido (minimização ou maximização), podendo utilizar também, na sua tomada de decisão, o histórico da busca. Algoritmo ILS(·) 1 inicio 2 s0 ← GeraSolucaoInicial; 3 s∗ ← BuscaLocal(s0 ); 4 repita 5 s ← P ertubao(s∗, historico); 6 s ← BuscaLocal(s ); 7 s∗ ← CriterioDeAceitacao(s , s , historico); 8 ate CriterioDeP arada; 9 fim. Figura 3.10: Pseudocódigo Algoritmo ILS. 3.4 Principais Metaheurísticas 3.4.2 Métodos Populacionais 3.4.2.1 Algoritmos Genéticos 28 A metaheurística Algoritmo Genético (Goldberg, 1989) é inspirada nos processos naturais de evolução, em que os indivíduos com melhores características genéticas possuem maiores possibilidades de sobrevivência e, em conseqüência, geram filhos cada vez mais aptos. Neste método, as soluções são representadas como cromossomos, que são os indivíduos da população, e cada componente da solução é associado a um gene do cromossomo. O processo inicia com a geração de uma população inicial, obtida geralmente de forma aleatória, seguida de um processo iterativo, que pode ser resumido em duas fases principais (veja o pseudocódigo Algoritmo AG, mostrado na figura 3.11): fase de reprodução, na qual alguns indivíduos são selecionados para operações de recombinação e/ou mutação; fase de avaliação e definição da população sobrevivente. Algoritmo AG(·) 1 inicio 2 t ← 0; 3 P (t) ← GeraP opulacaoInicial; 4 Avalia(P (t)); 5 enquanto CriterioP arada nao for satisfeito 6 t ← t + 1; 7 P (t) ← GeraP opulacao(P (t − 1)); 8 Avalia(P (t)); 9 P opulacaoSobrevivente ← P (t); 10 fim enquanto; 11 fim. Figura 3.11: Pseudocódigo Algoritmo AG. Os operadores de recombinação realizam a combinação dos genes de dois cromossomos-pais para gerar cromossomos-filhos. Já os operadores de mutação modificam, de forma aleatória, uma parte dos genes de cada cromossomo. Através da função Avalia(P (t)), a população sobrevivente é escolhida, com base em critérios como método da roleta, aleatório ou uma mistura destes dois critérios. A possibilidade de um indivíduo menos apto ser selecionado é garantido com a aleatoriedade, o que permite que o método escape de ótimos locais. 3.4.2.2 Ant Colony Optimization A metaheurística Ant Colony Optimization (ACO) foi proposta em Dorigo (1992), Dorigo et al. (1996) e Dorigo e Di Caro (1999). O algoritmo desta metodologia foi inspirado na natureza, sendo baseado no comportamento real das formigas. O princípio utilizado é o de que as formigas, por meio de uma substância química chamada feromônio, depositada ao longo do caminho, se comunicam indiretamente, para encontrar caminhos menores entre o ninho e uma fonte de alimento. 3.5 Considerações Finais 29 Inicialmente, as formigas movem-se aleatoriamente, até que encontrem uma fonte de alimento. Enquanto caminham da fonte de alimento até o ninho, as formigas depositam o feromônio no solo. Quando uma formiga detecta um rastro previamente deixado pode decidir, com alta probabilidade, segui-lo, reforçando assim o rastro com seu próprio feromônio. Desta forma, este processo se caracteriza por ser autocatalítico, já que, quanto maior o número de formigas que seguem o rastro, mais atrativo ele se torna. No algoritmo ACO, as formigas fazem suas escolhas baseadas no rastro de feromônio do caminho, que depende diretamente do nível de feromônio presente, e na atratividade, que expressa o quanto o movimento é desejável. Assim, a escolha do caminho é probabilística, sendo altamente influenciada pela intensidade de feromônio. O método de decisão baseado em feromônio pode, também, permitir o desvio aleatório da melhor solução corrente, o que possibilita escapar de ótimos locais. Um pseudocódigo da metaheurística Ant Colony Optimization é apresentado na figura 3.12: Algoritmo ACO(·) 1 inicio 2 enquanto CriterioDeP arada nao for satisfeito 3 para cada formiga (ate m formigas) 3 s ← ControiSolucao(RastroF eromonio); 4 s ← BuscaLocal(s); 5 Seleciona melhor solucao; 6 Atualiza rastro de feromonio; 7 fim para; 8 fim enquanto; 9fim. Figura 3.12: Pseudocódigo Algoritmo ACO. 3.5 Considerações Finais Este capítulo apresenta conceitos de termos importantes, amplamente utilizados em metaheurísticas, e que serão utilizados no decorrer deste trabalho. As formas de classificação aqui apresentadas permitem estabelecer diferenças e semelhanças entre as principais metaheurísticas, o que será de fundamental importância na proposição da arquitetura. Desta forma, as metaheurísticas que são tratadas neste trabalho, são descritas de acordo com a classificação que atende os propósitos deste trabalho. Capítulo 4 Trabalhos Correlatos 4.1 Introdução Diversas arquiteturas e frameworks têm sido, recentemente, propostos para o tratamento de métodos de otimização combinatória. Muitos destes trabalhos utilizam o paradigma orientado a objetos para definir uma estrutura genérica, que permite a utilização destes métodos na solução de problemas de otimização. Outros trabalhos utilizam a abordagem multiagente neste mesmo sentido. Entretanto, o escopo destes trabalhos, normalmente, se limita a uma abordagem específica, como por exemplo, um framework para algoritmos de busca local (Andreatta et al., 1998) ou uma arquitetura de agentes para a solução do Problema de Roteamento de Veículos (Thangiah et al., 2001). Este capítulo se concentra em uma revisão da literatura relacionada à utilização das abordagens multiagente e orientadas a objeto no tratamento de metaheurísticas. 4.2 Asynchronous Teams Em Talukdar e Souza (1990), é proposta uma arquitetura multiagente para a solução de problemas, denominada Asynchronous Teams (A-Teams), na qual os agentes são autônomos e cooperam entre si, modificando as soluções uns dos outros. A arquitetura A-Teams tem sido usada na solução de diversos problemas complexos, envolvendo áreas como, por exemplo, projetos, diagnósticos, controle e otimização. Desta forma, vários trabalhos que implementam este formalismo podem ser citados: Passos e Fonseca (2005) utilizam A-teams na solução de problemas de seqüenciamento de produção; em Lukin et al. (1997), estes são usados no problema de tratamento de dados para ressonância da coluna vertebral; em Chen (1992) e Avila-Abascal e Talukdar (1996) o método é aplicado no diagnóstico de falhas em redes elétricas; em Gorti et al. (1996), é aplicado a problemas de satisfação de restrições; na solução do Problema do Caixeiro Viajante, em de Souza (1993); Chen et al. (1993) utiliza-o na programação de horários de trabalho em lojas. A arquitetura proposta é formada por um conjunto de agentes autônomos e um conjunto de memórias interconectadas, formando uma rede cíclica, isto é, as soluções circulam continuamente nas memórias (Talukdar et al., 1998). Um ATeams pode ser representado na forma de um grafo direcionado (veja Figura 4.1), 30 4.3 A-Teams 31 em que cada nó representa uma memória de sobreposição e cada arco representa um agente autônomo. As memórias acumulam populações de soluções que variam no tempo, já que novos membros são continuamente adicionados e os membros mais antigos são apagados. C1 C3 M1 D1 C4 D2 C2 C5 M2 Figura 4.1: Asyncronous Teams: C1-C5 são agentes construtores; D1-D2 são agentes destrutores; e M1-M2 são memórias. Fonte: Talukdar e Souza (1990) Os agentes da arquitetura são divididos em dois tipos: • Agentes Construtores: adicionam soluções às memórias a partir do processo de cópia e modificação de soluções mais antigas para, em seguida, incluí-las como novas soluções; • Agentes Destruidores: examinam a população e apagam as soluções que não deveriam estar lá. Cada agente encapsula um método particular de solução do problema, que age modificando as soluções existentes (Passos e Fonseca, 2005). A-Teams cooperam através do compartilhamento das populações de soluções candidatas armazenadas nas memórias. No entanto, como os agentes são autônomos, esta cooperação é assíncrona, ou seja, nenhum agente pode ser forçado a esperar resultados de outro agente. Passos e Fonseca (2005) relacionam as principais características de um A-Teams: - Autonomia dos agentes: os agentes são independentes uns dos outros; - Fluxo de dados cíclico: acontece através da construção e destruição de soluções e permite a cooperação entre os agentes pelo compartilhamento de resultados; - Comunicação Assíncrona: os agentes acessam as memórias sem que exista uma sincronização entre eles. Assim, todas as formas de comunicação disponíveis nesta arquitetura são representadas pelo fluxo de dados, ou seja, as possibilidades de interação dos agentes da proposta se limitam à troca de resultados entre estes, através das memórias. Neste sentido, a cooperação também se restringe à troca de soluções entre os agentes. 4.3 4.3 AGENT-DOSS 32 AGENT-DOSS Thangiah et al. (2001) apresentam uma arquiteturas de agentes para a solução de Problemas de Roteamento de Veículos (PRV). Com o objetivo de reduzir a complexidade do problema a ser solucionado através da divisão deste em problemas menores, este artigo propõe a solução desta classe de problemas por meio da estratégia de busca distribuída. Segundo os autores, os principais objetivos da arquitetura são: (1) resolver o PRV de maneira distribuída; (2) resolver o problema usando múltiplos computadores em rede, sem requerer do usuário a tarefa de gerenciar o processo de busca; (3) introduzir uma arquitetura agente flexível, que tenha a capacidade de integrar Metaheurísticas para resolver variantes do PRV com o mínimo de mudanças nos algoritmos e no sistema. A arquitetura proposta permite, também, resolver variantes complexas do PRV clássico, com o mínimo de alteração no sistema, assim como a integração de estratégias de busca, como Algoritmos Genéticos, Busca Tabu, Simulated Annealing, entre outras. O sistema de agentes implementado neste trabalho foi nomeado pelos autores como AGENT-DOSS, já que utiliza um método chamado DOSS. Tal método, segundo Thangiah et al. (2001), consiste na habilidade de um sistema conduzir uma busca usando um ou mais sistemas de computadores heterogêneos em uma rede distribuída, com cada nó sendo capaz de selecionar autonomamente uma estratégia de busca que maximize seu desempenho local. Para a solução do PRV, a partir da idéia de agentes trabalhando em conjunto, a arquitetura apresenta um princípio de negociação e uma estrutura de coordenação para suporte. O princípio de negociação, através do processo de leilão (auctioning process), possibilita a interação dos diversos agentes, enquanto a estrutura de coordenação permite aos agentes cooperar e coordenar para resolver o PRV. Neste sentido, o AGENT-DOSS é formado por dois agentes principais: (i) Agente Leiloeiro (Auctioneer Agent): responsável por anunciar os clientes disponíveis aos agentes veículos e, assim, receber as ofertas destes. Estas ofertas são avaliadas, com o objetivo de encontrar o agente veículo com menor custo, e nomear o cliente para o veículo definido. (ii) Agente Veículo (Vehicle Agent): são criados até que todos os clientes submetidos pelo Agente Leiloeiro tenham sido alocados em um Agente Veículo. Este agente é responsável por avaliar o custo de inserção do novo cliente (que está sendo ofertado pelo Agente Leiloeiro); enviar este custo para o Agente Leiloeiro (sua oferta); e, se nomeado por este, aceitar o cliente em sua rota. O cliente só será aceito pelo Agente Veículo se as restrições de capacidade e distância não forem violadas. O método Clarke-Wright é usado para avaliar o custo de inserção do novo cliente na rota do Agente Veículo. Assim, o processo de leilão consiste da apresentação do novo cliente aos Agentes Veículos e, conseqüentemente, o retorno, ao Agente Leiloeiro, das ofertas relacionadas à inserção deste cliente nas rotas. Uma vez que esta tarefa está completa, os Agentes Veículos realizam trocas de mensagens com o objetivo de minimizar 4.4 Coal-VRP 33 a distância viajada por cada um deles. Estas trocas são similares ao movimento inter-rota, em que um ou dois clientes são trocados entre dois veículos. O artigo apresenta, para validar sua proposta, aplicações do AGENT-DOSS à solução do PRV clássico e à solução do PRV multidepósito. É mostrado que a arquitetura proposta não requer nenhuma alteração quando aplicada a cada um destes problemas, pois os Agentes Veículos trabalham de forma independente e podem, portanto, iniciar em qualquer depósito. Adicionalmente, a arquitetura permite a integração de métodos metaheurísticos no que os autores denominam de nível de agente, isto é, cada Agente Veículo pode ter um algoritmo de busca que é adequado para resolver o seu subproblema. Contudo, embora a arquitetura seja capaz de solucionar as diversas variantes do PRV, ela está restrita a esta classe de problema. Isto porque seus agentes são altamente especializados, tendo suas habilidades limitadas ao tratamento de clientes e rotas (veículos), próprios desta classe de problemas. 4.4 Coal-VRP Em Kefi e Ghedira (2004) é apresentado um modelo multiagente, baseado em coalizão, para a solução do Problema de Roteamento de Veículos com Janela de Tempo. Este artigo foca em um modelo particular, chamado Coal-VRP, que é baseado em formação de coalizão. O Coal-VRP é um sistema multiagente que consiste na divisão dos agentes em grupos chamados coalizões. Estes agentes são capazes de comunicar e negociar uns com os outros. O objetivo do Coal-VRP é determinar um conjunto final de rotas, dado um conjunto de pedidos recebidos de clientes distribuídos geograficamente. O sistema Coal-VRP é formado por dois tipos de agentes: (i) Agente Interface: responsável pela inicialização do processo de solução, a ligação dos seus passos e a detecção do seu fim. (ii) Agente Cliente: corresponde a um dado cliente e seu interesse é ser atendido em uma rota com o menor custo, enquanto são respeitadas as restrições de capacidade e janela de tempo. Uma coalizão, neste modelo, é uma lista ordenada de Agentes Clientes que corresponde a uma rota, começando no depósito, servindo todos os clientes associados e retornando ao depósito. O processo de solução do Coal-VRP é dividido em três passos: (i) Formação distribuída de um grafo acíclico e direto de clientes, chamado de grafo de relações. A relação entre os Agentes Clientes é baseada em dois critérios: janela de tempo e heurística de vizinhança espacial. (ii) Cada Agente Cliente constrói uma coalizão em relação à restrição de capacidade. Ao final deste passo, todos os Agentes Clientes têm uma lista de coalizões completa e ordenada de acordo com o critério de preferência. 4.6 DyCoal 34 (iii) A coalizão que é a melhor para cada Agente Cliente é determinada. As coalizões escolhidas são armazenadas, e a configuração de coalizões é gradualmente atingida. Um protocolo de comunicação garante um acordo entre os Agentes Clientes. Ao fim deste passo, as coalizões armazenadas são separadas, de forma que cada Agente Cliente pertence a exatamente uma coalizão. Entretanto, este modelo apresenta algumas desvantagens, descritas em Boudali et al. (2004), e que são mencionadas na seção seguinte. 4.5 DyCoal-VRP O modelo Coal-VRP expresso na seção 4.4 apresenta algumas desvantagens relacionadas à complexidade espacial e temporal. Neste sentido, Boudali et al. (2004) propõem uma nova versão do modelo, chamado DyCoal-VRP (Dynamic generation of Coalition for solving a VRP), buscando superar as desvantagens e manter a qualidade das soluções. A principal desvantagem do modelo Coal-VRP é encontrada no segundo passo, já que o tamanho da lista de coalizão é exponencial em relação ao número de clientes do problema. O modelo DyCoal-VRP propõe eliminar este passo do processo de solução, correspondente à construção da lista de coalizões, e introduzir uma geração dinâmica de coalizões. Desta forma, o novo processo de solução é definido por apenas dois dos passos descritos acima: (i) A formação distribuída do grafo de relações, da mesma forma que o ocorrido no modelo Coal-VRP. (ii) A determinação da melhor coalizão para cada Cliente (corresponde a união de dois passos do modelo anterior), sendo que, em lugar de gerar uma lista com todas as possíveis coalizões para cada agente, no DyCoal-VRP é feita uma geração dinâmica de coalizões. Como no modelo anterior, em algum instante, todos os Agentes Clientes têm apenas uma coalizão relacionada. Para a geração dinâmica de coalizões, o protocolo de negociação foi modificado. Contudo, deve-se enfatizar que ambos os modelos, Coal-VRP e DyCoal-VRP, podem ser utilizados apenas na solução do PRVJT, possuindo, assim como na proposta apresentada na seção 4.3, agentes especializados em um tipo específico de problema específico. Desta forma, em ambas as propostas, a modificação ou adição de novos métodos fica restrita, senão impossibilitada, assim como sua aplicação a outros problemas de otimização combinatória. 4.6 Hiperheurísticas A metodologia de Hiperheurística pode ser vista como uma heurística que escolhe, dentre diversas heurísticas de baixo nível, qual será aplicada para o auxílio à 4.7 Metaheurísticas Cooperativas 35 solução de um dado problema de otimização. Assim, em cada ponto de decisão, a hiperheurística deve decidir qual a heurística de baixo nível será aplicada na seqüência do procedimento de solução. A escolha da próxima heurística de baixo nível a ser aplicada é feita em relação à heurística utilizada previamente e à região do espaço de busca corrente, tornando esta escolha dinâmica (Gras et al., 2003). As pesquisas em Hiperheurísticas são voltadas para o desenvolvimento de “heurísticas para escolher heurísticas” em uma tentativa de aumentar o nível de generalidade na solução de problemas de otimização (Burke et al., 2005). Este crescimento no nível de generalidade pode suportar uma nova geração de sistemas de apoio a decisão que são aplicáveis a um extenso número de problemas, ao contrário dos sistemas atuais, que tendem a focar no tratamento de sistemas feitos sob medida. Pode-se atingir isto pelo uso de um framework com uma construção em um nível de abstração. Para tal, um conjunto de heurísticas de “baixo nível” é desenvolvido, interage com uma dada solução para um problema, e explora a vizinhança no espaço de solução. As hiperheurísticas, então, consistem em métodos de busca de alto nível, que gerenciam “a escolha de qual heurística de baixo nível deve ser aplicada em um dado tempo, dependendo das características da região do espaço de solução em exploração”. As pesquisas recentes no tema focam na exploração do uso de técnicas e de metaheurísticas existentes como hiperheurísticas. Neste sentido, alguns trabalhos são apresentados abaixo, possibilitando uma melhor compreensão do funcionamento das hiperheurísticas. Uma hiperheurística Busca Tabu é proposta em Burke et al. (2003), na qual é mantida uma lista tabu de heurísticas, que impede que certas heurísticas sejam escolhidas em determinados momentos da busca. Nesta proposta, heurísticas competem usando regras baseadas no princípio de aprendizagem reforçada. Burke et al. (2005) discutem sobre a utilização do Algoritmo de Otimização por Colônia de Formigas como uma hiperheurística. Nesta proposta, cada vértice de uma rede representa uma heurística, enquanto os arcos direcionais, existentes entre as heurísticas, indicam a possibilidade de se aplicar imediatamente heurísticas sobre a outra. Em seguida, um certo número de formigas é criado, cada qual representando um agente hiperheurística (fornecido com uma solução inicial no espaço de solução) e tem acesso à heurísticas e à funções de avaliação. Estas formigas são espalhadas uniformemente entre os vértices do grafo. Desta forma, na hiperheurística proposta, cada formiga deve construir uma seqüência de heurísticas através do grafo. O próximo vértice a ser visitado é escolhido com base na quantidade de feromônio nos arcos, e a formiga aplica a heurística representada pelo vértice em sua solução corrente. Após cada formiga visitar certo número de vértices, elas param e analisam o caminho obtido e depositam uma quantidade de feromônio em cada arco, de acordo com o melhoramento da qualidade da solução durante o percurso. 4.7 Metaheurísticas Cooperativas O interesse dessa abordagem consiste em executar diferentes métodos de busca de forma paralela, de modo tal que estes troquem informações, coletadas em uma 4.8 MAGMA 36 região do espaço de busca previamente explorada. Assim, esta abordagem tem sido crescentemente utilizada para problemas de otimização de difícil solução e tem se mostrado, segundo seus proponentes, mais rápida na solução de problemas com estas características, ao mesmo tempo que melhorado a robustez e a qualidade das soluções encontradas (Bouthilliera e Crainic, 2005). O paralelismo é usado em metaheurísticas cooperativas com o objetivo de reduzir o tempo de execução do algoritmo de busca, assim como para melhorar sua efetividade e robustez. Isso é possível através da cooperação existente entre as metaheurísticas, que realizam a busca paralelamente. Dentre os trabalhos utilizando esta abordagem, é importante citar os que se seguem. Em Vallada e Ruiz (2007), a metodologia de metaheurística cooperativa, na forma de algoritmos genéticos cooperativos, é usada no problema de programação de flowshop. Esta proposta busca resolver o problema, dividindo uma tarefa em várias partes independentes e resolvendo-as simultaneamente, usando múltiplos processadores ou computadores. Uma descrição de metaheurísticas cooperativas, assim como uma classificação dependente da natureza da cooperação é apresentada em Gras et al. (2003). Os conceitos apresentados são aplicados a problemas na área de proteômica, incluindo identificação automática de proteínas, inferência de motivo biológico e alinhamento de seqüências múltiplas. Várias aplicações são apresentadas utilizando métodos baseados na cooperação, sendo comparados com abordagem clássicas. Os autores enfatizam, neste trabalho, a importância da combinação de métodos para maximizar o ganho de suas características específicas para problemas de estrutura complexa. 4.8 MAGMA (MultiAGent Metaheuristics Architecture) A Arquitetura MAGMA (MultiAGent Metaheuristics Architecture), apresentada por Milano e Roli (2004), utiliza a perspectiva multiagente na definição de um framework, na qual uma metaheurística pode ser vista como o resultado da interação entre os diversos agentes da arquitetura. Nesta arquitetura, diferentes agentes atuam em multi-níveis, sendo que cada um dos níveis corresponde a um grau de abstração e possui um ou mais agentes especializados. A arquitetura MAGMA permite a interação dos agentes e a comunicação entre quaisquer dois níveis. Os níveis da arquitetura MAGMA (figura 4.2) são: - Nível 0: os agentes deste nível são responsáveis por produzir soluções iniciais e fornecer uma solução factível para o nível superior; estes agentes podem explorar estratégias como inicialização aleatória, construção gulosa, construção probabilística, entre outras. - Nível 1: estes agentes buscam melhorar a solução fornecida pelo nível 0, a partir da exploração do espaço de busca com algoritmos de busca local. - Nível 2: os agentes, neste nível, têm a tarefa de guiar a busca para soluções mais promissoras, permitindo escapar de ótimos locais. 4.8 MAGMA 37 - Nível 3: os agentes devem coordenar todo o processo de busca, isto é, coordenar o comportamento de todos os agentes dos níveis abaixo deste. Nível 3 NÍVEL DE COORDENAÇÃO 5 Nível 2 AGENTE DE ESTRATÉGIA 3 Nível 1 6 4 MELHORADORES DE SOLUÇÃO 7 1 Nível 0 2 CONSTRUTORES DE SOLUÇÃO Figura 4.2: MAGMA - Arquitetura Multi-Níveis para metaheurísticas. Fonte: Milano e Roli (2004) Cabe ressaltar que a arquitetura MAGMA é uma arquitetura hierárquica, onde agentes de um nível subordinam as ações dos agentes do nível inferior e, por outro lado, ficam subordinados às ações dos agentes do nível superior. Assim sendo, os agentes não são, propriamente autônomos, face à cadeia de subordinação. Ao contrário dos outros trabalhos aqui apresentados, a arquitetura MAGMA se mostra uma estrutura mais geral, possibilitando a adição de qualquer metaheurística, e não se prende a um problema específico. Em Milano e Roli (2004), algumas especializações da arquitetura MAGMA são apresentadas, com o objetivo de demonstrar como metaheurísticas conhecidas podem ser representadas pelo framework proposto. Aqui, são apresentadas duas destas especializações, exemplificando a utilização desta arquitetura. Primeiro, a arquitetura MAGMA é utilizada para descrever a metaheurística GRASP (Feo e Resende, 1995), descrita na seção 3.4.1.4. Nesta especialização, mostrada na figura 4.3, são utilizados os seguintes níveis: • Nível 0: gera a solução inicial, com uma heurística de construção gulosa aleatória; • Nível 1: melhora a solução inicial encontrada pelo nível inferior, com um algoritmo de busca local (a escolha do algoritmo depende do problema a ser tratado); • Nível 2: armazena a melhor solução encontrada na busca local. A segunda especialização da arquitetura utiliza o método ACO (Ant Colony Optimization) (Dorigo et al., 1996). De acordo com o algoritmo ACO genérico, os níveis da arquitetura, para esta especialização, são definidos da seguinte forma: 4.9 MAGMA 38 Nível 2 ARMAZENA A MELHOR SOLUÇÃO Nível 1 BUSCA LOCAL Nível 0 CONSTRUÇÃO GULOSA ALEATÓRIA Figura 4.3: Especialização da arquitetura MAGMA para GRASP. Fonte: Milano e Roli (2004) • Nível 0: constrói a solução inicial, utilizando um procedimento construtivo probabilístico, baseado no rastro de feromônio; • Nível 1: implementa algum método de busca local para melhorar a solução; • Nível 2: armazena a melhor solução e atualiza os níveis de feromônio. Nível 2 ATUALIZA FEROMÔNIO Nível 1 BUSCA LOCAL Nível 0 CONSTRUÇÃO BASEADA EM FEROMÔNIO Figura 4.4: Especialização da arquitetura MAGMA para ACO. Fonte: Milano e Roli (2004) É importante ressaltar que uma metaheurística, nesta proposta, não é um agente isolado agindo autonomamente, mas surge da ação cooperada de diferentes agentes atuando nos vários níveis de abstração da arquitetura. O ambiente que o agente percebe na arquitetura MAGMA é bem simples, correspondendo apenas ao conjunto de agentes com os quais ele pode se comunicar. Os agentes são definidos por tuplas T =< M, S >, em que S é a estratégia usada pelo agente e M é o modelo de problema. Assim, todos os agentes, de todos os níveis da arquitetura, devem possuir uma definição do modelo do problema. Da forma como é proposta, então, a arquitetura está fortemente ligada ao problema a ser tratado, já que, para que dois problemas diferentes sejam solucionados, devem ser feitas alterações nos agentes, no que diz respeito à definição do problema. 4.10 4.9 FGAS 39 FGAS (Fine-Grained Agents System ) Uma abordagem multiagente para a solução de problemas de otimização que possuem uma forte estrutura combinatória, em especial o chamado problema de empacotamento, foi proposta por Lau e Wang (2005). Neste trabalho, agentes racionais agem de forma colaborativa e competitiva no projeto do FGAS (Fine-Grained Agents System). O FGAS é definido por uma 4tupla T =< AA, CA, SA, L >, na qual: (i) AA - Agente de Arbitragem (Arbitration Agent): é um agente que serve como fornecedor de informações globais do ambiente e controla a concorrência entre os subagentes; (ii) CA - Agente Restrição (Constraint Agent ): é um conjunto de agentes restrições que atuam como consultores, fornecendo informações para a tomada de decisão dos subagentes; (iii) SA - SubAgentes (Subagents): é um conjunto de subagentes que pode ser expresso como {sA1 , sA2 , . . . , sAn }, que adotam uma abordagem de busca local, através de movimentos (vizinhança), em que o resultado destes movimentos pode mudar o estado interno dos subagentes e melhorar o valor da função objetivo. Exemplo de um subagente: uma “caixa”, com capacidade predefinida, no problema de empacotamento; e (iv) L: é o comportamento local do agente. A interação entre os agentes ocorre quando os SA’s se encontram com opiniões diferentes na busca do melhor movimento. Este evento é designado como “conflito” e, quando ele ocorre, os SA’s começam a negociar uns com os outros. Desta forma, os agentes resolverão estes conflitos selecionando valores não apenas para satisfazer a restrição do problema, mas, também, para maximizar a flexibilidade de escolha de valores do outro agente (Lau e Wang, 2005). Adicionalmente, os FGAS implementam, para cada movimento, um cálculo de expectativa futura, sendo que o movimento que tiver a melhor expectativa será escolhido. Entretanto, embora esta proposta envolva vários subagentes cooperando na busca da solução, estes são voltados para métodos de busca local e para a solução de uma classe de problemas específica. 4.10 MAA-VRPTW Leong e Liu (2006) propõem um novo algoritmo que combina a abordagem multiagente com heurísticas de busca local, para evitar que, na fase de otimização das rotas, a solução corrente fique facilmente presa em ótimos locais. Da mesma forma que outros trabalhos já discutidos aqui, o algoritmo descrito nesta seção também é especializado na solução do Problema de Roteamento de Veículos com Janela de Tempo (PRVJT). Nesta proposta, nomeada como Multi-Agent Algorithm for the VRPTW (MAAVRPTW ) ou Algoritmo Multiagente para o PRVJT, cada entidade no PRVJT é 4.10 MAA-VRPTW 40 tratada como um agente e o PRVJT, como um todo, é representado pelo grupo de interações destes agentes. Cada agente tem um objetivo local e pode desempenhar um conjunto de operações/movimentos para mudar seu estado; movimentar para seus objetivos individuais; afetar o ambiente; e modificar os estados de outros agentes. Desta forma, o algoritmo é composto pelos seguintes agentes: (i) Agente Cliente: este agente troca informações com os outros Agentes Clientes e tem como objetivo obter o seu atendimento assim que possível e minimizar seu tempo de espera. (ii) Agente Rota: cada rota (ou veículo) conhece as informações sobre os clientes presentes em suas rotas e trocam informações com outras rotas. O objetivo do Agente Rota é maximizar o uso de sua capacidade e minimizar a distância viajada. (iii) Agente Planejador: o planejador global (simbolizado aqui pelo depósito) está em todas as rotas e conhece todas as informações dos clientes que ele precisa atender. Este agente tem uma visão geral do estado corrente e é capaz de coordenar as operações dos clientes e das rotas. O seu objetivo é minimizar o número de rotas e a distância total viajada em todas as rotas. Este algoritmo utiliza a heurística PFIH (Push Forward Insertion Heuristic) (Solomon, 1987) para obter a solução inicial. Esta heurística insere repetidamente o melhor cliente factível na rota corrente parcial. O melhor cliente factível é definido por ser aquele com o menor custo calculado pela função de custo do problema. Após a construção da solução inicial, o algoritmo proposto utiliza a abordagem multiagente para otimizar as rotas. Neste sentido, cada agente tem um conjunto de operações que têm o objetivo de melhorar seu próprio objetivo local, enquanto movem o estado da solução global para soluções globais melhores. Adicionalmente, o agente planejador também realiza, periodicamente, movimentos globais, que têm o objetivo de melhorar o estado da solução global Assim, o MAA-VRPTW trabalha na forma como descrita na Figura 4.5. Inicializar os dados usando solução PFIH Ambiente Agente Agente Ativar Agente Agente Sistema Multiagente Principal Figura 4.5: Algoritmo Multiagente para o PRVJT. Fonte: Leong e Liu (2006) 4.11 Um Framework Orientado a Objeto de Busca Local 41 Nas interações que acontecem no sistema multiagente proposto, o Agente Planejador toma o papel de controlador geral de todo sistema, enquanto os demais agentes podem se comunicar com ele e com os outros. A Figura 4.6 mostra como essas interações acontecem. Interações entre Agentes Agente Cliente Agente Planejador Agente Cliente Agente Rota Agente Rota Figura 4.6: Interações entre agentes em MAA-VRPTW. Fonte: Leong e Liu (2006) O MAA-VRPTW foi implementado em C++, utilizando um simulador de eventos discreto para simular a característica distribuída. Assim, o sistema não foi implementado usando um sistema multiagente distribuído. Os testes realizados para validação da proposta foram realizados utilizando o conjunto de dados propostos em Solomon (1987). Nesta proposta, a abordagem multiagente é utilizada apenas na definição de movimentos de vizinhança (entre as rotas), ou seja, somente heurísticas de busca local podem ser implementadas com este sistema. 4.11 Um Framework Orientado a Objeto para Busca Local Um framework orientado a objetos para heurísticas de busca local, denominado Buscador de Vizinho (NeighborSearcher Framework ), é apresentado em Andreatta et al. (1998). Neste framework, são modelados diferentes aspectos, envolvidos nas heurísticas de busca local, tais como algoritmos para construção de soluções iniciais; métodos para geração de vizinhança; e critérios de seleção de movimento. A estrutura do framework, assim como suas classes e as relações envolvidas, são apresentadas na figura 4.7 e descritos a seguir: • Cliente: contém a instância do problema a ser solucionado. Contém também os dados para criar a Estratégia de Busca que será usada para resolver o problema. • Solução: encapsula a representação de uma solução para o problema e define a interface que permite ao algoritmo construir e modificar soluções. • Estratégia de Busca: constrói e inicia os algoritmos da Estratégia de Construção e da Busca Local. 4.11 Um Framework Orientado a Objeto de Busca Local 42 Lista_encontrada Cliente Estratégia Lista_construtores Lista_candidatos selecionados Estratégia de Busca Lista_buscadores Lista Lista_inicial encontada Estratégia de Construção Busca Local Incremento Lista_candidatos selecionados Movimento Solução Modelo de Construção Modelo de Incremento Modelo de Busca Modelo de Movimento Figura 4.7: O Framework Buscador de Vizinhos. Fonte: Andreatta et al. (1998) • Estratégia de Construção: encapsula os algoritmos construtivos. Faz modificações na solução baseado no Modelo de Incremento. • Busca Local: encapsula algoritmos de busca local. Faz modificações na solução, baseado no Modelo de Movimento. • Incremento: grupos de dados necessários para uma modificação da representação interna da solução para os algoritmos construtivos. • Movimento: grupo de dados necessários para uma modificação da representação interna de uma solução para os algoritmos de busca local. • Modelo de Incremento: define o modelo de incremento. • Modelo de Movimento: define o modelo de movimento. O processo de interação e colaboração deste framework pode ser sintetizado da seguinte forma: o cliente delega a tarefa de encontrar uma Solução à Estratégia de 4.12 Um Framework Orientado a Objetos para Busca Local Multiobjetivo 43 Busca. Esta estratégia é composta pelo menos por uma Estratégia de Construção e uma Busca Local. A Estratégia de Construção produz uma Solução inicial através de Incrementos e a Busca Local melhora a Solução através de Movimentos sucessivos. Estes Incrementos e movimentos determinam as relações de vizinhança, que são inicialmente fornecidas pelo Cliente. A implementação destas vizinhanças é delegada pela Solução a seu Modelo de Incremento (Construção) e ao seu Modelo de Movimento (Busca Local). Estes Modelos, de Incremento e Movimento, podem mudar em tempo de execução, refletindo o uso de uma vizinhança dinâmica ou Estratégias de Construção que utilizam vários tipos de incremento. Assim como a grande maioria dos frameworks propostos para métodos de otimização, o principal objetivo do framework apresentado em Andreatta et al. (1998) consiste na sua utilização para o desenvolvimento e comparação de diferentes heurísticas para o mesmo problema, por outro lado, também, como é freqüentemente necessário, deve-se experimentar estes problemas com diferentes estratégias e parâmetros. Entretanto, o framework permite a comparação apenas de métodos de busca local, não sendo possível utilizá-lo com outras heurísticas. 4.12 Um Framework Orientado a Objetos para Busca Local Multiobjetivo Um framework orientado a objetos para busca local multiobjetivo é apresentado por Claro e Sousa (2001). Problemas de otimização combinatória com múltiplos objetivos ocorrem em aplicações práticas nas quais o processo de tomada de decisão pode envolver vários objetivos. As metaheurísticas que, normalmente, são as mais adaptadas para o problema multiobjetivo são Algoritmos Genéticos, Simulated Annealing e Busca Tabu, apesar de outras metaheurísticas, normalmente implementadas com um simples objetivo, também têm sido adaptadas para esta formulação de problemas, como GRASP. Segundo os autores, o paradigma orientado a objetos fornece um bom suporte ao desenvolvimento da abordagens MOLS (MultiObjective Local Search - em português, Busca Local Multiobjetivo), particularmente, no controle da dimensão e do nível de complexidade, que são comuns em problemas e métodos nesta área. Em Claro e Sousa (2001) é apresentado o desenvolvimento do METHOOD (META- Heuristics Object-Oriented Development, em português, Desenvolvimento Orientado a Objetos de Meta-Heurísticas). METHOOD consiste em um framework genérico em C++ (Figura 4.8) que fornece as seguintes funções: - apoio para a definição das variáveis de domínio do problema, soluções, movimentos, incrementos e funções de avaliação; - apoio para os dados do problema; - um modelo e uma implementação concreta de um algoritmo construtivo, baseado em Andreatta et al. (1998); - um modelo MOLS e as derivações PSA e MOTS* deste modelo; 4.13 Um Framework Orientado a Objetos para Busca Local Multiobjetivo 44 - extensões para uma estratégia de lista de candidatos e uma estratégia de variação de vizinhança; - um nível solucionador para a articulação de algoritmos construtivos e MOLS, e a implementação de um nível mais alto, em paralelo, de estratégias de hibridismo. Suporte de dados do Problema Estruturas básicas e relações Algoritmos Básicos Resolvedores Algoritmos Construtivos METHOOD Extensão para algoritmos básicos e construtivos, e resolvedores Dados Avaliações Movimentos Soluções Incrementos Fornecido pelo Cliente Figura 4.8: O Framework METHOOD. Fonte: Claro e Sousa (2001) O funcionamento do algoritmo MOLS pode ser descrito da seguinte maneira: iterações sobre uma população de soluções, construindo uma aproximação para o conjunto eficiente do problema considerado; para cada solução, uma vizinhança é criada, e todos os movimentos são obtidos, para que um deles seja selecionado; a seleção do movimento sempre envolve os pesos das soluções. Assim, PSA e MOTS* buscam produzir uma boa aproximação do conjunto eficiente, enquanto trabalham com uma população de soluções, cada um deles mantendo um vetor de peso para a definição da orientação da busca. Cada solução tem uma característica de componentes de metaheurística, como vizinhança, em geral, ou lista tabu, no caso específico de MOTS*. PSA e MOTS* se diferenciam na definição do modelo de operação primitivo. A formulação de movimento de vizinhança em PSA é a de um movimento gerado que é selecionado e aceito de acordo com uma probabilidade de aceitação. A definição de movimento em MOTS* considera o status Tabu, critérios de aceitação e uma comparação de avaliações baseada em uma função de soma dos pesos. O framework METHOOD foi aplicado para o problema de escalonamento de máquinas multiobjetivo, buscando minimizar o número de trabalhos atrasados, o atraso máximo e o atraso penalizado. Entretanto, não são apresentados resultados desta aplicação. Deve-se ressaltar que o framework implementa apenas a estratégia de busca local MOLS e as derivações (PSA e MOTS* ), não permitindo que o problema seja solucionado com outro método. 4.13 4.13 Considerações Finais 45 Considerações Finais Diversos trabalhos têm proposto a utilização das abordagens multiagentes e orientada a objetos para o tratamento de metaheurísticas. Alguns destes trabalhos apresentados neste capítulo, tais como A-Teams, arquitetura MAGMA, framework Buscador de Vizinhos, METHOOD definem uma estrutura geral para metaheurísticas. Entretanto, os demais trabalhos, tais como, AGENT-DOSS, DYCoal-VRP, FGAS, MAA-VRPTW, são desenvolvidos para um problema específico, sendo que grande parte deles são voltados para o PRV. A descrição destes trabalhos permite diferenciar a arquitetura AMAM proposta neste trabalho dos demais trabalhos relacionados à utilização de sistemas multiagentes para metaheurísticas. Capítulo 5 Arquitetura Multiagente para Metaheurísticas 5.1 Introdução O objetivo deste capítulo é apresentar a arquitetura AMAM - Arquitetura MultiAgente para Metaheurísticas, para a solução de problemas de otimização combinatória. A arquitetura propõe o acoplamento das diversas metaheurísticas em uma estrutura geral, visando explorar o trabalho cooperativo, no sentido de encontrar melhores soluções para os problemas de otimização. Nesta proposta, cada agente implementa uma certa metaheurística específica e tem autonomia de ação em sua exploração do espaço de busca do problema. Por meio desta exploração, os agentes, em conjunto, buscam encontrar a solução ótima, ou pelo menos, uma solução de “boa” qualidade para o problema tratado. Na arquitetura proposta, os agentes competem entre si pelo alcance da melhor solução viável. Entretanto, por outro lado, eles, em sua ação, também colaboram uns com os outros, trocando e compartilhando informações sobre seu estado e acerca do ambiente, e.g., regiões promissoras do espaço de busca, regiões não recomendadas à exploração, soluções guias, soluções iniciais, parâmetros da busca, dentre outras informações. A arquitetura AMAM foi modelada de modo a ser flexível o bastante para permitir sua utilização em qualquer classe de problemas de otimização combinatória, e escalável, considerando que podem ser adicionados novos agentes, que implementam e encapsulam metaheurísticas específicas, com mínimo impacto no restante da arquitetura, ou seja, trata-se de uma arquitetura de alto nível de abstração. O ambiente, no qual os agentes metaheurísticos existem e atuam, é parte integrante da arquitetura AMAM, devendo ser modelado para cada problema particular de otimização. A arquitetura também define e incorpora os mecanismos de comunicação entre os agentes e entre estes e seu ambiente. Assim, o esforço de modelagem para a criação de uma nova instância da AMAM para tratar diferentes problemas de otimização é minimizado. 46 5.2 Arquitetura Multiagente para Otimização Combinatória 5.2 47 Aspectos desejáveis numa Arquitetura Multiagente para Otimização Combinatória A partir da análise dos trabalhos correlatos à proposta de arquitetura multiagente aqui apresentada, é possível definir alguns aspectos desejáveis a uma arquitetura multiagente para metaheurísticas. Assim, algumas destas características são listadas abaixo: • Os agentes devem ser autônomos; • O ambiente deve ser considerado, e modelado, como uma abstração primária, que fornece as condições de existência dos agentes, no sentido de sua autonomia, conforme aponta a seção 2.4 (Russell e Norvig, 1995), (Santos, 2003), (Santos, 2003), (Weyns et al., 2007); • Para que seja considerada uma arquitetura, é necessário que seja flexível, permitindo desenvolver aplicações para diferentes problemas de otimização combinatória; • A interação dos agentes (comunicação) deve ser assíncrona, visando assegurar a sua autonomia; • A arquitetura deve se basear em mecanismos de ação individuais e coletivos dos agentes, contemplando mecanismos de cooperação, ad hoc ou não, e de competição e seleção dos agentes mais aptos (que estão melhor adaptados ao ambiente); • A aplicação da arquitetura deve ser executada em um sistema computacional distribuído e, eventualmente, heterogêneo. Adicionalmente, esta aplicação, se utilizando um único processador, deve possuir cada agente definido em uma thread separada, de modo a assegurar sua autonomia e assincronicidade; • A adição/remoção de novos agentes deve ser possível em tempo de execução, conforme a necessidade ou disponibilidade do sistema computacional; • Deve ser desejável que novas heurísticas e metaheurísticas possam surgir da cooperação entre os agentes, sem a interferência ou a pré-programação do projetista/operador do software; • Os agentes (ou o sistema) devem ter uma memória dinâmica e persistente dos ambientes, de modo a possibilitar o início de suas atividades a partir de “boas soluções”; • A arquitetura deve ser capaz de tratar igualmente agentes ou sociedades de agentes (grupos), assim como métodos pontuais ou populacionais; • A arquitetura deve ser projetada em alto nível de abstração, sendo, assim, robusta, escalável e, além disso, permitir que suas aplicações específicas sejam desenvolvidas com facilidade. 5.3 Estrutura Geral 48 É importante, no entanto, ressaltar que estas características representam formulações gerais e desejáveis de uma arquitetura multiagente genérica para metaheurísticas, não implicando, portanto, que propostas de cunho semelhante tenham que satisfazer a todos esses aspectos listados para alcançarem êxito em sua implementação. 5.3 Estrutura Geral O principal objetivo da arquitetura AMAM é a definição de uma estrutura geral (framework ), à qual novos agentes (metaheurísticas) possam ser adicionados e na qual diferentes problemas de otimização possam ser solucionados sem grande esforço adicional. Desta forma, esta seção descreve a estrutura da arquitetura AMAM (Silva et al., 2007), que é apresentada na Figura 5.1, definindo seus componentes (agentes e ambiente), bem como as interações entre os agentes e entre esses e o ambiente. A estrutura geral da arquitetura define os tipos de agentes que podem ser instanciados para a busca de soluções de problemas de otimização combinatória. Entretanto, não existe uma forma pré-definida de como os agentes atuarão nesta busca, principalmente em relação ao número de agentes envolvidos. Assim, por se tratar de um framework, o projetista tem a liberdade de utilizar diferentes agentes em sua busca. Por exemplo, pode-se optar por instanciar dois agentes de busca, sendo servidos por soluções iniciais geradas por um único agente construtor. Da mesma forma, alguns agentes metaheurísticas não utilizam Agentes de Busca Local em seu processo de busca. Os principais componentes dessa estrutura são: Ambiente; Agente Construtor; Agente Busca Local; Agente Metaheurísticas; e no centro de tomada de decisão, Agente Coordenador e Agente Analisador de Solução. Ambiente Agente de Busca Local Agente Coordenador Agente Metaheurística Agente Construtor Agente Analisador de Solução Centro de Tomada de Decisão Figura 5.1: Arquitetura Multiagente AMAM. 5.3 Estrutura Geral 49 Nas subseções seguintes, cada um dos elementos da arquitetura é descrito de forma detalhada. 5.3.1 Ambiente de Atuação O ambiente, como já dito na seção 2.4, é um dos principais elementos da arquitetura AMAM. Esta afirmação se justifica considerando que este elemento é aquele que proporciona a flexibilidade da arquitetura. Para isto, o ambiente, na presente proposta, corresponde ao espaço de busca do problema tratado, ou seja, todas as características próprias do problema, independente da forma como este é modelado, são definidas no ambiente. Desta forma, uma das principais contribuições da arquitetura AMAM está na facilidade apresentada por esta para a solução de diferentes problemas de otimização, considerando que a simples troca do ambiente da arquitetura corresponde à troca do problema a ser solucionado pelos agentes. Assim, o esforço computacional para a solução de diferentes problemas é reduzido à modelagem dos seus atributos específicos. A forma geral do ambiente, apresentada na Figura 5.2, define o modelo básico de um problema de otimização combinatória. Esta forma é definida considerandose que, na modelagem de um problema de otimização, é necessário definir a forma como a solução do problema será representada (estrutura Solução), assim como todas as informações essenciais para a busca de soluções que precisam ser conhecidas (estrutura Ambiente). Problema Solução Ambiente Figura 5.2: Modelo do Ambiente. Um exemplo da particularização do modelo geral do ambiente é dado a partir de um problema amplamente conhecido na literatura, qual seja, o Problema da Mochila (Dowsland e Dowsland, 1992), que é apresentado na Figura 5.3. A representação da estrutura Solução para este problema é definida considerando uma lista de n variáveis {s1 , s2 , . . . , sn }, associada a cada um dos objetos, considerando que n é o total de objetos a serem colocados na mochila e cada variável s é definida como 0 (o objeto não está na mochila) ou 1 (o objeto está na mochila). Da mesma forma, a estrutura Problema, no modelo, contém os dados necessários para a busca da solução do problema, que são: os objetos candidatos a entrar na mochila, o peso e o benefício associado à inserção de cada objeto na mochila. Na arquitetura AMAM, as possibilidades de interação entre agente e ambiente são determinadas pela capacidade do agente de perceber as características do problema e de agir através da construção de soluções e da exploração do espaço de busca. Neste sentido, as funções de vizinhança representam uma das principais formas de ação sobre o ambiente, permitindo a construção de novas soluções a partir da 5.3 Estrutura Geral 50 Problema Objetos 1 ... n Peso P1 ... Pn Benefício b1 ... bn s1 Solução s2 ... sn Capacidade Ambiente Figura 5.3: Modelo do ambiente para o Problema da Mochila. modificação de soluções já existentes. É através destas funções de vizinhança (neste trabalho, denominadas como movimentos) que os agentes são capazes de percorrer o espaço de busca, caminhando, de solução em solução, na busca pela melhor solução do problema. Da mesma forma, na construção de soluções iniciais são utilizadas diferentes formas de adição de elementos, que permitem que soluções vazias sejam incrementadas, a partir de um determinado critério de inserção de elementos, até que estejam completas e possibilitem o início do processo de busca. Estas formas de adição de elementos, aqui denominadas como incrementos, capacitam o agente a agir sobre o ambiente construindo soluções. Entretanto, estas operações (movimentos e incrementos), que permitem ao agente atuar sobre a solução (no ambiente), são específicas para cada modelo de problema e precisam ser definidas dentro do ambiente. As ações efetuadas por agentes no ambiente são possíveis através de estímulos enviados, pelos agentes, ao ambiente e que ativam as operações disponíveis neste. Da mesma forma, o ambiente emite estímulos que podem ser captados pelos agentes, caracterizando a percepção das características do ambiente. 5.3.2 Agentes Para uma melhor compreensão da arquitetura AMAM, é importante definir o papel que cada agente desempenha no processo de solução de um problema de otimização. Neste sentido, as responsabilidade e objetivos dos agentes que compõem a estrutura geral da arquitetura são descritos nas seções seguintes. 5.3.2.1 Agente Construtor O Agente Construtor de Solução é constituído por uma heurística construtiva (Blum e Roli, 2003) e é responsável pela construção de soluções iniciais. O processo de construção das heurísticas, como já apresentado no capítulo 3, envolve a soma de componentes em uma solução - inicialmente vazia - até que esta esteja completa. As soluções geradas por este agente serão utilizadas pelos Agentes Busca Local e Agentes Metaheurística na inicialização do seus processos de busca. 5.3 Estrutura Geral 51 O estabelecimento de uma solução inicial para um certo agente é equivalente a se estabelecer a localização desse agente no ambiente (espaço de busca), a partir da qual o agente iniciará seus movimentos exploratórios. Heurísticas construtivas freqüentemente retornam soluções de qualidade inferior quando comparadas com os algoritmos de busca local (Blum e Roli, 2003). Entretanto, soluções iniciais são necessárias para o início do processo, já que métodos heurísticos e metaheurísticos mais complexos dependem de um ponto inicial do espaço de busca, para começar sua exploração. 5.3.2.2 Agentes de Busca Os Agentes Busca Local e Metaheurística são classificados, neste trabalho, como agentes de busca, por possuírem, como principal função, a exploração do espaço de busca do problema. Estes agentes são descritos a seguir. Agente Busca Local. Agentes responsáveis por refinar soluções já encontradas, a partir de algoritmos de Busca Local (Blum e Roli, 2003). O objetivo do Agente Busca Local é caminhar, de vizinho a vizinho, a cada iteração, visando melhorar uma solução já obtida por outro agente. Este agente tem movimentos limitados, o que o mantém dentro de sua vizinhança. Agente Metaheurística. Agentes que utilizam algoritmos baseados em metaheurísticas para encontrar “boas” soluções para problemas de otimização combinatória. O objetivo principal destes agentes é realizar uma melhor exploração do espaço de busca, na tentativa de escapar dos ótimos locais por meio de diferentes estratégias. Os algoritmos implementados por estes agentes, normalmente, utilizam heurísticas subordinadas (busca local) no seu processo de busca. Algumas das principais metaheurísticas encontradas na literatura são apresentadas no capítulo 3, e.g, Algoritmos Genéticos (Koza, 1992), VNS (Hansen et al., 2003), ILS (Lourenço et al., 2001), ACO (Dorigo e Blum, 2005). Estes agentes tem mais capacidade de se movimentar no ambiente (espaço de busca) e podem, eventualmente, realizarem um movimento de “salto” que o leva para outro ponto do espaço, fora de sua vizinhança corrente. Além disso, estes agentes podem atuar de modo cooperativo, na tentativa de alcançarem seu objetivo. A estrutura que define a composição interna dos agentes de busca é discutida na seção 5.3.2.4. 5.3.2.3 Agentes do Centro de Tomada de Decisão As várias formas que definem a organização de uma sociedade de agentes permitem determinar estruturas hierárquicas e diretrizes para que os agentes possam atingir um objetivo comum em cooperação. Nesta proposta, um agente coordenador central é utilizado para intermediar a cooperação entre os demais agentes, caracterizando uma relação de gerência e reduzindo a complexidade de comunicação. Agente Coordenador. Agente que tem a função de coordenar as atividades e a comunicação entre os agentes no sistema multiagente. Em seu trabalho de coordenação, este agente, além de realizar trocas de informações, tem também a responsabilidade por realizar negociações, acordos e tradução das mensagens entre os diferentes agentes. A cooperação entre os agentes surge por meio do envio de informações, como regiões promissoras do espaço de busca, regiões não recomendadas 5.3 Estrutura Geral 52 à exploração, soluções guias, soluções iniciais ou parâmetros da busca. A comunicação entre os agentes acontece através da troca de mensagens. Desta forma, o agente coordenador conhece todos os outros agentes da arquitetura, e é responsável, quando recebe uma mensagem com alguma solicitação de serviço, por encaminhá-la para o agente que pode realizar a operação solicitada. Outros tipos de comunicação também podem ser realizadas através do ambiente. Agente Analisador de Soluções. Agente responsável pela análise e tomada de decisão com relação às soluções obtidas pelos Agentes Metaheurísticos, selecionando, dentre elas, a melhor solução. A análise das soluções realizada por este agente pode variar de acordo com a estratégia implementada pelo Agente Metaheurística, podendo ser, por exemplo, probabilística. Uma importante contribuição, obtida a partir do Agente Analisador, está na possibilidade de utilização de diferentes formas de escolha da “melhor” solução, baseada em técnicas mais complexas, sem que grande esforço de implementação seja feito. 5.3.2.4 Estrutura Interna dos Agentes de Busca Os Agentes Busca Local e Metaheurísticos possuem uma mesma estrutura interna genérica, diferindo entre si apenas nos métodos implementados. Esta estrutura genérica é baseada na arquitetura geral de um agente proposta em Resende (2003). Desta forma, a partir de uma definição geral, torna-se bastante simplificado o projeto de novos agentes de busca. A figura 5.4 apresenta um diagrama ilustrativo dos principais componentes internos desta estrutura e que são descritos a seguir: - Base de Conhecimento: componente que mantém informações acerca do ambiente, informações necessárias para a comunicação entre os agentes, informações sobre os demais agentes, bem como o histórico de busca do próprio agente; - Interface de Comunicação: define os protocolos de comunicação entre os agentes, permitindo a troca de mensagens entre eles. - Interface com o Ambiente: envolve os sensores e efetores do agente. Os sensores possibilitam ao agente perceber o ambiente, enquanto os atuadores proporcionam ao agente a capacidade de agir e modificar seu ambiente; - Centro de Tomada de Decisão: componente responsável por tomar decisões com base nos conhecimentos obtidos, nos objetivos e nas estratégias do agente. Ele deve definir qual o melhor caminho para a busca do agente; - Agenda de Objetivos: lista de objetivos e de restrições a serem satisfeitas, obtida a partir do ambiente (ou seja, do problema particular de otimização combinatória a ser resolvido); - Estratégias: encapsula a estratégia de busca do agente, ou seja, o algoritmo da heurística ou metaheurística implementada. Este componente é responsável por encontrar soluções para o problema representado pelo ambiente. Desta forma, possibilita o isolamento do problema e do método utilizado em sua solução e permite que esta estrutura geral possa ser usada na definição de qualquer agente de busca; 5.4 Algumas Especializações da Arquitetura AMAM Base de Conhecimento dados percebidos 53 Estratégias e comunicados Centro de Tomada de Decisão dados percebidos e comunicados decisão Controlador dados percebidos conteúdo da ação Interface com o Ambiente Sensores perceção Agenda de Objetivos conteúdo da comunicação Interface de Comunicação Efetores (Protocolos de Interação) ação mensagens Ambiente Agentes Figura 5.4: Estrutura Interna dos Agentes de Busca. - Controlador: intermedeia e coordena todo o processo interno do agente, ou seja, as trocas de informações entre seus componentes internos. Em linhas gerais, o modus operandi de um certo agente de busca pode ser resumido assim: por meio dos sensores, em sua interface com o ambiente, o agente captura as características do ambiente (dados necessários para a solução do problema em questão), enquanto os seus atuadores constroem e modificam as soluções (posicionam ou reposicionam o agente em seu ambiente). Neste processo, o agente pode se comunicar com outros agentes, via sua interface de comunicação. Assim, pode obter a colaboração destes, através da troca de informações úteis para a busca. Tanto os dados percebidos do ambiente quanto aqueles comunicados por outros agentes são usados para auxiliar a tomada de decisão do agente. Durante todo o processo de busca, o centro de tomada de decisão realiza escolhas, visando minimizar (ou maximizar) a função de custo do problema. 5.4 Algumas Especializações da Arquitetura AMAM O objetivo desta seção é mostrar como as metaheurísticas, já abordadas neste trabalho, no capítulo 3, podem ser acomodadas na estrutura geral da arquitetura AMAM. Neste sentido, a arquitetura é instanciada tanto para os métodos baseados 5.4 Algumas Especializações da Arquitetura AMAM 54 em um único ponto quanto para os métodos populacionais, demonstrando seu caráter genérico. Entretanto, como grande parte das metaheurísticas envolvidas neste trabalho possui, como métodos subordinados, heurísticas de construção e de busca local, a particularização da arquitetura para estes métodos é inicialmente apresentada. Assim, considerando-se heurísticas de construção, que estão fortemente ligadas ao problema a ser tratado, já que manipulam elemento a elemento na construção da solução inicial, o algoritmo foi ajustado ao interesses da proposta, como mostra a figura 5.5. Algoritmo Construção ( ) 1 início 2 Inicializa o conjunto C de elementos candidatos; 3 enquanto (conjunto C não está vazio) 4 Emax = seleciona um elemento no conjunto C de elementos candidatos; 5 s s U Emax Adição de elemento na solução através de estímulos enviados ao ambiente, ativando um incremento. 6 Atualiza o conjunto C de elementos candidatos; 7 fim enquanto; 8 fim. Figura 5.5: Algoritmo para um Agente Construtor Básico. A forma de adição dos elementos na solução, presente em um algoritmo de construção, é o componente que está diretamente vinculado com o problema. Desta forma, como uma adaptação da estrutura incremento, proposta por Andreatta et al. (1998), é definida a possibilidade de interação do agente com o ambiente, que permite que este adicione elementos em uma solução, independente da forma como o elemento é escolhido. A figura 5.5 apresenta o algoritmo de uma construção básica, na qual a forma como o elemento, que será inserido na solução (linha 4), é escolhido depende da heurística implementada, e.g., heurística gulosa ou aleatória. Assim, um Agente Construtor define as “coordenadas do ambiente” onde o agente será criado. As heurísticas de busca local operam sobre a solução por meio de estruturas de vizinhança. Estas estruturas, por sua vez, também dependem do modelo do problema. Considerando-se esta afirmação, uma segunda adaptação, relacionada à estrutura movimento, igualmente proposta por Andreatta et al. (1998), é determinada como forma de atuação do agente sobre uma solução. A figura 5.6 mostra como, a partir da adaptação para a arquitetura AMAM, o agente, implementando um algoritmo de busca local, faz movimentos sobre as soluções, emitindo estímulos para o ambiente (linha 3) e possibilitando, assim, a modificação das soluções e a conseqüente exploração do espaço de busca. 5.4 Algumas Especializações da Arquitetura AMAM 55 Algoritmo BuscaLocalBásica ( ) 1 início 2 enquanto (Critério de Parada) não for satisfeito 3 GeraVizinho( ); Modificação da solução através de estímulos enviados ao ambiente, ativando um movimento. 4 SelecionaMelhorSolução; 5 fim enquanto; 6 fim. Figura 5.6: Algoritmo para um Agente de Busca Local básico. 5.4.1 Especialização da Arquitetura AMAM para a Metaheurística ACO A metaheurística ACO (Ant Colony Optimization) pode ser descrita por meio da arquitetura AMAM, na forma apresentada na figura 5.7. O Agente Metaheurística ACO utiliza, em seu processo de busca, soluções iniciais geradas por um Agente Construtor, que escolhe seus elementos baseado em uma matriz de feromônio situada no ambiente da arquitetura, assim como refina suas soluções utilizando um Agente Busca Local. Ambiente Agente Busca Local Agente Coordenador Agente ACO Agente Construtor (baseado em feromônio) Agente Analisador de Solução Figura 5.7: Especialização da Arquitetura AMAM para a metaheurística ACO. A figura 5.8 demonstra como o algoritmo ACO pode ser adaptado para a arquitetura proposta. Neste sentido, o método de busca local, a ser implementando pelo Agente Busca Local, será definido pelo projetista e o Agente Analisador é responsável por determinar a melhor solução, de acordo com o critério selecionado. A atualização do rastro de feromônio (linha 7) é realizada através de estímulos enviados ao ambiente, já que a matriz de feromônio está definida nele. 5.4 Algumas Especializações da Arquitetura AMAM 56 Assim, de acordo com a figura 5.8, uma formiga utiliza o Agente Construtor para construir sua solução inicial, refina esta solução através do Agente Busca Local, solicita ao Agente Analisador a seleção da melhor solução, dentre a sua solução e a encontrada por outra formiga e, por fim, emite estímulos ao ambiente, para a atualização do feromônio baseado na solução obtida. Algoritmo ACO ( ) 1 início 2 enquanto (Critério de Parada) não for satisfeito 3 para cada formiga (até m formigas) 4 Contrói uma solução inicial usando o rastro de feromônio; 5 s' 6 Seleciona melhor solução 7 BuscaLocal(si); Atualiza rastro de feromonio; fim para; 8 9 fim enquanto; 10 fim. Agente Construtor (agente modelado para construção de solução baseada em feromônio). Agente Busca Local (o método escolhido pelo projetista). Agente Analisador define qual a melhor solução. Estímulo enviado ao ambiente ativando a atualização do feromônio. Figura 5.8: Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística ACO. 5.4.2 Especialização da Arquitetura AMAM para a Metaheurística Algoritmos Genéticos A arquitetura AMAM pode ser também utilizada para descrever a metaheurística Algoritmos Genéticos (AG). A figura 5.9 ilustra os agentes necessários para representar a metaheurística AG na arquitetura. Assim, o Agente Construtor, neste caso, deve construir uma população de soluções iniciais, ou seja, ele deve ser capaz de gerar um conjunto de soluções para iniciar o processo de busca do AG. Entretanto, como se observa na figura 5.9, o método AG não utiliza Agente de Busca Local. A figura 5.10 mostra a especialização do algoritmo AG para os propósitos da arquitetura. No processo de solução do método AG, após geradas as soluções iniciais, as soluções são modificadas a partir de operações genéticas como recombinação, crossover e mutação. Nesta proposta, estas operações são definidas a partir do 5.4 Algumas Especializações da Arquitetura AMAM 57 Ambiente Agente Coordenador Agente Construtor Agente AG (Constrói todas as soluções da População - tamanho n) Agente Analisador de Solução Figura 5.9: Especialização da Arquitetura AMAM para a metaheurística AG. Algoritmo AG ( ) 1 início 2 t 0; 3 GeraPopulaçãoInicial P(t); Agente Construtor (construção de n (tamanho da população) soluções iniciais) 4 Avalia P(t); 5 6 enquanto (Critério de Parada) não for satisfeito t t + 1; 7 GeraPopulação P(t) a partir de P(t - 1); 8 Avalia P(t); 9 PopulaçãoSobrevivente 10 fim enquanto; 11 fim. Modificação da população P(t) através de estímulos enviados ao ambiente, ativando um movimento. Agente Analisador seleciona a população sobrevivente. P(t); Figura 5.10: Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística AG. movimento (estrutura de vizinhança), ou seja, as possibilidades de modificações de uma solução. Assim, qualquer uma destas operações genéticas pode ser realizada através do envio de estímulos ao ambiente. Neste método, todas as populações de soluções geradas passam por uma avaliação, que seleciona qual a população que deve sobreviver, baseado em critérios tais 5.4 Algumas Especializações da Arquitetura AMAM 58 como roleta, que permite que indivíduos menos aptos sejam selecionados, possibilitando escapar de ótimos locais. A função de avaliar a população de soluções, nesta especialização, é responsabilidade do Agente Analisador de Solução. 5.4.3 Especialização da Arquitetura AMAM para a Metaheurística Simulated Annealing A terceira metaheurística a ser descrita através da Arquitetura AMAM, Simulated Annealing, é apresentada na figura 5.11. Considerando suas características, o algoritmo Simulated Annealing não utiliza Agente Busca Local e seu Agente construtor pode ser implementado utilizando-se qualquer método de construção. Ambiente Agente Coordenador Agente Simulated Annealing Agente Construtor Agente Analisador de Solução Figura 5.11: Especialização da Arquitetura AMAM para a metaheurística SA. Através de estímulos enviados ao ambiente, o Agente Metaheurística SA gera um vizinho da solução corrente (linha 5 da figura 5.12). Esta solução vizinha será analisada pelo Agente Analisador de Soluções, de acordo com um mecanismo probabilístico, baseado na termodinâmica, no qual a probabilidade de que um movimento seja aceito decresce durante a busca. O cálculo desta probabilidade envolve um parâmetro T (temperatura) que diminui no decorrer da busca. 5.4.4 Instância da Arquitetura AMAM para a Metaheurística Busca Tabu A metaheurística Busca Tabu utiliza uma lista de movimentos proibidos, chamada de Lista Tabu, para evitar que seu processo de busca entre em ciclagem. Neste sentido, a Busca Tabu é especializada na forma da figura 5.13, na qual o Agente Busca Local é projetado para explorar apenas as soluções que não violam a lista tabu. A figura 5.14 mostra como a Busca Tabu pode ser encaixada nos interesses da arquitetura. A solução inicial pode ser solicitada a qualquer Agente Construtor disponível. Desta forma, após definidos os movimentos permitidos (que não estão na lista tabu), a busca local é realizada pelo Agente Busca Local, e a melhor solução é selecionada pelo Agente Analisador de Solução. 5.4 Algumas Especializações da Arquitetura AMAM Algoritmo SA ( ) 1 início Agente Construtor (construção de n (tamanho da população) soluções iniciais) 2 GeraSoluçãoInicial; 3 4 T T0; enquanto (Critério de Parada) não for satisfeito 5 s 6 7 8 9 se f(s') < f(s) s s; senão Aceita s' como nova solução com probabilidade p(T, s', s); fim se; 10 59 GeraVizinho(solucaoinicial); Modificação da população P(t) através de estímulos enviados ao ambiente, ativando movimentos. Agente Analisador define qual a melhor solução. 11 AtualizaTemperatura(T); 12 fim enquanto; 13 fim. Figura 5.12: Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística SA. Ambiente Agente Busca Local (que melhora a solução com movimentos ‘ que não violam a Lista Tabu) Agente Coordenador Agente Construtor Agente Analisador de Solução Agente Busca Tabu Figura 5.13: Especialização da Arquitetura AMAM para a metaheurística BT. 5.4.5 Especialização da Arquitetura AMAM para a Metaheurística GRASP A metaheurística GRASP tem como elemento chave no seu processo de busca a construção de soluções iniciais baseada em um método guloso aleatório. Assim, para a especialização deste método para a arquitetura AMAM, como mostra a figura 5.15, 5.4 Algumas Especializações da Arquitetura AMAM 60 Algoritmo BT ( ) 1 início Agente Construtor (o método escolhido pelo projetista). 2 GeraSoluçãoInicial; 3 4 5 InicializaListaTabu(LT); enquanto (Critério de Parada) não for satisfeito MovimentosPermitidos s’ pertencente a vizinhança que não viola a Lista Tabu LT; 6 s BuscaLocal(MovimentosPermitidos); 7 Seleciona Melhor Solução; Agente Busca Local (o método escolhido pelo projetista). Agente Analisador define qual a melhor solução. 8 AtualizaListaTabu(LT); 9 fim enquanto; 10 fim. Figura 5.14: Especialização da Arquitetura AMAM para a metaheurística BT. um Agente Construtor Guloso Aleatório é definido. A cada iteração do método Ambiente Agente Busca Local Agente Coordenador Agente GRASP Agente Construtor Guloso Aleatório Agente Analisador de Solução Figura 5.15: Especialização da Arquitetura AMAM para a metaheurística GRASP. GRASP, uma nova solução é gerada pelo seu Agente Construtor (veja figura 5.16), permitindo que a busca escape de ótimos locais, através da alternância do ponto de partida. De acordo com a figura 5.16, o refinamento da solução pode ser realizado por qualquer Agente de Busca Local, e a seleção da solução é feita pelo Agente Analisador de Soluções. 5.4 Algumas Especializações da Arquitetura AMAM 61 Algoritmo GRASP ( ) 1 início 2 enquanto (Critério de Parada) não for satisfeito 3 Constrói uma solução inicial s com um procedimento guloso aleatório; 4 BuscaLocal(s); 5 Seleciona Melhor Solução; Agente Construtor (com um procedimento guloso aleatório). Agente Busca Local (o método escolhido pelo projetista). Agente Analisador define qual a melhor solução. 6 fim enquanto; 7 fim. Figura 5.16: Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística GRASP. 5.4.6 Especialização da Arquitetura AMAM para a Metaheurística VNS O Agente Construtor e o Agente Busca Local são indispensáveis na definição da arquitetura AMAM para a metaheurística VNS (figura 5.17), adaptando-se perfeitamente à arquitetura básica. Entretanto, os métodos implementados por estes agentes não são pré-definidos, como em outros casos. O método VNS utiliza várias Ambiente Agente Busca Local Agente Coordenador Agente VNS Agente Construtor Agente Analisador de Solução Figura 5.17: Especialização da Arquitetura AMAM para a metaheurística VNS. estruturas de vizinhança em sua busca por soluções, como estratégia para escapar de ótimos locais. Neste sentido, como mostra a figura 5.18, uma estrutura função de vizinhança é definida para enumerar os tipos de movimentos disponíveis no ambiente. O processo se inicia com a geração de uma solução inicial (Agente Construtor), 5.4 Algumas Especializações da Arquitetura AMAM 62 Algoritmo VNS ( ) 1 início Agente Construtor (o método escolhido pelo projetista). 2 GeraSoluçãoInicial( ); 3 4 funçãovizinhança 1; enquanto (Critério de Parada) não for satisfeito 5 6 7 8 9 10 11 s GeraVizinho(solução inicial, funçãovizinhança); s' BuscaLocal(s); Modificação da solução através de estímulos enviados ao ambiente, ativando um movimento. Agente Busca Local (o método escolhido pelo projetista). se f(s') < f(s) s s; senão TrocaFunçãoVizinhança(funçãoVizinhança); fim se; Agente Analisador define qual a melhor solução. 12 fim enquanto; 13 fim. Figura 5.18: Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística VNS. seguida pela definição da função de vizinhança corrente, que determina qual movimento será executado quando um estímulo for emitido pelo agente. Esta função de vizinhança é usada para gerar um vizinho da solução (estímulo enviado ao ambiente), que será refinado pelo Agente Busca Local. O Agente Analisador de Solução tem um papel importante na seleção da melhor solução, já que, caso não haja melhora na solução encontrada pela busca local, uma nova função de vizinhança deve ser definida. Esta troca de função de vizinhança possibilita ao VNS explorar diferentes partes do espaço de busca. 5.4.7 Especilização da Arquitetura AMAM para a Metaheurística ILS A metaheurística ILS, assim como as demais metaheurísticas baseadas em busca local, é facilmente descrita a partir da arquitetura AMAM. A figura 5.19 mostra como esta especialização é definida. Assim, levando-se em consideração a forma geral do algoritmo ILS, uma solução inicial pode ser solicitada a qualquer Agente Construtor disponível, assim como o refinamento também pode ser realizado por qualquer Agente Busca Local. A estratégia usada pelo ILS para escapar de ótimos locais é a execução de saltos no gráfico de soluções, através da perturbação. Para a perturbação da solução corrente, é usado uma estrutura de vizinhança que modifica a solução, levando-a 5.4 Algumas Especializações da Arquitetura AMAM 63 Ambiente Agente Busca Local Agente Coordenador Agente ILS Agente Construtor Agente Analisador de Solução Figura 5.19: Especialização da Arquitetura AMAM para a metaheurística ILS. Algoritmo ILS ( ) 1 início Agente Construtor (o método escolhido pelo projetista). 2 s0 GeraSoluçãoInicial( ); 3 s* BuscaLocal(s0); 4 enquanto (Critério de Parada) não for satisfeito 5 s’ Pertubação(s*); 6 s’’ BuscaLocal(s’); 7 s* CritérioDeAceitação(s’’,s*); Modificação da solução através de estímulos enviados ao ambiente, ativando um movimento. Agente Busca Local (o método escolhido pelo projetista). Agente Analisador define qual a melhor solução. 12 fim enquanto; 13 fim. Figura 5.20: Algoritmo para uma especialização da Arquitetura AMAM para a metaheurística ILS. para outra região do espaço de busca. Na arquitetura proposta, isto é possível por meio dos movimentos disponíveis no ambiente. Assim, a cada iteração, o Agente ILS emite estímulos ao ambiente, ativando um movimento escolhido para a perturbação da solução, como mostra a figura 5.20. Em seguida, a solução obtida será refinada 5.5 Modelagem 64 pelo Agente Busca Local. Ao final da iteração, o Agente Analisador seleciona a melhor solução, de acordo com algum critério de aceitação pré-estabelecido. 5.5 Modelagem UML aplicada à AMAM A arquitetura AMAM foi modelada utilizando-se a Linguagem de Modelagem Unificada (UML - Unified Modeling Language), que foi desenvolvida em trabalhos realizados por Grady Booch, James Rumbaugh e Ivar Jacobson, que resultaram no estabelecimento de uma única especificação padrão. Uma descrição detalhada da UML pode ser encontrada em Booch et al. (1998). A figura 5.21 apresenta o modelo que ilustra as relações entre os agentes e entre esses e seu ambiente. A partir desse modelo simplificado da arquitetura AMAM, é possível melhor identificar suas principais classes, que são descritas a seguir. (i) Problema: contém todas as informações do problema tratado, necessárias para a solução deste. Freqüentemente, estas informações são obtidas a partir de problemas-teste; (ii) Solução: encapsula a representação da solução do problema tratado. Contém elementos como a função objetivo e penalidades; (iii) Movimento: encapsula o algoritmo de cada estrutura de vizinhança, ou seja, os movimentos que podem ser realizados sobre uma solução, gerando uma nova solução, vizinha ou não. (iv) Incremento: encapsula o algoritmo de cada forma de incremento, ou seja, a adição de elementos em uma solução vazia. (v) Agente Construtor: é composto pela estratégia de construção, um sensor e um atuador. A estratégia define o método implementado pelo agente. O sensor e o atuador permitem ao agente interagir com o ambiente e com os outros agentes. (vi) Agente de Busca: como o Agente Construtor, este agente também é composto por uma estratégia, um sensor e um atuador. A estratégia define o método implementado pelo agente. O tipo de Agente de Busca (Agente Busca Local ou Agente Metaheurística) depende da estratégia utilizada. (vii) Agente Coordenador: intermedeia a interação entre os agentes. Este agente também possui um sensor e um atuador, que o possibilita relacionar com os outros agentes. Apenas a comunicação direta, (i.e., que não é realizada via alterações no ambiente) entre os agentes é intermediada pelo Agente Coordenador. (viii) Agente Analisador de Soluções: implementa métodos de seleção de soluções, de acordo com a heurística implementada, possibilitando que formas mais complexas sejam utilizadas na escolha das soluções. Para perceber soluções e as características necessárias para a seleção destas, este agente utiliza, assim como todos os outro agentes, um sensor, assim como sua ação é realizada através de um atuador. 5.5 Modelagem 65 Agente_Analisador estimula Analisador percebe Ambiente Incremento interage incrementa Agente_Coordenador Solução estimula Movimento usa Problema modifica Coordenador percebe interage estimula Agente_Construção Agente_Busca Local interage interage Agente_Metaheurística percebe estimula <<interface>> Construção Construção1 percebe <<interface>> Busca_Local ConstruçãoN Busca_Local1 Busca_LocalN <<interface>> Metaheurística Metaheurística1 MetaheurísticaN Figura 5.21: Modelagem simplificada da Arquitetura AMAM. Considerando este modelo simplificado, um novo modelo (veja figura 5.22) é apresentado para descrever, com maiores detalhes, a arquitetura proposta. Neste modelo, foram utilizados padrões de projeto, com o objetivo de desenvolver uma arquitetura projetada a partir de encapsulamento, acoplamento fraco e responsabilidades bem definidas. Estes padrões fornecem alternativas de projeto que permitem que um sistema seja reutilizável, melhorando, também, a documentação e a manutenção deste sistema. Uma discussão detalhada dos padrões de projeto é apresentado em Gamma et al. (1995), assim como um tutorial utilizando a linguagem Java pode ser encontrado em Cooper (2000). Neste sentido, o primeiro padrão utilizado é o Mediador (Mediator ), que define a implementação do Agente Coordenador para intermediar a comunicação entre os agentes. Considerando-se que o comportamento de um sistema é dividido entre classes, o número de classes envolvidas pode crescer até que a comunicação entre Descida Agente_Busca Primeiro_Melhora Busca_Local <<interface>> O Padrão Estratégia define uma família de algoritmos, encapsula cada um, e os fazem trocáveos. Este padrão permite que o algoritmo varie independentemente dos clientes que o usa. A solução é um conteiner de soluções, que permite, no caso de metaheurísticas populacionais que todas as soluções sejam tratadas em uma mesma estrutura. Busca_Local Estratégia_Busca <<interface>> percebe_infomações ILS estímulo Incremento1 Busca_Tabu Metaheurística Sensor Atuador O padrão Fachada é usado nas Interfaces do Agentes para fornecer uma interface unificada para um conjunto de interfaces em um subsistema. Estruturar um sistema em subsistemas ajuda a reduzir a complexidade. interage percebe_infomações IncrementoN MetaheurísticaN interage Interface <<interface>> percebe_infomações atua_efetuando MovimentoN Incremento Movimento1 <<interface>> movimenta Melhor_Solução Movimento movimenta Solução_Corrente Solução <<interface>> usa_informações Problema <<interface>> Operações_Solução incrementa Solução_Inicial Pacote_Solução Ambiente Atuador Sensor Atuador interage estímulo Analisador_De_Solução Coordenador percebe_infomações Gulosa percebe_infomações estímulo percebe_infomações estímulo Sensor interage Interface Agente_Analisador atua_efetuando Atuador Sensor Interface Agente_Coordenador interage interage Interface Agente_Coordenador <<interface>> Aleatória Estratégia_Construção Agente Coordenador é implementado utilizando o padrão Mediador, que define um objeto que encapsula a forma como um conjunto de objetos interage. ConstruçãoN 5.5 Modelagem 66 Figura 5.22: Modelo Detalhado da Arquitetura AMAM. estas se torne mais complexa. Para que uma classe se comunique com outra, é preciso que ela possua uma referência desta outra classe, o que, mais adiante, pode tornar o sistema difícil de ser alterado. Assim, o padrão mediador simplifica este 5.5 Modelagem Agente_Construtor Agente_Busca_Local Agente_Metaheurística 67 interação interação Agente_Coordenador interação Agente_Analisador_Soluções interação Figura 5.23: Interações entre os agentes e o mediador. sistema, sendo a única classe que conhece as outras classes. Logo, se houver alguma mudança, o mediador é o único que precisará ser modificado. Este padrão permite também o desacoplamento das partes do sistema, definindo uma interface entre subsistemas. No caso da arquitetura AMAM, como mostra a figura 5.23, os agentes enviam e recebem requisições do Agente Coordenador, e este agente implementa o comportamento cooperativo, pelo roteamento das requisições aos agentes apropriados. Entretanto, o Agente Coordenador não é a única forma de comunicação entre agentes, pois estes podem se comunicar através da troca de estímulos com o ambiente. Assim, o ambiente se torna, também, um mediador (indireto) da comunicação entre os diversos agentes da arquitetura. <<interface>> Estratégia_Construção Gulosa Aleatória ConstruçãoN Figura 5.24: Padrão Estratégia na definição dos Agentes Construtores. De acordo com Gamma et al. (1995), o Padrão Estratégia (Strategy) define uma família de algoritmos, encapsula cada um, e os fazem substituíveis, deixando, assim, o algoritmo variar independentemente dos clientes que usam. Desta forma, este padrão é utilizado, na arquitetura AMAM, na definição do projeto dos métodos implementados pelos agentes. Os Agentes Construtores se diferenciam apenas pela estratégia de construção implementada, ou seja, agentes semelhantes, com comportamentos diferenciados. Através deste padrão, é possível definir uma família de Agentes Construtores (veja figura 5.24), permitindo-se que um agente construtor seja criado sendo necessário apenas a escolha do método de construção. Além disso, em tempo de execução, os Agentes Construtores podem ser substituídos por outros. O Padrão Estratégia, através do encapsulamento do método em uma classe separada, permite a variação do método independentemente do contexto em que está inserido, facilitando possíveis mudanças e a extensão do método. Da mesma forma, o Padrão Estratégia é usado na definição dos Agentes de Busca (Busca Local e Metaheurística), por se tratarem de agentes que implementam métodos de busca e possuem forte semelhança, distinguindo-se apenas pelo método implementado. Assim, o Padrão Estratégia é utilizado tanto para definir a família de Agentes de Busca quanto para definir duas subfamílias: Agentes de Busca Local e Agentes Metaheurísticas, como mostra a figura 5.25. Estas subfamílias, assim como 5.6 Modelagem 68 nos demais casos de estratégia, implementam variantes de algoritmos de busca e definem agentes que se diferem apenas no comportamento. O Padrão Estratégia é <<interface>> Estratégia_Busca <<interface>> <<interface>> Busca_Local Descida Metaheurística Primeiro_Melhora Busca_Local ILS Busca_Tabu MetaheurísticaN Figura 5.25: Padrão Estratégia na definição dos Agentes de Busca. novamente utilizado na definição das famílias de movimentos e de incrementos, que são os métodos de modificação de uma solução. Movimentos e incrementos também se diferem no comportamento apresentado. Assim, o padrão estratégia é utilizado no projeto destes elementos como mostra a figura 5.26. <<interface>> <<interface>> Movimento Incremento Movimento1 MovimentoN Incremento1 IncrementoN Figura 5.26: Padrão Estratégia na definição dos Agentes de Busca. Agente Interface Sensor percebe_ informações Atuador estímulo Estratégia Figura 5.27: Padrão Fachada na definição de uma interface para os Agentes. Outro padrão de projeto utilizado na modelagem da arquitetura AMAM é o Padrão Fachada (Facade). O Padrão Fachada fornece uma interface unificada para um conjunto de objetos, formando um subsistema fácil de usar. Esse estrutura um sistema em subsistemas e ajuda a reduzir a complexidade (Gamma et al., 1995). Este padrão foi utilizado na arquitetura proposta, com o objetivo de fornecer uma interface entre o agente e o restante do sistema (ambiente e demais agentes), como ilustra a figura 5.27. Assim, cada agente possui uma interface de interação que, por meio dos sensores e efetores, permite que o agente se relacione no sistema. 5.6 5.6 Considerações Finais 69 Considerações Finais A arquitetura AMAM combina diversas metaheurísticas, sendo que cada uma delas é definida como um agente autônomo, capaz de realizar a exploração do espaço de busca de um problema de otimização combinatória. Desta forma, o espaço de busca do problema é definido como o ambiente da arquitetura multiagente proposta. Uma estrutura geral da arquitetura AMAM é apresentada, com os principais elementos que a define. Os agentes presentes nesta estrutura podem ser instanciados em diferentes configurações para a busca da solução do problema em questão. A definição de uma estrutura interna para os agentes de busca identifica os principais elementos e possibilidades de interação entre estes agentes e o seu ambiente, simplificando assim o projeto de novos agentes de busca. Em seguida, com o objetivo de apresentar cada uma das principais metaheurística na arquitetura AMAM, algumas especializações dessa arquitetura. A partir destas especializações, é possível visualizar como metaheurísticas baseadas em um único ponto e metaheurísticas baseadas em população podem ser facilmente adaptadas à arquitetura proposta. O modelo da arquitetura, definido utilizando a linguagem de modelagem UML, permite a descrição dos detalhes de implementação, assim como padrões de projeto utilizados. Capítulo 6 Experimentos Computacionais 6.1 Introdução A arquitetura AMAM é uma arquitetura de propósito geral, voltada para tratar problemas de otimização combinatória. Ela pode, em princípio, ser utilizada na solução de diferentes problemas, pela simples instanciação da arquitetura, com sua conseqüente especialização, porém, sem requerer mudanças significativas na mesma. O objetivo central deste capítulo é apresentar especializações da arquitetura AMAM, buscando: (1) mostrar o correto funcionamento da arquitetura; e (2) mostrar que a adição de novos agentes pode melhorar o desempenho da arquitetura como um todo. Cinco especializações da arquitetura AMAM foram utilizadas na realização dos experimentos computacionais. São: (1) AMAM-ILS: utiliza apenas um Agente Metaheurística implementando o método ILS; (2) AMAM-VNS: utiliza apenas um Agente Metaheurística implementando o método VNS; (3) AMAM-ILS-ILS: utiliza dois Agentes Metaheurísticas, sendo que os dois agentes implementam o método ILS; (3) AMAM-VNS-VNS: utiliza dois Agentes Metaheurísticas, sendo que os dois agentes implementam o método VNS; e (4) AMAM-ILS-VNS: utiliza dois Agentes Metaheurísticas, sendo que um implementa o método ILS e o outro implementa o método VNS. O problema de otimização utilizado nas especializações apresentadas é o Problema de Roteamento de Veículos com Janela de Tempo, que será melhor discutido na seção 6.2. A seção 6.3 descreve as heurísticas e metaheurísticas utilizadas nas especializações desenvolvidas. É importante ressaltar que não é objetivo deste trabalho superar as melhores soluções encontradas na literatura para o problema em análise, mas, sim, apontar as características e benefícios obtidos a partir da perspectiva multiagente, tais como flexibilidade, escalabilidade e encapsulamento. 70 6.2 Problema de Roteamento de Veículos com Janela de Tempo 6.2 71 Problema de Roteamento de Veículos com Janela de Tempo O Problema de Roteamento de Veículos (PRV) é um problema de otimização combinatória bem conhecido e de grande relevância econômica, principalmente em sistemas logísticos e de transporte. Este problema tem recebido, nas últimas décadas, considerável atenção na literatura, sendo que uma boa referência para sua revisão é a coletânea de artigos apresentada em Toth e Vigo (2002). O PRV é um problema de transporte de bens de consumo e produtos que busca encontrar a melhor rota, partindo de um depósito, para atender clientes espalhados geograficamente por meio de uma frota de veículos. Esse problema pode gerar variações para muitos domínios do mundo real, como, por exemplo, serviços de coleta/entrega e distribuição de petróleo. O problema pode ser representado como um problema de teoria de grafos, no qual G = (V, A) é um grafo completo, V é o conjunto de vértices (clientes e o depósito, normalmente nomeado como vértice zero) e A é o conjunto de arcos (o caminho que liga todos os clientes e o depósito, representando a distância entre eles). Uma demanda não negativa qi é associada a cada vértice, e um custo cij é associado com cada arco em A. A figura 6.1(A) mostra um exemplo de um PRV com 11 clientes. Como solução para o PRV obtém-se um conjunto de rotas (veja figura 6.1), na qual, cada rota é representada por uma lista ordenada de clientes que determinam a seqüência em que devem ser atendidos. (A) qi 11 (B) 9 1 6 10 5 4 [ai,bi] Cliente 9 6 8 2 7 3 ci 1 8 2 Depósito 11 10 7 3 5 4 Figura 6.1: (A) grafo que representa o PRVJT e (B) grafo que representa uma solução para o PRVJT. O Problema de Roteamento de Veículos, por ser um problema de otimização, pode ser formulado como um problema de programação matemática, definido por uma função objetivo e um conjunto de restrições. O objetivo mais comum é a minimização do custo de transporte, na forma de uma função da distância percorrida ou do tempo de viagem; os custos com veículos e motoristas podem ser considerados fixos e, então, o número de veículos pode também ser minimizado. A função objetivo também pode ser usada para representar restrições suaves, que, quando violadas, pagam penalidades (Rizzoli et al., 2004). Existem muitas variantes do PRV, sendo que estas se diferenciam pelas restrições adicionadas à versão básica do problema. Assim, a versão básica do PRV, 6.2 Modelagem do PRVJT 72 conhecida como PRV com Capacidade (PRVC), é caracterizada pela restrição de capacidade limitada dos veículos. O objetivo do PRVC é minimizar o custo total da viagem, expresso como a distância necessária para atender os clientes. Nessa versão, encontram-se as seguintes restrições para o problema: (i) as demandas dos clientes são determinísticas e conhecidas com antecedência; (ii) entregas não podem ser divididas, ou seja, um pedido de um cliente não pode ser atendido usando dois ou mais veículos; (iii) a frota de veículos é homogênea, de modo que todos os veículos são iguais em todas as características; (iv) existe somente um depósito. Desta forma, como dito acima, as variações do PRV surgem a partir da adição de novas restrições, como janelas de tempo, acessibilidade, demandas dinâmicas. Alguns exemplos de variantes são: o PRV com Janela de Tempo (e sua variante Dependente de Tempo), o PRV com Coleta e Entrega, e o PRV Dinâmico, entre outros. Muitos trabalhos têm dedicado uma atenção especial ao Problema de Roteamento de Veículos com Janela de Tempo (PRVJT), face à grande aplicabilidade da restrição de janelas de tempo nos casos reais. O PRVJT mantém a restrição de capacidade e adiciona a restrição de janela de tempo, a qual associa a cada cliente i um intervalo de tempo [ai , bi ], denominado janela de tempo, e um tempo de serviço si (atendimento). Assim, caso o veículo chegue ao cliente antes do início da janela de tempo, um tempo de espera é necessário. Caso o veículo chegue ao cliente após o instante final da janela de tempo bi , uma penalidade é adicionada. O PRVJT é um problema da classe NP-difícil, assim, a busca de soluções utilizando métodos exatos pode ser inviável, já que a exploração exaustiva do espaço de busca requer um longo tempo de processamento impraticável nos casos de elebados números de clientes. Desta forma, a utilização de metaheurísticas, na solução do PRVJT, possibilita encontrar “boas” soluções em um espaço de tempo reduzido. 6.2.1 Modelagem do PRVJT O ambiente da arquitetura possui todos os elementos que são específicos ao problema tratado. Assim, o ambiente foi modelado para o PRVJT na forma apresentada na Figura 6.2, de modo que a estrutura Problema possui todas as informações dos n clientes (e.g., localização, janelas de tempo, demanda, dentre outros) e a estrutura Solução é representada por um conjunto de k rotas, compostas por t clientes. 6.2.1.1 Função de Avaliação A função de avaliação utilizada é apresentada em (6.1). O principal objetivo desta função é minimizar o custo associado, dado pela soma das distâncias percorridas nas rotas da solução. Adicionalmente, a função de avaliação é utilizada também para penalizar a violação das restrições do problema, sendo que, assim, uma solução que viola as restrições possui um valor ruim da função de avaliação. Desta forma, 6.2 Estruturas de Vizinhança 73 Problema Cliente 1 ... n ... ... ... ... Demanda d1 ... dn Solução c11 c12 ... c1t ck1 ck2 ... ckt Ambiente PRVJT Figura 6.2: Problema de Roteamento de Veículos com Janela de Tempo. são penalizadas as violações de capacidade, janela de tempo e número de veículos (Fraga, 2006). Através da penalidade sobre o número de veículo, esta função permite minimizar também o número de veículos necessários e, conseqüentemente, reduzir os custos com veículos e motoristas. A função de avaliação f (s) é apresentada a seguir, sendo s uma solução corrente do problema: f (s) = dij + αQ(s) + βJ(s) + σK(s) (6.1) (i,j)∈A sendo: - dij : distância entre os clientes (i, j); - A : conjunto dos arcos pertencentes à solução; - Q(s) : soma dos excessos de capacidade de todos os veículos da solução; - J(s) : soma das violações referentes às restrições de janela de tempo da solução; - K(s) : total de veículos da solução; - α, β e σ : fatores de penalidade não negativos, sendo α o fator de penalidade associado à capacidade dos veículos; β o fator de penalidade associado à maior janela de tempo do problema teste; e σ o fator de penalidade associado ao número de veículos utilizados. 6.2.1.2 Estruturas de Vizinhança Duas estruturas de vizinhança (movimentos) são utilizadas pelos métodos implementados nas especializações que serão descritas nas seções seguintes. São elas: (i). Troca: o movimento troca realiza a permuta dois clientes, escolhidos aleatoriamente de rotas que também são escolhidas aleatoriamente. Assim, os clientes escolhidos podem ser de rotas distintas ou até mesmo da mesma rota; 6.2 Descrição dos Problemas Testes 74 (ii). Realocação: o movimento de realocação retira um cliente de uma dada rota e insere em uma outra posição, que pode ser na mesma rota ou em uma outra rota. Este movimento foi utilizado de duas formas, sendo que, na primeira delas, permite que uma nova rota seja criada para a realocação do cliente, e, na segunda forma, o número de rotas da solução não pode ser aumentado, ocorrendo a realocação apenas entre as rotas existentes. 6.2.2 Descrição dos Problemas-Teste Os problemas-teste utilizados em todos os experimentos computacionais descritos neste capítulo são os introduzidos por Solomon (1987), amplamente utilizados em trabalhos envolvendo o PRVJT. Estes problemas-teste são formados por três grupos distintos de clientes: Instância C101 90 Coordenadas Y 80 70 60 50 40 30 20 10 0 0 10 20 30 40 50 60 70 Coordenadas X Figura 6.3: Instância C101. 80 90 100 • C: os clientes estão distribuídos geograficamente em grupos de clientes próximos uns dos outros (veja figuras 6.3); • R: os clientes são distribuídos aleatoriamente e distantes uns dos outros (veja as figuras 6.4); e • RC: uma mistura dos dois grupos anteriores (veja as figuras 6.5). Tabela 6.1: Informações dos problemas-teste de Solomon (Solomon, 1987). Tipo R1 R2 C1 C2 RC1 RC2 No 12 11 9 8 8 8 Cap. 200 1000 200 700 200 1000 JTf 230 1000 1236 3390 240 960 ts Dist. 10 randômica 10 randômica 90 agrupada 90 agrupada 10 misturada 10 misturada Jan estreita larga estreita larga estreita larga 6.3 Heurísticas e Metaheurísticas Utilizadas 75 Instância R101 Coordenadas Y 80 70 60 50 40 30 20 10 0 0 10 20 30 40 50 60 70 Coordenadas X Figura 6.4: Instância R101. Instância RC101 90 Coordenadas Y 80 70 60 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 100 Coordenadas X Figura 6.5: Instância RC101. A tabela 6.1 (Ho-Chen e Ting, 2005) resume as características dos problemas testes de Solomon. A coluna “No ” mostra o número de problemas-teste de cada tipo; a coluna “Capac.” apresenta a capacidade dos veículos (sendo que a frota é homogênea); a coluna “JTf” indica a janela de tempo final do depósito, ou seja, o limite de tempo que o veículo tem para voltar para o depósito; a coluna ts apresenta o tempo a ser gasto no atendimento ao cliente; a coluna “Distrib.” mostra como os clientes estão distribuídos geograficamente; e, por fim, a coluna “Jan” apresenta o tipo de janela de tempo utilizada no problema-teste. 6.3 Heurísticas e Metaheurísticas Utilizadas Considerando as especializações desenvolvidas, enumeradas acima, esta seção descreve os métodos utilizados na implementação dos agentes envolvidos. Os Agentes Metaheurísticas utilizados nas especializações, tanto o Agente VNS quanto o Agente ILS, utilizam o Agente de Busca Local que implementa a heurística de des- 6.3 Heurística Construtiva 76 cida, e o Agente Construtor, que implementa a heurística gulosa. 6.3.1 Heurística Construtiva A heurística construtiva implementada utiliza uma função gulosa para a seleção do próximo cliente a ser inserido na rota, baseada na janela de tempo. A seleção do melhor candidato é feita utilizando-se a funcaoGulosaJT (figura 6.6), a qual escolhe o cliente que possui a menor diferença entre o início de sua janela de tempo e o tempo total percorrido até aquele instante. Assim, a solução inicial obtida é sempre viável em relação à restrição de janelas de tempo, facilitando a busca. A figura 6.6 apresenta o algoritmo da heurística construtiva utilizada. Algoritmo ConstrucaoGulosaJT (·) 1 inicio 2 Inicializa o conjunto C de elementos candidatos; 3 enquanto C = ∅; 4 candidato ← funcaoGulosaJT (C); 5 s ← s ∪ C; 6 Atualiza C; 7 fim enquanto; 8 fim. Figura 6.6: Algoritmo da Construção Gulosa baseada em Janela de Tempo. 6.3.2 Heurística de Busca Local A heurística de refinamento utilizada pelos Agentes Busca é o método de descida. O método de descida analisa todos os vizinhos de uma dada solução corrente e aceita apenas as soluções que representem melhora na solução atual. Assim, como este método explora toda a vizinhança da solução corrente, ele pára quando encontra um ótimo local. No método implementado, apresentado na figura 6.7, a solução vizinha é obtida a partir da aplicação do movimento realocação sobre a solução corrente. Este movimento de realocação não permite que novas rotas sejam geradas, e, assim, é possível diminuir o número de rotas durante o processo de refinamento da solução. A aplicação do método de descida com o movimento de realocação permitiu a redução significativa do número de rotas em relação a outras implementações realizadas. 6.3.3 Metaheurística Iterated Local Search O método Iterated Local Search, como descrito na seção 3.4.1.6, realiza perturbações na solução, buscando escapar de ótimos locais e, assim, alcançar melhores soluções. Neste sentido, na implementação desse método na forma utilizada pelo Agente Metaheurística, apresentada na figura 6.8, a perturbação é realizada utilizando-se o movimento de troca de forma aleatório. A solução inicial é fornecida pelo Agente Construtor, implementando a construção gulosa baseada na janela de tempo. As soluções são refinadas pelo Agente Busca Local, implementando o método de descida. 6.3 Algoritmo Variable Neighborhood Search 77 Algoritmo Descida(solucaoInicial) 1 inicio 2 solucaoCorrente ← solucaoInicial; 3 para toda vizinhanca da solucaoCorrente; 4 solucaoV izinha ← realocacao(solucaoCorrente); 5 se solucaoV izinha < solucaoCorrente; 6 solucaoCorrente ← solucaoV izinha; 7 fim se; 8 fim para; 9 fim. Figura 6.7: Algoritmo do Método de Descida. Algoritmo ILS(·) 1 inicio 2 solucaoInicial ← construcaoGulosaJT (·); 3 solucaoCorrente ← descida(solucaoInicial); 4 melhorSolucao ← solucaoCorrente; 5 enquanto CriteriodeP arada nao for satisfeito; 6 solucaoP erturbada ← T rocaAleatoria(solucaoCorrente); 7 solucaoMelhorada ← descida(solucaoP erturbada); 8 melhorSolucao ← CriteriodeAceitacao(solucaoMelhorada, melhorSolucao); 9 fim enquanto; 10 fim. Figura 6.8: Algoritmo do Método Iterated Local Search. Algoritmo V NS(·) 1 inicio 2 solucaoInicial ← construcaoGulosaJT (·); 3 Inicializaf uncaoV izinhanca; 4 solucaoCorrente ← solucaoInicial; 5 enquanto CriteriodeP arada não foi satisfeito; 6 solucaoV izinha ← GeraV izinho(solucaoCorrente, f uncaoV izinhanca); 7 solucaoMelhorada ← descida(solucaoCorrente); 8 se f aval(solucaoMelhorada) < f aval(solucaoCorrente) 9 solucaoCorrente ← solucaoMelhorada; 10 senao 11 T rocaF uncaoV izinhanca(f uncaoV izinhanca); 12 fim se; 13 fim enquanto; 14 fim. Figura 6.9: Algoritmo do Método VNS. 6.3.4 Algoritmo Variable Neighborhood Search Assim como o método Iterated Local Search, o método Variable Neighborhood Search também utiliza as heurísticas de construção gulosa (baseada na janela de 6.4 Experimentos com as instâncias da Arquitetura AMAM 78 tempo) e o método de descida. Como estratégia para escapar de ótimos locais, o método altera a função de vizinhança usada para se gerar soluções vizinhas, utilizando a função T rocaF uncaoV izinhanca(f uncaoV izinhanca), como mostra a figura 6.9. As funções de vizinhança intercaladas, caso não haja melhora na solução, são: troca aleatório e realocação (movimento que permite que novas rotas sejam geradas). 6.4 Experimentos com as especializações da Arquitetura AMAM As especializações apresentadas nesta seção foram implementadas em linguagem Java, utilizando a plataforma Eclipse. Na arquitetura, cada agente faz sua busca em uma thread independente. Threads são fluxos de controle seqüencial, isolados dentro do programa, permitindo que um programa simples possa executar várias tarefas diferentes ao mesmo tempo, independentes umas das outras. Desta forma, a linguagem Java foi escolhida, considerando-se que esta fornece classes prontas para a implementação de threads, facilitando o desenvolvimento de sistemas com este recurso, assim como o desenvolvimento de sistemas multiagentes. Os resultados apresentados nesta seção estão dispostos da seguinte forma nas respectivas tabelas: a coluna “Média AMAM” mostra a média das soluções obtidas nas execuções das especializações, sendo que este valor representa apenas a distância total percorrida pelos veículos, considerando-se que foram obtidas soluções sem violação de restrições (capacidade e janela de tempo). Na coluna “Melhor Solução AMAM” são apresentadas as melhores soluções encontradas pela especialização, dentre as execuções realizadas. Os melhores resultados obtidos de heurísticas diversas são reportados na mesma tabela, na coluna “Melhor Lit.” e foram obtidos de Ho-Chen e Ting (2005). A tabela apresenta também o número de rotas (veículos) da solução entre colchetes ([ ]). Para todas as especializações da arquitetura AMAM aqui apresentadas, foram realizadas quinze execuções para cada problema-teste utilizado, com a finalidade de se obter o comportamento médio. Foram realizadas as seguintes especializações da Arquitetura AMAM: • Especialização ILS; • Especialização VNS; • Especialização ILS-ILS; • Especialização VNS-VNS; • Especialização ILS-VNS. Cada uma delas encontra-se descrita nas subseções a seguir. 6.4.1 Especialização AMAM-ILS A especialização derivada do instanciamento da arquitetura AMAM-ILS é composta pelos seguintes elementos: Ambiente (PRVJT), Agente Construtor Guloso 6.4 Especialização AMAM-ILS 79 JT, Agente Busca Local Descida, Agente Metaheurística ILS, Agente Coordenador, Agente Analisador de Soluções, conforme mostra a figura 6.10. O objetivo desta Ambiente Agente Descida Agente Coordenador Agente ILS Agente Construtor Guloso JT Agente Analisador de Solução Figura 6.10: AMAM-ILS. seção é apresentar os resultados relacionados à implementação apenas do método ILS, que, embora utilizando a arquitetura AMAM, teve um desempenho equivalente àquele que teria se implementado em sua forma tradicional, já que neste caso não é empregado o paralelismo (apenas um agente). Assim, é possível comparar os resultados do método ILS com outras especializações da arquitetura que utilizam mais de um agente na solução de um problema e verificar o provável aprimoramento da solução obtida. Os resultados dos testes da especialização AMAM-ILS são mostrados na tabela 6.2. Considerando-se que o método ILS é um método de processo de busca simples, os resultados obtidos não se comparam com as melhores solução encontradas na literatura, que foram obtidas, normalmente, por métodos híbridos. Entretanto, para alguns problemas-teste, as soluções encontradas pela especialização não divergem muito das melhores soluções, sendo que nos problemas-teste C208 e RC207 foram obtidas solução bem próximas. C101 C102 C103 C104 C105 C106 C107 C108 C109 C201 C202 C203 C204 C205 C206 C207 C208 R101 R102 R103 R104 R105 R106 R107 R108 R109 R110 R111 Prob. Média Melhor Solução AMAM-ILS AMAM-ILS 1088,59 [12,5] 1064,0996 [13] 982,34 [10,5] 929,89 [10] 1035,74 [11] 917,59 [11] 1125,74 [11] 1124,59 [11] 1050,59 [12] 1009,69 [12] 1170,64 [12] 1121,39 [11] 1014,34 [11,5] 1003,69 [11] 1068,445 [12,5] 1024,39 [13] 1227,445 [12,5] 1129,5 [12] 639,59 [4] 638,79 [4] 1035,795 [4] 989,09 [4] 730,54 [5] 708,69 [5] 852,14 [4] 832,29 [4] 718,685 [3] 671,38 [3] 1093,045 [5] 1024,49 [5] 995,24 [5] 925,69 [5] 639,79 [3,5] 588,89 [3] 1910,59 [22,5] 1864,69 [22] 1609,645 [19,5] 1601,19 [13] 1358,15 [16] 1355,2 [16] 1100,15 [12,5] 1059,1 [12] 1611,49 [18,5] 1611,29 [18] 1416,945 [16] 1385,19 [15] 1246,45 [13,5] 1194,6 [14] 1067 [11] 1057,6 [11] 1387,045 [15,5] 1355,4 [15] 1236,15 [14] 1227,6 [14] 1215,7 [13] 1173,7 [12] Melhor Prob. Solução Lit. 827,3 [10] R112 827,3 [10] R201 828,06 [10] R202 824,78 [10] R203 828,94 [10] R204 827,3 [10] R205 827,3 [10] R206 827,30 [10] R207 828,94 [10] R208 591,56 [3] R209 591,56 [3] R210 591,17 [3] R211 590,60 [3] RC101 588,88 [3] RC102 588,49 [3] RC103 588,29 [3] RC104 588,32 [3] RC105 1607,70 [18] RC106 1434 [17] RC107 1207 [13] RC108 982,01 [10] RC201 1311,11 [14] RC202 1252,03 [12] RC203 1120,85 [10] RC204 968,59 [9] RC205 1013,16 [12] RC206 1080,36 [11] RC207 1099,46 [10] RC208 Média Melhor Solução AMAM-ILS AMAM-ILS 1141,15 [12] 1127,6 [12] 1492,49 [6,5] 1394,29 [7] 1227,345 [6] 1186,39 [6] 1141,995 [4] 1132,29 [4] 978,1 [4] 961,7 [4] 1158,84 [5,5] 1109,89 [5] 1144,595 [5,5] 1132,9 [5] 943 [4] 908,6 [4] 834,75 [3] 813,9 [3] 1025,59 [5] 979,79 [5] 1118,995 [5] 1096,5 [5] 944,3 [4,5] 918,6 [4] 1923,29 [18,5] 1917,1 [19] 1636,695 [16,5] 1636,69 [16] 1572,49 [14,5] 1464,49 [14] 1350,945 [13,5] 1294,39 [13] 1910,05 [19,5] 1871,3 [19] 1601,94 [15] 1539,49 [15] 1450,245 [13,5] 1444,6 [13] 1425,095 [13] 1388,5 [13] 1527,04 [7,5] 1519,59 [7] 1435,24 [5,5] 1290,09 [5] 1373,79 [5] 1302,89 [5] 979,445 [4] 930,6 [4] 1490,94 [8,5] 1435,99 [8] 1303,595 [7] 1269,19 [7] 1117,895 [7] 1092,2 [7] 1060,745 [5] 1020,29 [5] Tabela 6.2: Soluções do AMAM-ILS para o PRVJT. Melhor Solução Lit. 953,63 [10] 1252,37 [4] 1198,45 [3] 942,64 [3] 854,88 [2] 1013,47 [3] 833 [3] 814,78 [3] 726,82 [2] 855 [3] 955,39 [3] 910,09 [2] 1642,82 [15] 1540,97 [13] 1110 [11] 1135,83 [10] 1637,15 [13] 1395,37 [12] 1230,54 [11] 1139,82 [10] 1249 [4] 1164,25 [4] 1060,45 [3] 798,46 [3] 1302,42 [4] 1158,81 [3] 1068,86 [3] 833,4 [3] 6.4 Especialização AMAM-ILS 80 6.4 Especialização AMAM-VNS 6.4.2 81 Especialização AMAM-VNS A especialização AMAM-VNS utiliza a mesma estrutura da instância anterior, exceto o Agente Metaheurística que, neste caso, implementa o método Variable Neighborhood Search. Desta forma, ela é composta pelos seguintes elementos (figura 6.11): Ambiente (PRVJT), Agente Construtor Guloso JT, Agente Busca Local Descida, Agente Metaheurística VNS, Agente Coordenador, Agente Analisador de Soluções. Ambiente Agente Descida Agente Coordenador Agente VNS Agente Construtor Guloso JT Agente Analisador de Solução Figura 6.11: AMAM-VNS. Assim como na seção anterior, esta especialização tem o objetivo de apresentar os resultados obtidos com o método VNS, atuando com um único Agente Metaheurística, e possibilitando sua comparação com as demais especializações desenvolvidas. Os resultados obtidos pela especialização AMAM-VNS são apresentados na tabela 6.3. Os resultados obtidos nesta versão apresentam melhora significativa em relação aos resultados apresentados na primeira versão da arquitetura AMAM, apresentada em Silva et al. (2006). Embora a especialização AMAM-VNS, apresentada nesta seção, tenha encontrado soluções menores do que as melhores soluções da literatura nos casos dos problemas testes C208 e R211, os resultados encontrados não se comparam as melhores soluções já encontradas. Isto considerando, como já dito aqui, que as melhores soluções da literatura foram obtidas por métodos mais complexos. C101 C102 C103 C104 C105 C106 C107 C108 C109 C201 C202 C203 C204 C205 C206 C207 C208 R101 R102 R103 R104 R105 R106 R107 R108 R109 R110 R111 Prob. Média AMAM-VNS 1105,89 [13,6] 1074,596667 [12] 1012,05 [11,3] 1091,47 [11] 1051,23 [12,4] 1178,202 [12,6] 1078,101 [12] 984,18 [11,4] 1036,682 [11] 643,33 [4] 1079,872 [4] 1044,79 [5] 813,79 [4] 691,79 [4] 761,99 [4] 771,77 [5] 602,565 [3,8] 1941,69 [22,7] 1625,294 [19,2] 1370,776 [16] 1101,958 [13] 1628,2 [18,8] 1395,014 [15,4] 1218,594 [13,6] 1068,79 [11,16] 1319,434 [15,4] 1213,898 [13,6] 1239,08 [14,8] Melhor Solução AMAM-VNS 950,7998 [12] 979,79 [12] 909,59 [11] 970,49 [11] 910,39 [11] 1077,7 [13] 1019,19 [12] 880,19 [10] 873,29 [10] 638,79 [4] 1027,89 [4] 1041,39 [5] 796,09 [4] 618,29 [4] 746,99 [4] 766,29 [5] 585,79 [3] 1863,59 [22] 1599,09 [19] 1345,3 [16] 1086,6 [13] 1578,8 [18] 1366,3 [15] 1194,29 [13] 1048,8 [10] 1292,09 [14] 1187,89 [13] 1186,5 [13] Melhor Solução Lit. 827,3 [10] 827,3 [10] 828,06 [10] 824,78 [10] 828,94 [10] 827,3 [10] 827,3 [10] 827,30 [10] 828,94 [10] 591,56 [3] 591,56 [3] 591,17 [3] 590,60 [3] 588,88 [3] 588,49 [3] 588,29 [3] 588,32 [3] 1607,70 [18] 1434 [17] 1207 [13] 982,01 [10] 1311,11 [14] 1252,03 [12] 1120,85 [10] 968,59 [9] 1013,16 [12] 1080,36 [11] 1099,46 [10] R112 R201 R202 R203 R204 R205 R206 R207 R208 R209 R210 R211 RC101 RC102 RC103 RC104 RC105 RC106 RC107 RC108 RC201 RC202 RC203 RC204 RC205 RC206 RC207 RC208 Prob. Média AMAM-VNS 1166 [12] 1372,494 [7] 1372,494 [7] 1089,8 [4] 904,12 [4] 1190,674 [6] 1005,354 [5] 938,2 [4] 862,74 [3] 1107,09 [6] 1095,63 [6] 850,392 [5] 1924,37 [18,2] 1716,514 [16,6] 1497,636 [14,2] 1352,734 [13,4] 1848,254 [18,4] 1602,056 [15,2] 1381,14 [13] 1318,145 [12] 1524,49 [8] 1453,1 [6] 1373,1 [5] 1218,29 [4] 1642,3 [8] 1676,09 [8] 1379,7 [6] 1363,7 [6] Tabela 6.3: Soluções do AMAM-VNS para o PRVJT. Melhor Solução AMAM-VNS 1153,2 [12] 1277,19 [5] 1277,19 [5] 1089,8 [4] 866,8 [4] 1129,09 [6] 962,2 [5] 922,6 [4] 827,3 [3] 1052,89 [6] 1093,59 [6] 840 [5] 1881,79 [19] 1612,89 [16] 1437,79 [14] 1323,09 [13] 1807,5 [18] 1570,2 [15] 1343,79 [13] 1257,29 [12] 1524 [8] 1453,1 [6] 1373,1 [5] 1118,29 [4] 1642,3 [8] 1676,09 [8] 1379,7 [6] 1363,7 [6] Melhor Solução Lit. 953,63 [10] 1252,37 [4] 1198,45 [3] 942,64 [3] 854,88 [2] 1013,47 [3] 833 [3] 814,78 [3] 726,82 [2] 855 [3] 955,39 [3] 910,09 [2] 1642,82 [15] 1540,97 [13] 1110 [11] 1135,83 [10] 1637,15 [13] 1395,37 [12] 1230,54 [11] 1139,82 [10] 1249 [4] 1164,25 [4] 1060,45 [3] 798,46 [3] 1302,42 [4] 1158,81 [3] 1068,86 [3] 833,4 [3] 6.4 Especialização AMAM-VNS 82 6.4 Especialização AMAM-ILS-ILS 6.4.3 83 Especialização AMAM-ILS-ILS Em Talukdar et al. (1998) é introduzido um conceito relacionado ao efeito de escala de uma organização baseada em computador. Assim, uma organização é considerada escala-efetiva (scale-effective) se seu desempenho melhora com o tamanho, ou seja, se existem agentes, tais que sua adição melhora a qualidade das soluções encontradas, e com computadores, cuja adição melhora a velocidade com que esta solução de qualidade é obtida. Desta forma, em uma organização escala-efetiva, é minimizado o esforço de adição de novos componentes. Entretanto, em contraponto, uma organização que não possui esta característica enfrenta problemas para adicionar e modificar suas partes, tornando uma simples alteração uma situação trabalhosa, com um grande impacto negativo sobre o desempenho global. A partir deste conceito, três especializações da arquitetura AMAM foram implementadas para discutir esta característica, sendo elas: AMAM-ILS-ILS, AMAMVNS-VNS e AMAM-VNS-ILS. A especialização da arquitetura AMAM-ILS-ILS acrescenta à especialização AMAM-ILS um novo agente, implementando o mesmo método. Esta especialização tem o objetivo de avaliar o desempenho cooperativo entre dois métodos iguais, considerando que, se possuem a mesma estrutura, podem cooperar trocando informações da mesma região do espaço de busca. Esta especialização é composta pelos seguintes elementos (figura 6.12): (1) Ambiente (PRVJT), (2) Agente Construtor Guloso JT, (3) Agente Busca Local Descida, (4) e (5) Agentes Metaheurística ILS, (6) Agente Coordenador, (7) Agente Analisador de Soluções. Ambiente Agente Coordenador Agente Descida Agente ILS Lista Tabu Agente Construtor Guloso JT Agente Analisador de Solução Agente ILS Figura 6.12: AMAM-ILS-ILS. Os testes realizados com dois Agentes Metaheurística ILS buscam verificar se o comportamento da arquitetura é escalável, ou seja, se a adição de novos agentes trabalhando em conjunto possibilitam um melhor desempenho na busca. Na arquitetura proposta, novos agentes que implementam e encapsulam metaheurísticas específicas podem ser adicionados com o mínimo de impacto no restante da arquitetura. 6.4 Especialização AMAM-ILS-ILS 84 A principal forma de cooperação entre os Agentes Metaheurísticas, nesta especialização, é realizada através do sistema de comunicação quadro-negro. Esta abordagem utiliza um repositório de dados, no qual os agentes podem ler e inserir mensagens, como forma de interação. Aqui, este repositório tem a mesma formulação de uma lista tabu (veja figura 6.12), ou seja, soluções não recomendadas à exploração são colocadas para que possam ser evitadas pelos agentes. Esta lista foi implementada utilizando um vetor com tamanho igual ao número de clientes do problema testes, sendo que funciona como uma lista circular, ou seja, quando a lista está cheia, as novas soluções são inseridas novamente no início. Os resultados alcançados pela especialização AMAM-ILS-ILS são apresentados na tabela 6.4. A partir da comparação dos resultados médios obtidos desta especialização em relação às duas especializações anteriores (AMAM-ILS e AMAM-VNS), a especialização AMAM-ILS-ILS encontrou, em 82% dos casos, soluções melhores. O gráfico 6.13 apresenta um comparativo entre as especializações AMAM-ILS e AMAM-ILS-ILS, sendo que os problemas-teste identificados no gráfico correspondem, respectivamente, aos problemas testes C101, C201, R101, R201, RC101 e RC201 (os demais problemas-teste possuem características semelhantes). Para todos os problemas presentes no gráfico, a especialização AMAM-ILS-ILS obteve melhor solução. 2000 Função de Avaliação 1800 1600 1400 1200 1000 AMAM-ILS 800 AMAM-ILS-ILS 600 400 200 0 C101 C201 R101 R201 RC101 RC201 Problemas-Teste Figura 6.13: Gráfico comparativo do desempenho entre as especializações AMAMILS e AMAM-ILS-ILS. C101 C102 C103 C104 C105 C106 C107 C108 C109 C201 C202 C203 C204 C205 C206 C207 C208 R101 R102 R103 R104 R105 R106 R107 R108 R109 R110 R111 Prob. Média AMAMILS-ILS 1010,64 [12] 982,295 [11] 977,74 [12] 1129,295 [11] 1041,29 [12] 1098,99 [12] 1013,19 [11,5] 954,79 [11] 1025,695 [11] 632,89 [4] 737,19 [4] 819,04 [5] 731,49 [4] 586,39 [3] 727,64 [4] 819,04 [5] 601,89 [3,5] 1843,59 [22] 1575,74 [19] 1350,55 [15,5] 1065,795 [13] 1529,495 [18] 1366,495 [15] 1199,395 [13,5] 1049,1 [11] 1274,045 [14,5] 1213,795 [13,5] 1160,3 [14] Melhor Solução AMAM-ILS-ILS 999,59 [12] 979,59 [11] 967,49 [12] 1016,99 [11] 1015,79 [12] 1094,59 [12] 913,19 [11] 931,59 [11] 975,69 [11] 626,99 [4] 737,19 [4] 767,49 [5] 717,59 [4] 586,39 [3] 767,49 [4] 767,49 [5] 585,79 [3] 1779,79 [22] 1339,4 [15] 1339,4 [15] 1047,2 [12] 1516,99 [18] 1366,4 [15] 1196,49 [13] 1025,4 [11] 1264,6 [14] 1210,39 [13] 1130,4 [13] Melhor Solução Lit. 827,3 [10] 827,3 [10] 828,06 [10] 824,78 [10] 828,94 [10] 827,3 [10] 827,3 [10] 827,30 [10] 828,94 [10] 591,56 [3] 591,56 [3] 591,17 [3] 590,60 [3] 588,88 [3] 588,49 [3] 588,29 [3] 588,32 [3] 1607,70 [18] 1434 [17] 1207 [13] 982,01 [10] 1311,11 [14] 1252,03 [12] 1120,85 [10] 968,59 [9] 1013,16 [12] 1080,36 [11] 1099,46 [10] R112 R201 R202 R203 R204 R205 R206 R207 R208 R209 R210 R211 RC101 RC102 RC103 RC104 RC105 RC106 RC107 RC108 RC201 RC202 RC203 RC204 RC205 RC206 RC207 RC208 Prob. Média AMAMILS-ILS 1141,595 [12,5] 1329,04 [7] 1274,59 [5] 1057,9 [4] 888,4 [4] 1102,045 [6] 970,94 [5] 916,145 [4] 789,75 [3] 1023,69 [6] 1062,74 [6] 862,19 [5] 1806,15 [17] 1626,095 [16] 1455,34 [13,5] 1289,89 [12,5] 1746,395 [17,5] 1503,995 [14] 1348,09 [13] 1305,795 [13] 1404,14 [8] 1253,195 [6] 1137,845 [5] 1010,49 [4] 1483,44 [8] 1239,745 [7,5] 1150,45 [5,5] 1154,19 [5,5] Tabela 6.4: Soluções do AMAM-ILS-ILS para o PRVJT. Melhor Solução AMAM-ILS-ILS 1113,29 [12] 1309,09 [7] 979,59 [5] 1046 [5] 874,8 [4] 1081,29 [6] 964,09 [5] 907,1 [4] 789,6 [3] 1022,19 [6] 1037,89 [6] 838,49 [5] 1771,89 [17] 1607,59 [16] 1417,89 [13] 1249,39 [12] 1742,39 [17] 1470,99 [14] 1332,09 [13] 1293,2 [13] 1403,49 [8] 1234,3 [6] 1113,2 [5] 1003,79 [4] 1474,39 [8] 1221,69 [7] 1130,2 [5] 1108,79 [5] Melhor Solução Lit. 953,63 [10] 1252,37 [4] 1198,45 [3] 942,64 [3] 854,88 [2] 1013,47 [3] 833 [3] 814,78 [3] 726,82 [2] 855 [3] 955,39 [3] 910,09 [2] 1642,82 [15] 1540,97 [13] 1110 [11] 1135,83 [10] 1637,15 [13] 1395,37 [12] 1230,54 [11] 1139,82 [10] 1249 [4] 1164,25 [4] 1060,45 [3] 798,46 [3] 1302,42 [4] 1158,81 [3] 1068,86 [3] 833,4 [3] 6.4 Especialização AMAM-ILS-ILS 85 6.4 Especialização AMAM-VNS-VNS 86 Ambiente Agente Descida Agente Coordenador Agente VNS Lista Tabu Agente Construtor Guloso JT Agente Analisador de Solução Agente VNS Figura 6.14: AMAM-VNS-VNS. 6.4.4 Especialização AMAM-VNS-VNS Já a especialização da arquitetura AMAM-VNS-VNS acrescenta, à especialização AMAM-VNS, um novo agente, implementando o mesmo método. Esta especialização tem o objetivo de avaliar o desempenho cooperativo entre dois métodos iguais, agora, no caso, o método Variable Neighborhood Search. Esta especialização é composta pelos seguintes elementos (figura 6.14): (1) Ambiente (PRVJT), (2) Agente Construtor Guloso JT, (3) Agente Busca Local Descida, (4) e (5) Agentes Metaheurística VNS, (6) Agente Coordenador, (7) Agente Analisador de Soluções. 6.4 Especialização AMAM-VNS-VNS 87 2000 Função de Avaliação 1800 1600 1400 1200 1000 AMAM-VNS 800 AMAM-VNS-VNS 600 400 200 0 C101 C201 R101 R201 RC101 RC201 Problemas-Teste Figura 6.15: Gráfico comparativo do desempenho entre as especializações AMAMVNS e AMAM-VNS-VNS. A forma de cooperação utilizada nesta especialização é semelhante à descrita na seção anterior, acontecendo a troca de informações através de um repositório de dados. A tabela 6.5 apresenta os resultados obtidos nos testes realizados com a especialização AMAM-VNS-VNS. Em 74 % dos casos, a especilização AMAM-VNS-VNS consegue atingir soluções melhores que as obtidas pelas especializações AMAM-ILS e AMAM-VNS. O gráfico 6.15 mostra como a especialização utilizando dois agentes VNS obtém melhores resultados que a especialização AMAM-VNS, que utiliza apenas um agente VNS. Os problemas-teste correspondem, respectivamente, às instâncias C101, C201, R101, R201, RC101 e RC201 (os demais problemas-teste possuem características semelhantes). Média AMAMVNS-VNS 1060,89 [12,5] 994,24 [11,5] 902,33 [11] 1066,89 [11] 1038,09 [12] 1087,39 [12] 976,59 [11,5] 896,09 [11] 999,395 [11] 632,89 [4] 1010,14 [4] 778,39 [5] 733,74 [4] 586,39 [3] 709,145 [4,5] 709,89 [4,5] 585,79 [3] 1813,74 [21,5] 1600,55 [19,5] 1372,445 [15,5] 1083,35 [13] 1521,395 [16] 1377,995 [16] 1199,09 [13] 1049,095 [11,5] 1249,395 [14,5] 1180,095 [13,5] 1220,85 [15] Prob. C101 C102 C103 C104 C105 C106 C107 C108 C109 C201 C202 C203 C204 C205 C206 C207 C208 R101 R102 R103 R104 R105 R106 R107 R108 R109 R110 R111 Melhor Solução AMAM-VNSVNS 1045,39 [12] 972,09 [12] 918,7 [11] 1010,99 [11] 1006,49 [12] 1067,79 [12] 950,09 [11] 891,29 [11] 864,69 [10] 626,99 [4] 1001,2 [4] 753,29 [5] 706,69 [4] 586,39 [3] 707,09 [4] 707,19 [4] 585,79 [3] 1807,39 [22] 1588,1 [19] 1345 [16] 1075,5 [13] 1502,3 [16] 1360,59 [16] 1195,79 [13] 1047,89 [11] 1242,89 [14] 1174,49 [13] 1197,6 [15] 827,3 [10] 827,3 [10] 828,06 [10] 824,78 [10] 828,94 [10] 827,3 [10] 827,3 [10] 827,30 [10] 828,94 [10] 591,56 [3] 591,56 [3] 591,17 [3] 590,60 [3] 588,88 [3] 588,49 [3] 588,29 [3] 588,32 [3] 1607,70 [18] 1434 [17] 1207 [13] 982,01 [10] 1311,11 [14] 1252,03 [12] 1120,85 [10] 968,59 [9] 1013,16 [12] 1080,36 [11] 1099,46 [10] Melhor Solução Lit. R112 R201 R202 R203 R204 R205 R206 R207 R208 R209 R210 R211 RC101 RC102 RC103 RC104 RC105 RC106 RC107 RC108 RC201 RC202 RC203 RC204 RC205 RC206 RC207 RC208 Prob. 1064,75 [11,5] 1298,24 [7] 1247,59 [5] 1046 [4] 912,85 [4] 1070,345 [6] 1239,145 [5] 904,55 [4] 801,8 [3] 1027,34 [6] 1057,44 [6] 856,145 [5] 1815 [19,6] 1685,995 [15,5] 1402 [13] 1293,59 [12,5] 1721,1 [16,5] 1557,1 [14,5] 1375,8 [13] 1263,445 [12] 1463 [8] 1248,44 [6] 1147,64 [5] 992,34 [4] 1442,74 [8] 1266,54 [7] 1103,495 [5,5] 1128,945 [6] Média AMAMVNS-VNS Melhor Solução AMAM-VNSVNS 1058,5 [11] 1280,09 [7] 1247,59 [5] 1046 [4] 901,8 [4] 1035 [6] 1229,39 [5] 902,9 [4] 792,7 [3] 996,59 [6] 1050,99 [6] 848,6 [5] 1810,1 [19] 1659,6 [15] 1399,7 [13] 1257,69 [12] 1701,3 [16] 1535,2 [14] 1367,2 [13] 1261,29 [12] 1463 [8] 1240,5 [6] 1121,49 [5] 976,79 [4] 1414,09 [8] 1251,69 [7] 1096,7 [5] 1086,6 [6] Tabela 6.5: Soluções do AMAM-VNS-VNS para o PRVJT. 953,63 [10] 1252,37 [4] 1198,45 [3] 942,64 [3] 854,88 [2] 1013,47 [3] 833 [3] 814,78 [3] 726,82 [2] 855 [3] 955,39 [3] 910,09 [2] 1642,82 [15] 1540,97 [13] 1110 [11] 1135,83 [10] 1637,15 [13] 1395,37 [12] 1230,54 [11] 1139,82 [10] 1249 [4] 1164,25 [4] 1060,45 [3] 798,46 [3] 1302,42 [4] 1158,81 [3] 1068,86 [3] 833,4 [3] Melhor Solução Lit. 6.4 Especialização AMAM-VNS-VNS 88 6.4 Especialização AMAM-ILS-VNS 6.4.5 89 Especialização AMAM-ILS-VNS A especialização da arquitetura AMAM-ILS-VNS utiliza dois Agentes Metaheurística diferentes, sendo que um implementa o método ILS e o outro o método VNS. O objetivo desta seção é verificar o comportamento da arquitetura utilizando agentes diferentes, considerando que estes possivelmente exploram regiões diferentes do espaço de busca. Esta especialização é composta pelos seguintes elementos (figura 6.10): (1) Ambiente (PRVJT), (2) Agente Construtor Guloso JT, (3) Agente Busca Local Descida, (4) Agente Metaheurística ILS, (5) Agente Metaheurística VNS, (6) Agente Coordenador, (7) Agente Analisador de Soluções. Ambiente Agente VNS Agente Coordenador Agente Descida Lista Tabu Agente Construtor Guloso JT Agente Analisador de Solução Agente ILS Figura 6.16: AMAM-ILS-VNS. 2000 Função de Avaliação 1800 1600 1400 1200 AMAM-ILS 1000 800 AMAM-VNS 600 AMAM-ILS-VNS 400 200 0 C101 C201 R101 R201 RC101 RC201 Problemas-Teste Figura 6.17: Gráfico comparativo do desempenho entre as especializações AMAMILS, AMAM-VNS e AMAM-ILS-VNS. A forma utilizada para cooperação entre os Agentes Metaheurísticas é a mesma usada nas especializações anteriores. 6.4 Especialização AMAM-ILS-VNS 90 O Gráfico 6.17 apresenta um comparativo entre as especializações AMAM-ILS e AMAM-VNS com as especializações utilizando os dois agentes trabalhando em conjunto, AMAM-ILS-VNS. Na maior parte dos resultados apresentados no gráfico, a especialização AMAM-ILS-VNS obteve melhores valores para a função de avaliação, sendo que apenas em um caso sua solução ficou acima das soluções das demais especializações. Uma comparação entre as especializações que utilizam dois agentes trabalhando em conjunto (AMAM-ILS-ILS, AMAM-VNS-VNS e AMAM-ILS-VNS) é apresentada no gráfico 6.18. As três especializações apresentaram comportamentos bem próximos. 2000 Função de Avaliação 1800 1600 1400 1200 AMAM-ILS-ILS 1000 800 AMAM-VNS-VNS 600 AMAM-ILS-VNS 400 200 0 C101 C201 R101 R201 RC101 RC201 Problemas-Teste Figura 6.18: Gráfico comparativo do desempenho entre as especializações AMAMILS-ILS, AMAM-VNS-VNS e AMAM-ILS-VNS. Os resultados encontrados pela especialização AMAM-ILS-VNS são apresentados na tabela 6.6. Em 75% dos casos, a especialização AMAM-ILS-VNS conseguiu resultados melhores que os obtidos pelas especializações AMAM-ILS e AMAM-VNS. Média AMAMILS-VNS 995,39 [12,5] 1014,295 [11] 918,295 [11] 1062,11 [11] 906,445 [11] 1090,895 [12] 947,395 [11] 994,945 [11] 895,89 [10] 701,14 [3,5] 732,99 [4] 737,99 [5] 700,795 [4] 600,195 [3] 767,64 [4] 720,89 [5] 633,155 [4] 1859,94 [21,5] 1579,945 [19] 1341,25 [15] 1048,29 [12,3] 1602,4 [18,2] 1380,89 [15,6] 1204,55 [13,6] 1058,43 [11] 1302,29 [11,4] 1193,88 [13,2] 1201,44 [13,8] Prob. C101 C102 C103 C104 C105 C106 C107 C108 C109 C201 C202 C203 C204 C205 C206 C207 C208 R101 R102 R103 R104 R105 R106 R107 R108 R109 R110 R111 Melhor Solução AMAM-ILSVNS 955,39 [12] 1014,295 [11] 918,295 [11] 1062,11 [11] 906,445 [11] 1090,895 [12] 947,395 [11] 994,945 [11] 895,89 [10] 638,79 [4] 732,99 [4] 737,99 [5] 700,795 [4] 600,195 [3] 767,64 [4] 720,89 [5] 633,155 [4] 1859,94 [21] 1579,945 [19] 1341,25 [15] 1021,2 [12] 1590,39 [18] 1360,78 [15] 1187,58 [13] 1033,49 [11] 1264,6 [11] 1185,3 [13] 1160,54 [13] 827,3 [10] 827,3 [10] 828,06 [10] 824,78 [10] 828,94 [10] 827,3 [10] 827,3 [10] 827,30 [10] 828,94 [10] 591,56 [3] 591,56 [3] 591,17 [3] 590,60 [3] 588,88 [3] 588,49 [3] 588,29 [3] 588,32 [3] 1607,70 [18] 1434 [17] 1207 [13] 982,01 [10] 1311,11 [14] 1252,03 [12] 1120,85 [10] 968,59 [9] 1013,16 [12] 1080,36 [11] 1099,46 [10] Melhor Solução Lit. R112 R201 R202 R203 R204 R205 R206 R207 R208 R209 R210 R211 RC101 RC102 RC103 RC104 RC105 RC106 RC107 RC108 RC201 RC202 RC203 RC204 RC205 RC206 RC207 RC208 Prob. 1156,4 [12,6] 1268,39 [7] 1271,04 [5] 1046 [4] 870,2 [4] 1094,59 [5,4] 985,39 [5] 926,89 [4] 803,67 [3] 1001,39 [5,8] 1082,3 [6] 878,1 [5] 1820,7 [21] 1642,945 [16] 1387,5 [13,2] 1267,4 [12,4] 1714,99 [17,3] 1560,39 [14,3] 1353,43 [13] 1260,98 [12] 1446,25 [8] 1249,78 [6] 1154,9 [5] 921,59 [4] 1486 [8] 1304,67 [7,3] 1145,33 [5,8] 1056,4 [5,2] Média AMAMILS-VNS Melhor Solução AMAM-ILSVNS 1118,49 [12] 1264,89 [7] 1266,49 [5] 1046 [4] 870,2 [4] 1064,39 [5] 970,59 [5] 813,55 [4] 789,6 [3] 979,79 [5] 1058,4 [6] 838,9 [5] 1820,7 [21] 1589,2 [16] 1365,19 [13] 1224 [12] 1703,55 [17] 1504,43 [14] 1332,09 [13] 1222,99 [12] 1402,79 [8] 1234,3 [6] 1109,45 [5] 913,87 [4] 1474,39 [8] 1243,54 [7] 1126,4 [5] 1020,29 [5] Tabela 6.6: Soluções do AMAM-ILS-VNS para o PRVJT. 953,63 [10] 1252,37 [4] 1198,45 [3] 942,64 [3] 854,88 [2] 1013,47 [3] 833 [3] 814,78 [3] 726,82 [2] 855 [3] 955,39 [3] 910,09 [2] 1642,82 [15] 1540,97 [13] 1110 [11] 1135,83 [10] 1637,15 [13] 1395,37 [12] 1230,54 [11] 1139,82 [10] 1249 [4] 1164,25 [4] 1060,45 [3] 798,46 [3] 1302,42 [4] 1158,81 [3] 1068,86 [3] 833,4 [3] Melhor Solução Lit. 6.4 Especialização AMAM-ILS-VNS 91 6.5 6.5 Considerações Finais 92 Considerações Finais Embora a arquitetura não seja específica para um determinando problema de otimização combinatória, especializações da arquitetura foram desenvolvidas com o objetivo de mostrar o correto funcionamento da arquitetura e, também, para apontar suas características de escalabilidade, encapsulamento e flexibiliade. Os experimentos computacionais realizados com as cinco especializações desenvolvidas (AMAM-ILS, AMAM-VNS, AMAM-ILS-ILS, AMAM-VNS-VNS e AMAMILS-VNS) da arquitetura proposta mostram como estas característica estão presentes. A escalabilidade, que corresponde ao aumento do desempenho a partir da adição de novos agentes, foi confirmada, considerando a melhora efetiva nos valores das funções de avaliação, obtida nas especializações com dois agentes metaheurísticas trabalhando em conjunto, em relação às especializações com apenas um agente. Capítulo 7 Conclusões Gerais e Trabalhos Futuros 7.1 Conclusões Gerais Neste trabalho é introduzida uma arquitetura multiagente para a solução de problemas de otimização combinatória, através do uso de metaheurísticas. Neste sentido, uma revisão dos principais conceitos relacionados com Sistemas Multiagentes e Metaheurísticas é apresentada, assim como a discussão de alguns trabalhos correlatos ao tema tratado. A partir da análise destes trabalhos similares à arquitetura aqui proposta foram definidos alguns aspectos desejáveis a uma arquitetura multiagente para metaheurísticas. Considerando os aspectos relacionados na seção 5.2, buscou-se, então, incluí-los na arquitetura. A classificação das metaheurísticas utilizada como base deste trabalho separa estas entre metaheurísticas baseadas em um único ponto e metaheurísticas baseadas em população, buscando, assim, identificar as características particulares à cada uma delas. Neste sentido, tantos os métodos pontuais quanto populacionais são facilmente adicionados na arquitetura proposta. Na arquitetura proposta, nomeada AMAM, as metaheurísticas são definidas como agentes que atuam na exploração do espaço de busca de forma autônoma. Assim, diferentes soluções iniciais, formas de refinamento e valores para os parâmetros da busca podem ser usados para cada busca independente, o que resulta em uma “decomposição” do espaço de busca. Esta decomposição permite que cada agente explore uma região diferente do ambiente (espaço de busca), obtendo assim, através da troca de informações, um maior conhecimento do mesmo. Desta forma, os agentes possuem capacidades de comunicação entre si e com o seu ambiente, possibilitando um comportamento cooperativo que tende a atingir um objetivo comum, ou seja, encontrar uma “boa” solução. A arquitetura AMAM define um framework que permite a comparação do desempenho das diversas metaheurísticas na solução de um determinado problema. Da mesma forma, a arquitetura AMAM se mostra flexível o bastante para solucionar diferentes problemas de otimização, sem grande impacto no restante da arquitetura. A adição de novos agentes (metaheurísticas) também é facilitada, já que a arquitetura define um framework para metaheurísticas híbridas, à qual se somam as vantagens 93 7.2 Trabalhos Futuros 94 da abordagem multiagente, tais como cooperação. As especializações apresentadas permitem a avaliação experimental da arquitetura proposta, indicando como as características destacadas anteriormente estão presentes. Assim, a arquitetura se apresenta de forma escalável, já que as especializações utilizando dois agentes cooperando na busca por soluções obtiveram resultados melhores do que as especializações desenvolvidas com apenas um agente. Adicionalmente, novos agentes podem ser facilmente adicionados, sem que alterações significativas sejam necessárias. A cooperação é a característica determinante no que diz respeito à melhora nos resultados apresentados na utilização de agentes trabalhando em conjunto e com o mesmo objetivo. 7.2 Trabalhos Futuros Algumas perspectivas de continuidade da definição da arquitetura AMAM são: (i) Implementação da arquitetura com todas as metaheurísticas apresentadas neste trabalho, assim como as demais metaheurísticas conhecidas; (ii) Utilização da arquitetura na solução de diferentes problemas de otimização combinatória; (iii) Maior exploração da capacidade de busca cooperativa; (iv) Exploração das possibilidades de inclusão na arquitetura dos métodos de intensificação e diversificação; (vi) Extensão da arquitetura para a utilização de recursos de computação paralela e/ou distribuída. Referências Bibliográficas Andreatta, A. A.; Carvalho, S. E. R. e Ribeiro, C. C. (1998). An object-oriented framework for local search heuristics. Proceedings of TOOLS 1998: the 26th International Conference on Technology of Object-Oriented Languages and Systems, p. 33–45, Santa Barbara, CA, USA. Avila-Abascal, P. e Talukdar, S. N. (1996). Cooperative algorithms and abductive causal networks for the automatic generation of intelligent substation alarm processors. Proceedings of ISAP’1996 - the International Conference on Intelligent Systems Applications to Power Systems, Orlando, FL, EUA. Bäck, T. (1996). Evolutionary Algorithms in Theory and Practice: Evolution Strategies, Evolutionary Programming, Genetic Algorithms. Oxford University Press, New York, NY, EUA. Bertsimas, D. e Tsitsiklis, J. (1997). Introduction to Linear Optimization. Athena Scientific, Belmont, Massachusetts, EUA. Birattari, M.; Paquete, L.; Stützle, T. e Varrentrapp, K. (2001). Classification of metaheuristics and design of experiments for the analysis of components. Relatório Técnico AIDA-01-05, Fachgebiet Intellektik, Fachbereich Informatik, Technische Universität Darmstadt. Bleale, R. e Jackson, T. (1990). Neural Computing: An Introduction. Institute of Physics Publishing, Bristol, Reino Unido. Blum, Christian e Roli, Andrea. (2003). Metaheuristics in combinatorial optimization: Overview and conceptual comparison. ACM Computing Surveys, v. 35, n. 3, p. 268–308. Booch, G.; Rumbaugh, J. e Jacobson, I. (1998). The Unified Modeling Language User Guide. Addison-Wesley, Reading, Mass, EUA, 1a edição. Boudali, I.; Fki, W. e Ghedira, K. (2004). How to deal with the vrptw by using multiagent coalitions. HIS 2004: Proceedings of the Fourth International Conference on Hybrid Intelligent Systems (HIS’04), p. 416–421, Kitakyushu, Japan. Bouthilliera, Alexandre Le e Crainic, Teodor Gabriel. (2005). A cooperative parallel meta-heuristic for the vehicle routing problem with time windows. Computers & Operations Research, v. 32, p. 1685–1708. 95 Referências Bibliográficas 96 Brooks, R. A. (1991). Intelligence without representation. Artificial Intelligence, v. 47, p. 139–159. Burke, E. K.; Kendall, G.; Silva, D. L. e Soubeiga, R. O’Brien E. (2005). An ant algorithm hyperheuristic for the project presentation scheduling problem. The 2005 IEEE Congress on Evolutionary Computation, volume 3, p. 2263–2270, (2005). Burke, E.K.; Silva, J.D. Landa e Soubeiga, E. (2003). Hyperheuristic approaches for multi-objective optimisation. Selected Papers from the 2003 Metaheuristics International Conference, Kyoto Japan. Chen, C. L. Bayesian Nets and A-Teams for Power System Fault Diagnosis. PhD thesis, Dept. of Electrical and Computer Engineering, Carnegie Mellon University, Pittsburgh, PA, EUA, (1992). Chen, S. Y.; Talukdar, S. N. e Sadeh, N. M. (1993). Job-shop-scheduling by a team of asynchronous agents. Proceedings of IJCAI-93 - Workshop on Knowledge-Based Production, Scheduling and Control, Chambery, France. Claro, J. e Sousa, J. P. (2001). An object-oriented framework for multiobjective local search. Proceedings of MIC’2001 - the Fourth Metaheuristics International Conference, volume 1, p. 231–236, Porto, Portugal. Cooper, James W. (2000). Java design patterns: a tutorial. Addison-Wesley, Reading, Mass, EUA. Corkill, Daniel D. (1991). Blackboard systems. AI Expert, v. 9, n. 6, p. 40–47. deSouza, P. S. Asynchronous Organizations for Multi-Algorithm Problems. PhD thesis, Dept. of Electrical and Computer Engineering, Carnegie Mellon University, Pittsburgh, PA, EUA, (1993). Demazeau, Y. (2003). Multi-agent systems methodology. ESD2003 - 2a Escuela Franco-Mexicana sobre los Sistemas Distemas Distribuidos Cooperativos, http://lafmi.lania.mx/escuelas/esd03/ponencias/Demazeau.pdf. Dorigo, M. Optimization, learning and natural algorithms (in Italian). PhD thesis, Dipartimento di Elettronica, Politecnico di Milano, Milan, Itália, (1992). Dorigo, Marco e Blum, Christian. (2005). Ant colony optimization theory: A survey. Theoretical Computer Science, v. 344, n. 2–3, p. 243–278. Dorigo, Marco e Di Caro, Gianni. (1999). The Ant Colony Optimization metaheuristic. Corne, David; Dorigo, Marco e Glover, Fred, editors, New Ideas in Optimization, Capítulo 2, p. 11–32. McGraw-Hill, London, Reino Unido. Dorigo, Marco; Maniezzo, Vittorio e Colorni, A. (1996). Ant System: Optimization by a colony of cooperating agents. IEEE Transactions on Systems, Man, and Cybernetics - Part B, v. 26, n. 1, p. 29–41. Referências Bibliográficas 97 Dowsland, K. A. (1993). Simulated annealing. Reeves, Colin R., editor, Modern Heuristic Techniques for Combinatorial Problems, Advanced Topics in Computer Science, p. 20–69, New York, NY, USA. John Wiley & Sons. Dowsland, K. A. e Dowsland, W. B. (1992). Packing problems. European Journal of Operational Research, v. 56, n. 1, p. 2–14. Driankov, D.; Hellendoorn, H. e Reinfrank, M. (1990). An Introduction to Fuzzy Control. Springer-Verlag, Berlin, Alemanha, 1a edição. Feo, T. A. e Resende, M. G. C. (1995). Greedy randomized adaptive search procedures. Journal of Global Optimization, v. 6, n. 2, p. 109–133. Ferreira, S. L. C. Aplicação de Arquiteturas baseadas em Agentes em Sistemas de Acesso à Informação. Monografia, Ciência da Computação. Universidade Federal do Maranhão, (2002). Fraga, Marcelo C. P. Uma metodologia híbrida colônia de formigas-busca tabureconexão por caminhos para resolução do problema de roteamento de veículos com janelas de tempo. Dissertação de Mestrado, Mestrado em Modelagem Matemática e Computacional, CEFET-MG, Belo Horizonte, MG, (2006). Frigo, L. B.; Pozzebon, E. e Bittencourt, G. (2004). O papel dos agentes inteligentes nos sistemas tutores inteligentes. Brito, C. R. e Ciampi, M. M, editors, Proceedings of WCETE’2004 - the World Congress on Engineering and Technology Education, p. 667–671, Guarujá / Santos, SP, Brasil. Gamma, Erich; Helm, Richard; Johnson, Ralph e Vlissides, John. (1995). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, Mass, EUA, 1a edição. Glover, F. (1986). Future paths for integer programming and links to artificial intelligence. Computers & Operations Research, v. 13, n. 5, p. 533–549. Glover, F. e Laguna, M. (1998). Tabu Search. Springer-Verlag, Berlin, Alemanha. Goldberg, D.E. (1989). Genetic Algorithms in Search, Optimization, and Machine Learning. Addison Wesley, Reading, MA, EUA. Gorti, S. R.; Humair, S; Sriram, R. D.; Talukdar, S. e Murthy, S. (1996). Solving constraint satisfaction problems using a-teams. Artificial Intelligence for Engineering Design, Analysis and Manufacturing, v. 10, n. 1, p. 1–19. Gras, Robin; Hernandez, David; Hernandez, Patricia; Zangger, Nadine; Mescam, Yoann; Frey, Julien; Martin, Olivier; Nicolas, Jacques e Appel, Ron D. (2003). Cooperative metaheuristics for exploring proteomic data. Artificial Intelligence Review, volume 20, p. 95–120, (2003). Hansen, P.; Mladenovic, N. e Moreno, J. A. (2003). Variable neighbourhood search. Revista Iberoamericana de Inteligencia Artificial, v. 7, n. 19, p. 77–92. Referências Bibliográficas 98 Hasen, P. e Mladenovic, N. (1999). An introduction to variable neighborhood search. Voß, S.; Martello, S.; Osman, I. e Roucairol, C., editors, Metaheuristics: Advances and trends in local search paradigms for optimization, p. 433–438. Kluwer Academic Publishers, Norwell, MA, EUA. Hasen, P. e Mladenovic, N. (2001). Variable neighborhood search: Principles and applications. European Journal of Operational Research, v. 130, n. 3, p. 449–467. Henderson-Sellers, B. e P. Giorgini, Editors. (2005). Agent-Oriented Methodologies. Idea Group Publishing, Hershey, PA, EUA. Ho-Chen, Chia e Ting, Ching-Jung. (2005). A hybrid ant colony system for vehicle routing problem with time windows. Journal of the Eastern Asia Society for Transportation Studies, v. 6, p. 2822–2836. Kefi, M. e Ghedira, K. (2004). A multi-agent model for a vehicle routing problem with time windows. Proceeding of International Urban Transport’04, Germany. Kirkpatrick, S.; Gelatt, C. D. e Vecchi, M. P. (1983). Optimization by simulated annealing. Science, v. 220, p. 671–680. Koza, J. R. (1992). Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge, Massachusetts, EUA. Lau, H.C. e Wang, H. (2005). Multi-agent approach for solving optimization problems involving expensive resources. Proceedings of the 2005 ACM Symposium on Applied Computing, p. 79–83, Santa Fé, New Mexico, EUA. Leong, H. W. e Liu, M. (2006). A multi-agent algorithm for vehicle routing problem with time windows. Proceedings of SAC 2006 - the 21st Annual ACM Symposium on Applied Computing, p. 23–27, Dijon, France. Lesser, Victor R. (1999). Cooperative multiagent systems: A personal view of the state of the art. IEEE Transactions on Knowledge and Data Engineering, v. 11, n. 1, p. 133–142. Lourenço, H. R.; Martin, O. e Stützle, T. (2001). A beginner’s introduction to iterated local search. MIC 2001 - Proceedings of the 4th Metaheuristics International Conference, volume 1, Porto, Portugal. Lukin, J. A.; Gove, A. P.; Talukdar, S. N. e Ho, C. (1997). Automated probabilistic method for assigning backbone resonances of (13c, 15n)-labelled proteins. Journal of Biomolecular NMR, v. 9, p. 151–166. Machado, M. L. M.; deSouza, D. G.; Souza, J. A.; Dandolini, G. A. e Silveira, R. A. (2004). Rpg: Uma abordagem empregando sistemas multiagentes. Revista Novas Tecnologias na Educação, v. 2, n. 1. Milano, M. e Roli, A. (2004). Magma: a multiagent architecture for metaheuristics. IEEE Transaction on Systems Man and Cybernetics, v. 34, n. 2. Referências Bibliográficas 99 Moulin, B. e Chaib-draa, B. (1996). An overview of distributed artificial intelligence. O’Hare, G. M. P. e Jennings, N. R., editors, Foundations of distributed artificial intelligence, Sixth Generation Computer Technology Series, p. 1–56, New York, NY, EUA. John Wiley & Sons. Nwana, H.S. (1996). Software agents: An overview. Knowledge Engineering Review, v. 11, n. 3, p. 205–244. Odell, J.; Parunak, V.; Fleischer, M. e Breuckner, S. (2003). Modeling agents and their environment. Giunchiglia, Fausto; Odell, James e Weiß, Gerhard, editors, Agent-Oriented Software Engineering III, Third International Workshop, AOSE 2002, Bologna, Italy, July 15, 2002, Revised Papers and Invited Contributions, volume 2585 of Lecture Notes in Computer Science, Berlin, Alemanha. Springer. Osman, I. H. e Laporte, G. (1996). Metaheuristics: A bibliography. Annals of Operations Research, v. 63, p. 513–628. Parunak, H. Van Dyke. (1997). “go to the ant”: Engineering principles from natural multi-agent systems. Annals of Operations Research, v. 75, p. 69–101. Passos, C. A. S. e Fonseca, S. L. A. (2005). Uma arquitetura multiagente para a solução de problemas de sequenciamento da produção. INFOCOMP Journal of Computer Science, v. 4, n. 2, p. 38–45. Pitsoulis, L. S. e Resende, M. G. C. (2002). Greedy randomized adaptive search procedures. Pardalos, P.M. e Resende, M.G.C., editors, Handbook of Applied Optimization, p. 168–183. Oxford University Press. Platon, E.; Mamei, M.; Sabouret, N.; Honiden, S. e Parunak, H. V. D. (2007). Mechanisms for environments in multi-agent systems: Survey and opportunities. Autonomous Agents and Multi-Agent Systems, v. 14, n. 1, p. 31–47. Resende, S. O. (2003). Sistemas Inteligentes - Fundamentos e Aplicações. Manole, Porto, Portugal. Rizzoli, A. E.; Oliverio, F.; Montemani, R. e Gambardella, C. M. (2004). Ant colony optimization fo vehicle routing problem: from theory to application. Relatório Técnico IDSIA-15-04, IDSIA - University of Lugano. Russell, S. e Norvig, P. (1995). Artificial Intelligence: a Modern Approach. PrenticeHall, Englewood Cliffs, NJ, EUA. Santos, Bruno A. Aspectos conceituais e arquiteturais para a criação de linhagens de agentes de software cognitivos e situados. Dissertação de Mestrado, Mestrado em Tecnologia, CEFET-MG, Belo Horizonte, MG, (2003). Silva, M. A. L.; deSouza, S. R.; Borges, H. E.; Oliveira, S. M. e Temponi, E. C. C. (2007). Amam: Arquitetura multiagente para a solução, via metaheurísticas, de problemas de otimização combinatória. SBAI 2007 - Anais do VII Simpósio Brasileiro Automação Inteligente, Florianópolis, Brasil. Referências Bibliográficas 100 Silva, M. A. L.; deSouza, S. R. e Oliveira, S. M. (2006). Uma proposta de arquitetura multiagente para a solução via metaheurísticas do problema de roteamento de veículos com janela de tempo. EMC 2006 - Anais do IX Encontro de Modelagem Computacional, Belo Horizonte, Brasil. Solomon, M. M. (1987). Algorithms for the vehicle routing and scheduling problems with time window constraints. Operations Research, v. 2, n. 35, p. 254–264. Talukdar, S.; Baerentzen, L.; Gove, A. e deSouza, P. S. (1998). Asynchronous teams: Cooperation schemes for autonomous agents. Journal of Heuristics, v. 4, n. 4, p. 295–321. Talukdar, S. N. e Souza, P. S. (1990). Asynchronous teams. Proceedings of the Second SIAM Conference on Linear Algebra: Signals, Systems and Control, San Francisco, CA, EUA. Thangiah, S.R.; Shmygelska, O. e Mennell, W. (2001). An agente architecture for vehicle routing problems. Proceedings of the 2001 ACM Symposium on Applied Computing, p. 517–521, Las Vegas, Nevada, EUA. Toth, P. e Vigo, D. (2002). The Vehicle Routing Problem. SIAM - Society for Industrial and Applied Mathematics, Philadelphia. Valckenaers, P.; Sauter, J.; Sierra, C. e Rodriguez-Aguilar, J. A. (2007). Applications and environments for multi-agent systems. Autonomous Agents and Multi-Agent Systems, v. 14, n. 1, p. 61–85. Vallada, Eva e Ruiz, Rubén. (2007). Cooperative metaheuristics for the permutation flowshop scheduling problem. Anais do 22nd European conference on operational research, Praga, Rep. Tcheca. Weiss, Gerhard. (2000). Multiagente Systems: A Modern Approach to Distributed Artificial Intelligence. MIT Press, Cambridge, MA, EUA, 1a edição. Weyns, Danny; Omicini, Andrea e Odell, James. (2007). Environment as a first class abstraction in multiagent systems. Autonomous Agents and Multi-Agent Systems, v. 14, n. 1, p. 5–30. Weyns, Danny; Parunak, H. Van Dyke; Michel, Fabien; Holvoet, Tom e Ferber, Jacques. (2005). Environments for multiagent systems state-of-the-art and research challenges. E4MAS, volume 3374 of Lecture Notes in Computer Science, p. 1–47. Springer, (2005). Wooldridge, M. (2002). An Introduction to Multiagent Systems. John Wiley & Sons, New York, NY, EUA, 1a edição. Wooldridge, M. e Jennings, N. R. (1995). Intelligent agents: Theory and practice. Knowledge Engineering Review, v. 10, n. 2, p. 41–59.