Identificador Descrição
Origem é o identificador do tipo do agente, caso a mensagem seja para todos os agentes de um tipo, estes utilizam-se do símbolo " 
Tipo identifica o estado da mensagem, sendo inform quando um agente informa uma mensagem para outro, request quando um agente requisita uma informação ou reply quando um agente responde a uma requisição efetuada por outro agente
Mensagem conteúdo que será trocado entre os agentes
Destino segue a descrição do identificador origem
Pré-condições fatos que devem ser verdade no mundo do agente para este enviar ou receber uma mensagem
Pós-condições fatos que passam a ser verdade no mundo do agente após ter enviado ou recebido uma mensagem
Notação Abreviação
Agente Servidor S
Agente Fábrica F
Agente Mercado M
Interface da Base de Conhecimento BC
Interface de Distâncias D
Interface de Consulta C
Para toda Fábrica e Mercado " F+M
Para toda Fábrica " F
      Figura 4.1 - Protocolo de comunicação do agente servidor.
       
    A figura 4.2 mostra o protocolo a nível do agente Fábrica sendo composto por cinco estados:
      Figura 4.2 - Protocolo de comunicação do agente fábrica.
       
    A figura 4.3 mostra o protocolo a nível do agente Mercado sendo composto por quatro estados:
      Figura 4.3 - Protocolo de comunicação do mercado.
       

    4.3 Esboço do Funcionamento do Sistema

    O sistema é composto por agentes fábricas e agentes mercados sendo criados e gerenciados por um agente servidor. Tais agentes interagem trocando mensagens objetivando a melhor distribuição dos diversos produtos de cada fábrica nos diversos mercados levando em consideração a oferta de cada fábrica, a demanda de cada mercado, o valor do frete de cada produto e a distância da fábrica em relação ao mercado (figura 4.4). Existem ainda agentes interfaces (base de conhecimento, distância e consulta) que tem como função a consulta e a manipulação da base de conhecimento.
      Figura 4.4 - Modelo para otimização da distribuição de produtos.
       

    5. Implementação do Protótipo

    O protótipo foi projetado em Java utilizando-se basicamente de sockets e threads. É composto por três módulos sendo o primeiro o servidor, o segundo o cliente (base de conhecimento, distância e consulta) e o último o módulo agente.

    5.1 Módulo servidor

    O módulo servidor constitui-se de uma aplicação Java que tem função de facilitador da comunicação entre os diversos agentes que participam do sistema realizando as seguintes tarefas: controle das requisições de conexões dos clientes, inicialização dos agentes, gerenciamento e roteamento de mensagens e armazenamento dos endereços de cada agente.

    5.2 Módulo cliente

    O módulo cliente constitui-se de três applets sendo estes responsáveis pela entrada de dados e consultas para o usuário. O primeiro applet (figura 5.1) é responsável pela manutenção da base de conhecimento dos agentes. Nesta tela são informados o tipo de agente que se deseja inserir no ambiente (agente fábrica ou mercado), o nome do agente e as expressões, onde cada expressão constitui uma linha única na base de conhecimento do agente.

    O segundo applet é responsável pela manutenção da base de distâncias. Nesta tela são informadas todas as combinações de distâncias entre agentes fábricas e mercados. As informações referentes à base de distâncias são armazenadas nos agentes do tipo fábrica sendo necessárias para o processo de escolha onde os agentes decidem para quem enviar determinado produto levando-se em conta o menor custo de distribuição. O último applet possibilita a consulta do resultado da otimização por parte do usuário.

      Figura 5.1 - Tela para manutenção da base de conhecimento dos agentes.
       

    5.3 Módulo agente

    Este módulo tem instâncias de agentes do tipo fábrica ou mercado e tem como funções o armazenamento da base de conhecimento dos agentes do sistema, o armazenamento das distâncias entre os pontos de origem e destino.

    Na resolução do problema, cada agente se comporta conforme o protocolo de comunicação especificado. Os agentes tipo fábrica tomam iniciativa na resolução do problema oferecendo certa quantidade de produtos para as requisições feitas pelos mercados. A troca de mensagens se repete até que todos os agentes do tipo mercados tenham suprimidos suas demandas ou que os agentes fábricas não possuam mais ofertas de seus produtos. Após o término, o agente servidor terá a informação do resultado da otimização sendo então possível a consulta.

    6. Conclusões

    Este trabalho apresenta uma introdução a IAD, tendo como enfoque principal a utilização de Sistemas Multiagentes na solução de problemas reais. O problema de distribuição de produtos foi implementado utilizando-se de um modelo logístico onde cada fábrica e mercado constitui um agente que compartilha informações buscando uma solução global.

    Cada agente dentro do sistema possui sua própria base de conhecimento sendo composta por produtos, quantidades de oferta e custos unitários para agentes do tipo fábrica e de produtos e quantidades de demanda para agentes do tipo mercado. Para chegarem a uma solução os agentes fábricas guardam uma base de todos os agentes do sistema possibilitando assim identificar a solução para o problema de distribuição.

    Para a implementação do trabalho utilizou-se a linguagem Java devido as suas características distribuídas possibilitando a implementação de agentes executando sob uma rede TCP/IP. O sistema foi implementado utilizando-se de comunicação síncrona onde cada agente (Fábrica ou Mercado) possui uma ligação com o agente Servidor.

    Um fator importante para o sistema é o protocolo de comunicação entre os agentes. Neste trabalho foi apresentado um modelo utilizando-se de diagramas de transição de estados (DTE) onde a comunicação entre os agentes é realizada pela troca de mensagens sendo que os agentes mudam de estados sob determinadas condições.

    O estudo de caso apresentado constitui-se em um modelo que considera quatro restrições: a oferta, a demanda, o custo unitário de cada produto e a distância entre as várias fábricas e mercados. Contudo estas restrições permitem que os agentes apenas efetuem procedimentos de escolha simples e não negociações para chegarem a uma solução. Restrições de negociação poderiam ser fatores de credibilidade do cliente ou prazos de entrega.

    A partir da experimentação realizada verificou-se que, para o problema de logística colocado, um Sistema Multiagente gera uma boa solução em um tempo de resposta excelente. Além disso, a principal vantagem desta abordagem de especificação é a semelhança do funcionamento do modelo implementado com a realidade.

    7. Referências

    [BAL93] BALLOU, Ronald H. Logística empresarial : transportes, administração de materiais e distribuição física. São Paulo : Ed. Atlas, 1993.

    [BON88] BOND, A.H.; GASSER, L. (Eds.) Readings in distribuited artificial intelligence. California : Morgan Kaufmann, 1988.

    [GAS88] GASSER, Les. Distribution and coordination of tasks among intelligent agents. In: PROCEEDINGS OF THE IJCAI'88. Scandinavian Conference on AI. Amsterdam, Springfield, 1988.

    [GAS90] GASSER, Les. Social conceptions of knowledge and action: DAI foundations and open systems semantics, In: ARTIFICIAL INTELLIGENCE, 47. Elsevier Science Publishers, University of Southern California, Los Angeles, 1990. p. 107-138.

    [JEN94] JENNINGS, Nick. Cooperation in industrial multi-agent systems. Singapore : World Scientific, 1994.

    [WOO94] WOOLDRIDGE, Michael J.; JENNIGS, Nicholas R. Agent theories, architectures, and languages: a survey. In: PROCEEDINGS OF ECAI 94 WORKSHOP ON AGENT THEORIES, ARCHITECTURES & LANGUAGES. Amesterdam The Netherlands, 1994. p. 1-32.