Usando agentes inteligentes com a plataforma JADE

O uso aplicado da computação tem possibilitado criar entidades artificiais inteligentes, capazes de tomar decisões de forma autônoma e independente. Hoje é comum ouvirmos falar de sistemas especialistas ou inteligentes e essa definição está normalmente associada ao desenvolvimento de programas capazes de aprender com o ambiente em que são inseridos. Sistemas críticos e complexos são candidatos típicos à aplicação da inteligência artificial e, nesse domínio, podemos destacar o uso de sistemas multiagentes.

É possível também utilizar essas técnicas em atividades do dia-a-dia, construindo soluções elegantes e eficazes, em situações que exijam certo nível de aprendizagem automática. Atualmente, a principal plataforma open source disponível para a construção de aplicações multiagentes é o JADE, que conta com uma comunidade ativa de usuários. Nesse artigo, exploraremos a API da plataforma JADE, que envolve uma arquitetura de comunicação e de mensagens e suporta as principais características de sistemas especialistas. Começamos com uma breve introdução ao mundo dos agentes inteligentes.

Desmistificando os agentes

Podemos definir um agente inteligente como um sistema de computação capaz de interagir em algum ambiente e de realizar ações de forma autônoma (dependendo apenas das informações que o agente possui no momento) para atingir seus objetivos. Normalmente, agentes possuem características tanto reativas (ações provocadas pelo ambiente) como proativas (ações voluntárias do agente). São também adaptativos e orientados a objetivos. Entretanto, normalmente um agente não atua de forma isolada. Cada agente possui tarefas específicas dentro de um conjunto maior de atividades. Baseado nisso, podemos pensar em um sistema multiagentes como um conjunto de agentes especialistas em determinadas tarefas, interagindo para buscar um objetivo específico.

Comportamento básico de um agente
Figura 1. Comportamento básico de um agente

A Figura 1 apresenta o comportamento básico de um agente. Através de um sensor de entrada, o agente é capaz de capturar estímulos do ambiente em que está inserido e reagir a partir de um conjunto de ações pré-definidas. Um bom exemplo do uso de agentes é um sistema de diagnóstico médico. Esse sistema recebe como entrada os sintomas do paciente e respostas a várias perguntas definidas por um profissional de saúde, e propõe um diagnóstico e um tratamento adequado com base em um histórico de informações anteriores. Os agentes são capazes, através de tarefas especializadas e coordenadas, de encontrar uma solução ótima baseando-se nas entradas que recebem. Nesse caso, pacientes e o hospital são parte do ambiente do sistema e as questões, testes e tratamentos são as ações do agente.

Agentes aplicados

O uso de agentes está longe de ser algo puramente acadêmico e sem aplicação comercial. Agentes já são aplicados em diversas áreas e podem tirar grande proveito de ambientes distribuídos como a Internet. Diversas aplicações peer-to-peer (P2P), baseadas em tecnologia de agentes vêm sendo usadas e desenvolvidas durante os últimos anos, impulsionadas pelo aumento na largura de banda de transmissão e apostando, por exemplo, nos “relacionamentos virtuais”. Outras aplicações típicas que estão inseridas neste contexto são sistemas baseados em e-learning e e-commerce. Na área de aplicações móveis, podemos destacar ainda serviços de “busca e localização”, como encontrar o estacionamento mais próximo e mais barato, ou fazer reserva em um restaurante de acordo com as preferências do usuário. Há também aplicações no ambiente corporativo. Agentes inteligentes têm obtido sucesso em áreas desde sistemas para gestão do conhecimento, até em aplicações de suporte à decisão, passando por controle industrial, e sistemas de logística e de gerenciamento de tráfego de rede.

O código de um agente com JADE

O JADE (Java Agent DEvelopment Framework) é um framework open source em Java que simplifica a implementação de sistemas multiagentes, através de um conjunto de funcionalidades que atende às especificações da Fundação para Agentes Inteligentes Físicos (FIPA), seguindo uma abordagem P2P.

A FIPA (Foundation for Intelligent Physical Agents) tem como objetivo a promoção de tecnologias e especificações de interoperabilidade que facilitem a comunicação e o trabalho fim-a-fim entre agentes inteligentes, em aplicações comerciais e industriais.

Listagem 1. Estrutura básica de um agente

    package br.com.javamagazine.exemplo;

    import jade.core.Agent;

    import jade.core.behaviours.Behaviour;

    public class ExemploEstruturaAgente extends Agent {

    @Override

    protected void setup() {

    /*Nesse método o agente pode disponibilizar seus serviços para outros através de uma publicação no diretório de
    serviços da plataforma e pode buscar serviços específicos disponibilizados por outros agentes, dentre outras
    atividades.*/

    }

    @Override

    protected void takeDown() {

    /*Aqui ficam “códigos de limpeza” para serem executados quando o agente está sendo finalizado.*/

    }

    private class AlgumComportamento extends Behaviour {

    @Override

    public void action() {

    /*Executa atividades especializadas e/ou se comunica com outros agentes através de mensagens. */

    }

    @Override

    public boolean done() {

    boolean condicaoTermino = false;

    //Faz uma avaliação da condição de término...

    return condicaoTermino;

    }

    }

    }
     ... 

Quer ler esse conteúdo completo? Tenha acesso completo