Projetar Agentes individualmente para desenvolver em software não é o suficiente. Além disso, não se projeta software com apenas um Agente porque uma das características do Agente é a comunicação, que só é possível quando existem mais Agentes presentes no software. Logo, é necessário desenvolver um software projetando uma comunidade de Agentes. Um software com uma comunidade de Agentes é chamado de Sistema Multiagente (SMA). Além do mais, o SMA é utilizado para construção de sistemas complexos (GIRARDI, 2004).
Os SMA’s podem ser projetados com um ou mais Agentes. Além do mais, pode possuir uma estrutura homogênea, onde possui Agentes com arquiteturas iguais; ou heterogêneas, com Agentes de diferentes arquiteturas. Devido a esta comunidade de Agentes se faz necessário, projetar a arquitetura do SMA. Uma arquitetura SMA permite esquematizar propriedades e estrutura de interação entre agentes, garantindo funcionalidade do sistema.
Segundo GIRARDI (2004), “A construção de software de alta qualidade não é tarefa simples, principalmente devido à complexidade natural do software, caracterizada pelas interações necessárias entre seus componentes”. O paradigma de desenvolvimento baseado em Agentes aborda a complexidade do software de três modos:
- Decomposição: divisão de problemas de um sistema complexo em problemas menores, para fácil gerenciamento;
- Abstração: utilização de foco nos itens relevantes do sistema;
- Interações flexíveis: identificação e gerenciamento dos relacionamentos entre os componentes de resolução do problema (JENNINGS, 2000).
A decomposição de problemas permite abordar cada subproblema de maneira independente focando em um determinado problema por vez, para controlar a sua complexidade. Na decomposição de softwares baseados em Agentes, uma comunidade de Agentes autônomos interagem de maneira flexível. Com isto, o nível de acoplamento entre os componentes do sistema são reduzidos, pois os Agentes sabem quando devem atuar e quando devem atualizar seu estado. Logo, a complexidade de controle deixa de ser centralizada e passa a ser distribuída para cada Agente (GIRARDI, 2004).
A abstração permite definir um modelo simples de problema, dando ênfase aos aspectos pertinentes e ocultando detalhes irrelevantes. Ou seja, é feito um mapeamento do mundo real para o mundo computacional. Assim, os Agentes correspondem a uma noção de subsistemas e uma sociedade SMA, agindo e interagindo de acordo com seus papéis (GIRARDI, 2004).
Sistemas complexos necessitam de componentes de comportamento autônomo e flexível, pois componentes de software precisam interagir. A autonomia de Agentes permite que os mesmos sejam projetados para atender requisitos não pré-estabelecidos (GIRARDI, 2004).
Arquiteturas de SMA
Segundo GIRARDI (2004), “A arquitetura de um SMA mostra a maneira como o sistema está implementado em termos de propriedades e estrutura e como os agentes que o compõem podem interagir a fim de garantir a funcionalidade do sistema”. As arquiteturas SMA podem ser classificadas por complexidade, cooperação e coordenação de Agentes; além do mais, estas arquiteturas podem ser mescladas para atender os requisitos de desenvolvimento de software.
Arquiteturas quanto à complexidade
De acordo com a sua complexidade a arquitetura de um SMA por ser classificada em três grupos:
- Arquitetura simples: quando é composta por um único e simples agente;
- Arquitetura moderada: quando é composta por agentes que realizam as mesmas tarefas, mas possuem diferentes usuários e podem residir em máquinas diferentes (Fig. 1);
- Arquitetura complexa: quando é composta por diferentes tipos de agentes (Fig. 2), cada um com certa autonomia, podendo cooperar e estar em diferentes plataformas (KNAPIK; JOHNSON, 1998).
Figura 1: SMA de arquitetura moderada
Figura 2: SMA de arquitetura complexa
Arquiteturas quanto à cooperação
Em um SMA uma política de cooperação é necessária, uma vez que Agentes expressam as suas necessidades a outros Agentes a fim de realizar uma determinada tarefa. O processo de cooperação pode ocorrer de duas formas: partilhada de tarefas, Agentes auxiliam outros Agentes em uma determinada tarefa; partilha de resultados, os Agentes disponibilizam suas informações para a comunidade (GIRARDI, 2004). De acordo com a sua cooperação a arquitetura de um SMA por ser classificada em três grupos:
- Arquitetura Quadro-Negro: os Agentes não se comunicam de maneira direta, mas através de um quadro-negro (Fig. 3). O quadro-negro é uma estrutura de dados dividida em regiões ou níveis para facilitar a busca de informações. Em SMA funciona como um repositório de mensagens de perguntas e respostas, onde um Agente deposita uma mensagem de pergunta e espera que outro Agente colete esta mensagem, processe e deposite uma mensagem de resposta. Estas mensagens podem ser interpretadas como mensagens em que Agentes solicitam recursos de outros Agentes. Não é uma arquitetura viável para sistemas de tempo real;
- Arquitetura de troca de mensagens: os Agentes se comunicam diretamente por troca de mensagens assíncronas. Nesta arquitetura os Agentes precisam saber todos os nomes e endereços de todos os Agentes presentes no sistema. Estas mensagens precisam ser protocoladas para que possam ser encaminhadas e compreendidas pelos Agentes;
- Arquitetura Federativa: quando o número de Agentes no sistema é grande, mensagens de broadcasting levarão muito tempo para serem processadas. Por isto, os Agentes são estruturados em grupos ou federações (Fig 4), onde existem Agentes facilitadores em cada grupo para receber e encaminhar mensagens entre Agentes remetentes e destinatários.
Figura 3: SMA de arquitetura Quadro-Negro
Figura 4: SMA de arquitetura federativa
Arquiteturas quanto à coordenação
Coordenação entre Agentes é referente à maneira como estarão organizados, para alcançar seus objetivos de sistema. Existem dois mecanismos de coordenação:
- Mecanismo mestre-escravo: neste mecanismo existem duas classes de Agentes. Agentes mestres, ou gerentes, que distribuem tarefas para Agentes escravos, ou trabalhadores, e ficam à espera de resultados. Os Agentes escravos executam tarefas. Podem existir Agentes facilitadores se, os demais Agentes estiverem distribuídos em grupos;
- Mecanismo de mercado: neste mecanismo os Agentes estão organizados em um mesmo nível e todos conhecem as tarefas que todos podem desempenhar. A vantagem é a diminuição da quantidade de mensagens trocadas, pois todos os Agentes se conhecem (PARAISO, 1997).
Comunicação entre Agentes
A comunicação é uma importante característica que os Agentes inteligentes possuem para atingir seus objetivos. Assim, foi definida uma Linguagem de Comunicação entre Agentes (ACL - Agent Communication Language) (FININ; LABROU; MAYFIELD, 1993) que foi dividia em:
- Vocabulário: consiste em um dicionário de todos os conceitos utilizados no domínio dos Agentes. Também conhecido como ontologia;
- Linguagem Interna: trata-se de linguagem de programação baseada em lógica de primeira ordem, para codificação de dados simples, regras, restrições e expressões. Também conhecida como linguagem KIF (Knowledge Interchange Format);
- Linguagem Externa: é uma camada linguística que encapsula estruturas KIF, para comunicação mais eficiente. Também conhecida como KQML (Knowledge Query and Manipulation Language).
Como pode ter sido observado, SMA’s precisam ser bem projetados por causa de sua ampla quantidade de características, para se moldar a vários tipos de ambientes para atuação. Contudo, é necessário mapear bem o cenário de atuação do sistema para que mudanças futuras não causem impacto na arquitetura do sistema; é necessário que o SMA tenha um foco de atuação bem definido para que os Agentes possam ter objetivos exatos. Como todo sistema de software o SMA também evolui, onde existe a necessidade de que o sistema seja flexível para atender as novas tendências. Além disso, um SMA não se fecha ao paradigma de programação orientado a Agentes, pois existirão condições ou situações onde Agentes não será ideal, assim podendo fazer abordagem de programação orientada a objetos, aspectos e até estruturado. Além do mais SMA se relacionam com outros SMA’s mais também com sistemas em outros paradigmas; logo, é necessário que o sistema possua esta flexibilidade de relação.
Bem, espero que tenham gostado deste artigo. Como artigos futuros, serão vistos que SMA’s também precisam ser projetados como qualquer outro tipo sistema. Portanto, é necessário o uso de metodologias, ferramentas e afins que auxiliem o ciclo de vida de desenvolvimento de softwares multiagentes.
REFERÊNCIAS
- FININ, T.; LABROU, Y.; MAYFIELD, J. KQML as an agent communication language. Baltimore: University of Maryland Baltimore County, 1993.
- GIRARDI, R. Engenharia de Software Baseada em Agentes. IV Congresso Brasileiro de Computação, n. 4, p. 25, 2004.
- JENNINGS, N. R. On Agent-based Software Engineering. Artificial Intelligence, v. 117, n. 277-296, 2000.
- KNAPIK, M.; JOHNSON, J. Developing Inteligent Agents for Distributed Systems. NY: Computing McGraw-Hill, 1998.
- PARAISO, E. C. Concepção e Implementação de um Sistema Multiagente para Monitoração e
- Controle de Processos Industriais. Dissertação-Paraná: CEFET - PR, 1997.