Introdução ao Paradigma Orientado a Agentes
Veja nesse artigo o Paradigma de Programação Orientado a Agentes, que vem ganhando força para o desenvolvimento de sistemas de software e já bastante validado no meio acadêmico.
Artigos Engenharia de Software Introdução ao Paradigma Orientado a Agentes
O Paradigma de Programação Orientado a Agentes tem como foco o desenvolvimento de software seguindo o estado da arte de Agentes; os Agentes fazem parte da Inteligência Artificial Distribuída que por sua vez está inserida na grande área de Inteligência Artificial. Dentro da Inteligência Artificial Distribuída, os Agentes são descritos como um sistema de software computacional, normalmente situado em um ambiente, capaz de execuções autônomas e flexíveis, para solução de problemas. São autônomos, porque executam ações sem interferência humana ou de outros sistemas e possuem controle de suas ações e seu estado interno. São flexíveis, porque possuem como características:
Reatividade: capacidade de perceber o ambiente;
Pró-atividade: capacidade de tomar decisões por vontade e própria e exibição de comportamento oportunista;
Sociabilidade: capacidade de interagir com humanos e/ou sistemas para alcançar seus objetivos;
Orientado a Objetivos: paradigma de trabalho do Agente que, de forma independente, deve decidir como solucionar tarefas;
Os Agentes constituem um desafio, no ambiente de pesquisa, no contexto de evolução do paradigma, arquiteturas, padrões e etc.; quanto no ambiente de mercado, no que diz respeito à criação de ferramentas, metodologias e processo de desenvolvimento. A seguir são descritas algumas áreas que fazem uso de Agentes:
Manufatura de Agentes: construção e/ou expansão de ferramentas CASE com suporte a modelagem e desenvolvimento de Agentes;
Controle e automação: são utilizados em controladores de processos por serem autônomos, reativos e distribuídos. Exemplos são os sistemas de controle de transporte, aceleradores de partículas, controle de tráfego aéreo;
Telecomunicações: sistemas de telecomunicações são largas redes distribuídas de componentes com iteração em tempo real de monitoramento e gerenciamento. Por isto, Agentes tem disso usados no controle e gerenciamento de rede, transmissão e mudança de dados;
Sistemas de Transporte: sistemas de tráfego são quase distribuídos e autônomos. Aplicações de Agentes são utilizadas para coordenação de passageiros e carros e cronograma de transportes;
Gerenciamento de Informações: existe uma quantidade rica, diversa e complexa de informações disponível a sociedade. Logo, Agentes podem ser usados para gerenciamento inteligente de informações;
E_Commerce: Agentes são usados no gerenciamento de portfólio, assistentes de compras online e catálogos interativos. Auxiliando humanos em tomadas de decisão nas compras e vendas de produtos;
Jogos e Interatividade: Agentes podem ser utilizados para criação de ambientes simulados ricos em interatividade. Exemplos são jogos, cenários de gerenciamento financeiro, simuladores de emergência, esportes. (LUGER, 2009)
Figura 1: Arquitetura genérica de um Agente.
A figura acima ilustra uma arquitetura genérica de Agentes, em que possuem sensores e atuadores para percepção e atuação no ambiente, respectivamente; o quadrado com sinal de interrogação corresponde aos mecanismos e especificações para analise de informações coletadas e/ou armazenadas destinada à solução de problemas. O ambiente é o campo de atuação do Agente.
O paradigma de Agentes tem ganhando espaço no meio acadêmico, e também no mercado; o sistema de software é projetado e desenvolvido com vários Agentes, gerando um Sistema Multiagente (SMA). É um novo estado-da-arte para pesquisa e desenvolvimento de softwares. Assim, o SMA como produto de software precisa ser produzido com qualidade, desempenho e tempo hábil; por isto, requer o uso de processos, metodologias, modelos, ferramentas e etc. que facilitem o desenvolvimento. Logo, a Engenharia de Software Orientada a Agentes (ESOA) vem fornecer soluções - metodologias, padrões, processos, modelos, arquiteturas, ferramentas CASE e etc. - que auxiliam na produção destes tipos de sistemas de softwares, visto que, são bastante complexos, operam em ambientes imprevisíveis, abertos e de constante mudança, precisando tomar decisões em qualquer situação para alcançar seus objetivos (GIRARDI, 2004).
Arquitetura de Agentes
Desenvolver Sistemas de Agente(s) requer elaborar mapeamentos das percepções, ações e mecanismos para solução de problemas. Mapear o ambiente é compreender qual o cenário de atuação do Agente, como um ambiente físico (uma sala médica, um escritório, um dispositivo eletrônico, um ser humano) ou como um ambiente virtual (a internet, um sistema de software). Mapear percepções envolve mecanismos de como o Agente deve perceber o ambiente; por exemplo, uso de sensores de hardware para detectar movimento, luminosidade, entradas de caracteres de teclado e etc.. Mapear soluções é descrever procedimentos de como o Agente vai agir para solucionar problemas; por exemplo, um Agente definido para limpar ambiente em que uma maneira dele agir seja: pegar material de limpeza, limpar, guardar material de limpeza. Mapear ações envolve mecanismos de como o Agente vai agir no ambiente, se este vai usar recursos físicos (aspirador de pó, vassoura e etc.) ou recursos computacionais (mensagens gráficas, mensagens de voz e etc.). A partir de mapeamentos é possível definir que tipo de arquitetura o Agente será estruturado. Existem diferentes literaturas que classificam arquiteturas de Agentes; as propostas mais conhecidas são a de RUSSELL e NORVIG (2004) e WOOLDRIDGE (2002). Além domais, estas arquiteturas possuem construção flexível em que podem ser estruturadas de acordo com o mapeamento realizado; podendo sofrer alteração/evolução de acordo com as necessidades.
Classificação de Russel e Norvig
Segundo RUSSEL e NORVIG (2004), existem quatro tipos diferentes de Agentes:
Agentes Reflexivos: cada percepção dispara alguma ação pré-estabelecida no programa;
Agentes Reflexivos mantenedores de registro do ambiente: seu estado interno é atualizado com registro de percepções sequenciais, e ações executadas;
Agentes baseados em metas: mantém registro do estado do ambiente, e possuem meta(s) que descreve(m) um estado desejável do ambiente;
Agentes baseados em utilidade: além do plano de meta(s), estas, são analisadas quanto a sua qualidade em relação ao comportamento desejável do ambiente;
Classificação de Wooldridge
WOOLDRIDGE (2002) classifica a arquitetura de Agentes em quatro tipos:
Arquitetura baseada em lógica: possuem modelo simbólico do ambiente representado por uma base de conhecimento, e tomada de decisões por raciocínio lógico. Semelhantes aos Agentes baseados em metas e utilidades;
Arquitetura Reativa: não possuem conhecimento do ambiente e não agem por raciocínio lógico. A decisão da ação a executar é baseada em mapeamento direto da percepção. Semelhantes aos Agentes Reflexivos;
Arquitetura em Camadas: o Agente é organizado em camadas para tomada de decisão. Estrutura híbrida formada por um subsistema deliberativo e outro reativo;
Arquitetura BDI (Belief-Desire-Intentio): o Agente é organizado em crenças(beliefs), desejos(desire) e intenções(intentios). As crenças são o conhecimento que o Agente possui sobre o ambiente. Os desejos são o estado motivacional do sistema, ou seja, estado que permite o Agente produzir, modificar ou selecionar ações baseados em suas crenças. As intenções são as ações que o Agente decide realizar.
Arquiteturas de Sistema Multiagente
Além da arquitetura do Agente existe também a arquitetura do SMA, que permite esquematizar propriedades e estrutura de interação entre agentes, garantindo funcionalidade do sistema. Segundo GIRARDI (2004), As arquiteturas SMA podem ser classificadas por grupos, por cooperação de Agentes e por coordenação de Agentes; sendo que, estas arquiteturas podem ser utilizadas em conjunto para possibilitar uma melhor estruturação do SMA para atender o mapeamento.
Arquiteturas classificadas por grupo: na classificação por grupo está a Arquitetura simples, em que o sistema é composto por um Agente; Arquitetura moderada, em que os Agentes executam as mesmas tarefas, mas para usuários diferentes e podem residir em máquinas diferentes; Arquitetura complexa, em que se faz o uso de diferentes tipos de Agentes autônomos, podendo cooperar e estar em diferentes plataformas;
Arquiteturas classificadas por cooperação: as arquiteturas por cooperação são a Arquitetura Quadro-Negro, em que os Agentes se comunicam indiretamente pelo uso de um repositório de mensagens; Arquitetura de mensagens, os Agentes se comunicam diretamente pelo uso de mensagens assíncronas com o nome e endereço dos Agentes remetente e/ou destinatário; Arquitetura Federativa, os Agentes são organizados por grupos em que Agentes Facilitadores são utilizados para troca de mensagens inter/intra grupos;
Arquiteturas classificadas por coordenação: nesta classificação existem dois mecanismos sendo o Mestre-Escravo, em que o Agente Mestre distribui tarefas aos Agentes Escravos e aguarda resultados; Mercado, todos os Agentes se conhecem com relação às tarefas desempenhadas. (GIRARDI, 2004)
Os AM's são tipos de Agentes que possuem a capacidade de se movimentar - com código, dados e execução - entre hosts ou dispositivos de rede. O processo de movimentação pode ser implementado por serialização ou por cópia, em que o Agente Móvel (AM) é morto em um host ou dispositivo de rede, e um novo Agente Móvel é criado em um posterior host ou dispositivo de rede com o mesmo código, dado(s) e execução. O AM pode ser mapeado seguindo as nomenclaturas de RUSSELL e NORVIG (2004) e WOOLDRIDGE (2002), como também o Sistema Multiagente com AM's, pode ser mapeado de acordo com a classificação de GIRARDI (2004). O uso de AM's proporcionam os seguintes benefícios:
Redução de carga na rede: Agentes estacionários necessitam trocar informações concorrentemente na rede, isto causa sobrecarga. AM's processam as informações e se encarregam de enviar pela rede somente os resultados de suas metas;
Assincronismo: os AM's não necessitam estabelecer conexão Cliente-Servidor;
Paralelismo: um SMA é por natureza um sistema distribuído, viabilizando execução paralela de Agentes.
Tolerância a falhas: Uma tarefa pode ser alocada para vários Agentes garantindo tolerância a falhas no cumprimento de metas; (LANGE; OSHIMA, 1999)
Apesar dos AM's conferirem vantagens ao sistema de software, estes também são passíveis de desvantagens, como:
Segurança: os hosts ou dispositivos de rede precisam estar habilitados para permitir a hospedagem de AM. Logo, falsos AM's podem se infiltrar facilmente no sistema consumindo recursos, destruindo dados e interrompendo o funcionamento dos dispositivos;
Desempenho e tamanho do código: é necessário um mapeamento eficiente da arquitetura do AM para que a sua estrutura não prejudique o desempenho do host ou dispositivo de rede; (JANSEN et al., 1999)
Neste artigo foi mostrado, de forma resumida, o Paradigma de Programação Orientado a Agentes. Espero que tenham gostado e até a próxima.
JANSEN, W. et al. Applying mobile agents to intrusion detection and response. Washington: National Institute of Standards and Technology Computer Security Division, 1999.
JENNINGS, N. R.; SYCARA, K.; WOOLDRIDGE, M. A Roadmap of Agent Research and Development. Autonomous Agents and Multi-Agent Systems, v. 1, p. 275-306, 1998.
LANGE, D. B.; OSHIMA, M. Seven good reasons for mobile agents. Communications ACM, v. 42, n. 3, p. 88-89, 1999.
LUCK, M.; MCBURNEY, P.; PREIST, C. Agent Technology: Enabling Next Generation Computing A Roadmap for Agent-Based Computing. 1. ed. United Kingdom: AgentLink II, 2003.
LUGER, G. F. Artificial Intelligence: structures and strategies for complex problem solving. 6. ed. [s.l.] Pearson Education, 2009.