UNICAMP - Faculdade de Engenharia Elétrica e Computação

Monografia

Agentes Inteligentes: Noções Gerais

Maria Angélica Calixto de Andrade Cardieri

Julho/1998

 Sumário

1.0 Introdução

2.0 Definição Conceitual

2.1 Histórico

2.2 Conceitos Principais

2.3 Abordagens em diversas áreas

2.4 Classificação de Agentes

3.0 Que inteligência deve ser adicionada um agente?

3.1 Agencia e inteligência

3.2 Como as pessoas podem interagir com os agentes?

4.0 Projeto de Agentes Inteligentes

4.1 Agentes de Interface

4.2 Técnicas de Aprendizado

5.0 Sistemas Multiagentes

5.1 Colaboração

5.2 Comunicação entre os Agentes

6.0 Agentes Móveis

6.1 Conceituação

6.2 Aspectos Tecnológicos

6.3 Vantagens da Utilização de Agentes Móveis

7.0 Agentes no ambiente educacional

8.0 Conclusões

 

9.0 Referências

 

1.0 Introdução

 

Agentes inteligentes de software são atualmente objetos de pesquisa em muitos campos tais como psicologia, sociologia e inteligência artificial. A definição de agentes é motivo para muitas controvérsias no campo da interação homem-máquina. O que é um agente? O que os faz diferentes de outras técnicas? Que funcionalidades devem ter? Estas são algumas das principais questões discutidas.

Uma variedade de abordagens e projetos usam o termo agentes, desde interfaces de usuários adaptativas a complexos sistemas distribuídos. Segundo pesquisadores da área[2], um agente deve possuir algumas das características associadas com a inteligência humana: conhecimento, inferência, adaptabilidade, independência, criatividade, etc. É suposto que um usuário deva delegar uma tarefa ao agente e não comandar o agente para executar a tarefa. O que exatamente vem a ser esta assistência também é motivo para debates.

Este documento tem como objetivo, conceituar o que são agentes inteligentes tendo em vista as diversas áreas de abrangência e a diversificação de abordagens. Apresentar o estado atual da tecnologia, as vantagens da utilização dos agentes na Web com base nos projetos desenvolvidos na área e identificar pontos que possam contribuir para o uso em ambientes educacionais mediados por computador.

O capitulo 2 introduz o conceito de agentes, as características associadas a estes, e as áreas de atuação. O capítulo 3 questiona o conceito de inteligência adicionada a um agente e como deve ser a interação com as pessoas. O capítulo 4 apresenta técnicas de aprendizado aplicadas aos agentes. O conceito de sistemas multi-agentes é apresentado no capítulo 5, e o capítulo 6 trata do conceito de agentes móveis. Algumas tendências no ambiente educacional são apresentadas no capítulo 7. Finalmente, o capítulo 8 apresenta uma conclusão sobre o assunto.

 

2.0 Definição Conceitual

2.1 Histórico

A idéia de empregar agentes para delegar certas tarefas baseadas em computador foi inicialmente introduzida[3] por Negroponte e Kay. O termo agente foi inicialmente definido em trabalhos preliminares na área de inteligência artificial, onde pesquisadores dedicavam-se em tentar reproduzir uma entidade artificial que imitasse as habilidades humanas.

As primeiras pesquisas na área foram direcionadas ao uso de agentes como uma forma de se obter uma comunicação de alto nível entre o homem e a máquina, usando uma forma de expressão semelhante a humana.

Recentemente diversas indústrias adotaram a idéia de agentes para ilustrar sua visão de interface do futuro. Apesar do grande esforço que tem sido realizado para modelar e construir agentes, as técnicas atualmente disponíveis estão longe de permitir as esperadas interações de alto nível, semelhante a seres humanos nos vídeos.

Muitos trabalhos tem sido elaborados utilizando agentes. Segundo Morreale[10], inicialmente os agentes desenvolvidos estavam restritos a um único computador ou no máximo a uma rede homogênea, como uma plataforma Unix por exemplo e limitado a tarefas pré-estabelecidas. Atualmente os agentes estão quebrando este confinamento a um só ambiente apresentando-se móveis, e aprendendo a executar tarefas baseados em sua própria experiência.

Atualmente, pesquisas estão surgindo centradas no conceito de agentes móveis, o que envolve não somente técnicas de inteligência artificial como também solicita tecnologias de comunicação, sistemas distribuídos e softwares.

 

2.2 Conceitos Principais

 

As dificuldades de definição do termo agentes devem-se principalmente ao uso indiscriminado do termo agente pelas indústrias de software, as quais utilizam-no de diferentes formas e com significados variados como um apelo para a aceitação de seus produtos no mercado.

Segundo Minsk[2], a palavra agente deve ser usada para referenciar a uma máquina que executa algo sem que seja necessário sabermos como ela trabalha, algo semelhante a uma "caixa-preta".

Podemos citar outras definições tais como:

"Agentes de software são programas de computador que aplicam técnicas de inteligência artificial para prover assistência ao usuário em tarefas computadorizadas" [Maes].

"Um agente é um software que sabe como fazer coisas que você provavelmente faria se tivesse tempo" [8].

Independente das definições, há um consenso entre os estudiosos de que um agente deve ser um componente de software que atua em nome do usuário, liberando-o de tarefas repetitivas e cansativas, no sentido real de um agente tal como um agente de viagens no mundo real, onde delegamos a tarefa de reservar passagens, hotéis etc., em nosso nome não nos importando como isto foi feito.

Devido a multiplicidade de papéis que os agentes podem assumir a definição de agentes se torna muito difícil. Uma maneira de substituir uma definição formal é inumerarmos uma lista das características gerais que devem ser associadas a um agente.

Podemos dividir estas características em duas categorias[8]. A primeira está associada a uma noção fraca sobre agentes que define a abordagem inicial das pesquisas na área, e a segunda associa-se a uma noção mais robusta. No primeiro caso podemos inumerar:

Autonomia: Agentes devem operar sem a intervenção humana e devem ter uma espécie de controle sobre suas ações e estado interno.

Cooperação: Agentes interagem com outros agentes e possivelmente seres humanos através de algum tipo de linguagem específica.

Reatividade: Um agente "percebe" seu ambiente e responde prontamente a alterações que ocorram neste. Isto pode sugerir o fato de que um agente gasta grande parte do seu tempo em uma espécie de "sleep state" da qual ele acorda se algo muda em seu ambiente ( p. ex. a chegada de um e-mail)

Proatividade: Um agente não só responde a mudanças em seu ambiente como também está apto a exibir um comportamento direcionado a objetivos tomando iniciativas.

Continuidade temporal: Agentes são processos que estão continuamente rodando podendo estar ativos ou passivos("sleeping").

Orientacão a eventos(goal): Um agente é capaz de suportar tarefas complexas, decidindo se deve dividí-las em tarefas menores e em qual ordem deve executá-las.

Na verdade, os agentes que se enquadram nas características definidas acima podem ser considerados semelhantes à um tipo de processo de software do UNIX, uma vez que estes também possuem as propriedades citadas.

Uma noção mais sólida de agentes é utilizada principalmente por pesquisadores do campo de Inteligência Artificial e deve incluir características mais robustas tais como:

Mobilidade: A habilidade de um agente em se mover sobre uma rede eletrônica.

Benevolência: Assume-se que os agentes não possuem conflitos de objetivos e sempre tentarão fazer o que for solicitado a eles buscando cooperação.

Racionalidade: Um agente sempre vai agir de forma a alcançar seus objetivos e nunca de maneira que prejudique obtê-los.

Aprendizado/Adaptabilidade: Um agente deve estar apto a aprender e a se ajustar aos hábitos, método de trabalho e preferências do usuário.

Colaboração: Um agente não deve impensadamente executar instruções, mas deve considerar que os seres humanos cometem erros, seja através de instruções mal formuladas ou omissão de informações. Neste caso os agentes devem certificar-se através de perguntar formuladas aos usuários para resolver problemas como este. Um agente pode também se recusar a executar determinadas tarefas se estas causarem danos à outros usuários.

Segundo Hermans[8], não existe ainda nenhum agente que possua todas estas características implementadas, embora existam alguns protótipos que apresentem grande parte destas. Também não há ainda um consenso sobre a importância de cada uma destas características nos agentes, mas a maioria dos cientistas concordam que são estas as responsáveis pela diferença entre um agente e um programa normal.

 

2.3 Abordagens em diversas áreas

As aplicações atuais de agentes são na maioria experimentais. Universidades como por exemplo MIT (Massachusets Institute of Tecnology) e centros de pesquisas como o da IBM e Microsoft estão realizando projetos nesta área. No entanto, uma grande parte das pesquisas desenvolvidas enfoca áreas de aplicação básicas, que possam mostrar resultados definidos à curto prazo. Tais aplicações envolvem principalmente:

- Agentes que manipulam e-mails.

- Agentes que filtram e/ou pesquisam através da rede novos artigos, procurando por informações de interesse do usuário.

- Agentes que planejam reuniões baseados em lista de participantes ou na agenda eletrônica de cada participante em particular.

Para as funcionalidades acima, já existem um grande número de produtos sendo comercialmente vendidos e protótipos em fase final. Podemos citar Letizia [1] e Footprints[7], agentes de interface que auxiliam a navegação na Web, Maxims[ 13] um agente que auxilia o usuário com e-mail e MCL[Ref3b] que auxilia a agendar reuniões negociando horários entre os participantes.

 Podemos identificar áreas de aplicações mais complexas, com trabalhos de pesquisa ainda em desenvolvimento, onde o uso de agentes pode trazer grandes benefícios:

Gerenciamento de redes e sistemas: Simplificar o gerenciamento de sistemas complexos por exemplo: gerenciar configurações dinamicamente.

Acesso Móvel: Surge devido a necessidade de acesso a rede a partir de qualquer local. Agentes podem residir na rede e realizar as requisições do usuário enviando informações compactadas como uma forma de burlar as limitações tais como largura de banda.

Gerenciamento e acesso à informação: Auxílio ao usuário para pesquisar e filtrar informações.

Trabalho colaborativo: Suporte a equipes de design para compartilhar documentos ou recursos através da rede.

Gerenciamento administrativo: Agentes podem ser usados para automatizar processos.

Comércio eletrônico: Agentes podem ir às compras para os usuários a partir de especificações retornando sugestões de compras.

Interface com o usuário: Agentes inteligentes permitem ao sistemas monitorar as ações do usuário ajudando-os em seus problemas.

 

A colaboração entre agentes e a mobilidade de agentes consistem em áreas que ganham espaço nas pesquisas e consistem em uma tendência para o futuro.

 

2.4 Classificação de agentes

A classificação dos tipos de agentes existentes é apontada por diversos autores baseados na sua funcionalidade e na forma de atuação [3],[6],[13],[9]. A maioria deles adota uma classificação onde os agentes são apresentados como; Agentes de Interface (autônomos ou não), Agentes Colaborativos (arquitetura Multi-agentes) e Agentes Móveis. No entanto esta classificação não é rígida.

 Segundo Morreale[9] existem cinco características essenciais que diferem um agente e os diferencia de um software convencional. Estas são: autonomia, reatividade, aprendizado, cooperação e mobilidade (definições se encontram na seção 2.2). A combinação destas características resultam em 32 possíveis tipos de agentes. A autora baseia-se em três dentre as cinco características citadas sendo: autonomia, aprendizado e cooperação e classifica um agente como sendo: Básico: se implementar pelo menos uma das três características; Avançado: se implementar duas das três características; Ideal: se implementar as três.

Os capítulos 4 e 5 apresentarão uma definição mais detalhadas sobre cada tipo de agente citado.

 

3. Que inteligência deve ser adicionada a um agente?

3.1 Agência e inteligência

Embora a definição de um agente implique na visão deste como uma "caixa-preta" onde não há interesse em saber como as tarefas são executadas, há momentos em que torna-se necessário saber como e em que grau de autonomia o agente executa suas tarefas. O grau de autonomia e autoridade outorgada a um agente é chamado de Agência (Agency).

A agência pode ser medida qualitativamente pela natureza da interação entre o agente e outras entidades do sistema na qual ele opera. Assume-se que um agente deve no mínimo rodar assincronamente e, de maneira mais avançada, ele deve interagir com outras entidades tais como aplicações, base de dados como também colaborar e negociar com outros agentes.

 Definir o que faz um agente ser inteligente é um conceito polêmico em inteligência artificial. Segundo Minsk[2] um agente nunca conseguirá assumir inteligência semelhante aos seres humanos pois são ainda incapazes de adquirir o que ele chama de "common-sense" isto é noções de espaço e tempo, capacidade de reconhecer propriedades de materiais apenas com o recurso visual, capacidade de resolver problemas e superar obstáculos, enfim todo conjunto de conhecimentos inerentes ao ser humano.

 

 Em Hermans[8], encontramos a definição de inteligência como sendo o grau de raciocínio e comportamento aprendido isto é a habilidade do agente em aceitar declarações de objetivos do usuário e realizar as tarefas associadas a ele.

 Segundo Pattie Maes [13] dois problemas principais devem ser resolvidos para a construção de agentes inteligentes: O primeiro problema é a competência isto é, como um agente adquire o conhecimento que ele precisa para decidir quando ajudar um usuário? E o segundo problema é a confiança: como podemos garantir que os usuários se sintam seguros em utilizar um agente?

 

3.2 Como as pessoas podem interagir com os agentes?

O conceito de agente, especialmente quando associado a palavra inteligência, evoca a idéia de autômatos semelhante a humanos, trabalhando sem supervisão em tarefas que nos beneficiem. Existem muitos mitos e promessas colidindo com a realidade. No entanto o problema principal reside na pergunta: Como os agentes inteligentes irão interagir com as pessoas e o que as pessoas pensam sobre os agentes?

Autômatos e máquinas inteligentes existem já há algum tempo, porém o que difere os agentes inteligentes atuais deste tipo de máquina é a capacidade computacional.

Segundo Donald[15] um fator que não pode ser descartado é o "sentimento de controle" inerente ao ser humano. Sob o ponto de vista psicológico, o ser humano gosta do sentimento de controle que ele tem sobre suas atividades e ações. A utilização de agentes pode mascarar este controle. Por exemplo apesar de uma aeronave navegar bem com o piloto automático, por mais eficiente que ele seja, as pessoas não vão se sentir a vontade sem uma piloto humano a bordo. Em relação ao agente de software é bem provável que as pessoas queiram ter maneiras de saber a respeito das ações de seus agentes como uma forma de se sentir seguras.

Por outro lado, há o perigo das pessoas exagerarem na expectativa das capacidades dos agentes. Muitos fabricantes tem uma tendência natural de apresentar seus agentes no formato humano, atribuindo-lhes nomes próprios ou mesmo uma face humana no modelo. Esta personificação sugere promessas de desempenho que não poderão ser atingidas.

Algumas questões sobre a interação homem-agente podem ser levantadas tais como:

 

Todas estas questões devem ser levadas em consideração no projeto de sistemas inteligentes.

 

4. Projeto de Agentes inteligentes

Existem diversas considerações sobre quais tarefas um agente inteligente deve executar, assim como, qual deve ser o grau de interação deste com o usuário. Outro aspecto que vem sendo discutido é a forma como o agente opera e como ele adquire conhecimento isto é, a sua competência.

 

4.1 Agentes de Interface

Há casos em que o agente atua na interface, de maneira oposta ao que opera como "back-end", assistindo ao usuário na operação de uma interface interativa. Neste caso é denominado de Agente de Interface.

Por outro lado, um agente pode atuar de forma autônoma sem intervenção do usuário enquanto este executa outras tarefas. Este tipo de agente é denominado agente autônomo. No entanto, como citado anteriormente, esta classificação[3] não é rígida uma vez que um agente pode trabalhar na interface e não ser autônomo e pode ser autônomo e não trabalhar na interface. Portanto podemos ter agentes de interface autônomos ou não e semi-autônomos.

Um agente de interface não atua como uma interface ou uma camada entre o nível do usuário e a aplicação e sim em conjunto com o usuário. O ponto principal[9] que difere um agente inteligente de interface de uma interface inteligente de usuário(IUI) é que os agentes são proativos e gozam de um certo grau de autonomia. Seu comportamento se assemelha a de um assistente pessoal que coopera com o usuário em uma tarefa. O usuário pode desprezar o agente se achar necessário. Green[9] aponta como características básicas a um agente de interface a autonomia e a habilidade em aprender.

Segundo Maes[13] três abordagens para a construção de agentes de interface podem ser citadas. A primeira consiste em usar o programa do usuário final como um agente ( agente semi-autônomo). Esta abordagem permite que o usuário defina regras as quais vão ditar o comportamento do agente. A vantagem neste caso é a confiabilidade pois o usuário tem o controle total das ações uma vez que ele próprio definiu as regras, portanto credibilidade alta . A desvantagem é a carga de trabalho delegada ao usuário final, uma vez que ele tem que reconhecer a oportunidade de se utilizar um agente e se preocupar com a manutenção das regras definidas ao longo do tempo.

A segunda abordagem é dotar o agente de um mecanismo de conhecimento (knowledge-based aproach) específico sobre o domínio da aplicação(domain model) e do usuário(user model). Esta última abordagem é a adotada pelos estudiosos de inteligência artificial e de interfaces inteligentes para usuários. Neste caso, em tempo de execução, o agente usa seus conhecimentos para reconhecer o plano do usuário e localiza uma forma que possa contribuir.

 A desvantagem desta abordagem é que o conhecimento atribuído ao agente é fixo e não pode ser adaptado. Há muito trabalho envolvido para definir o mecanismo de conhecimento e um sentimento de perda de controle por parte do usuário uma vez que o agente foi programado por outra pessoa e o usuário não tem noção das limitações e métodos de trabalho do agente.

 A terceira abordagem, mais robusta, é a apresentada por Maes[13] e defendida também por outros autores tais como Lieberman[4]. Esta baseia-se em técnicas de aprendizado pela máquina(learning approach ou behavior based-approach). A idéia é fornecer ao agente um mínimo de conhecimento prévio, e a partir da observação das ações do usuário ele aprende como atuar. Neste caso, algumas condições devem ser respeitadas tais como: a aplicação deve envolver um comportamento repetitivo e o trabalho deve ser potencialmente diferente para diferentes usuários. Se estas condições não forem preenchidas não se justifica o uso deste tipo de agentes pois não havendo regularidade de ações ele não tem meios para aprender e se o trabalho é o mesmo para todos os usuários, a abordagem de conhecimento fixo pode fornecer melhores resultados.

 

Dentre as vantagens desta abordagem sobre as demais destacam-se; requer menos esforço do usuário final, alto grau de confiabilidade por parte do usuário pois o agente desenvolve gradualmente suas habilidades baseadas no comportamento do próprio usuário e permite a transferencia de know-how entre diferentes usuários da comunidade.

 

4.2 Técnicas de Aprendizado

 Um dos problemas na construção de agentes inteligentes é garantir a obtenção de informações precisas sobre o interesse do usuário, objetivos e preferências. A questão básica é : quais as técnicas utilizadas para um agente adquirir conhecimentos?

 Existem algumas técnicas de aprendizado tradicionais utilizados no campo da IA tais como[9]:

Técnica de classificação simbólica: Tenta classificar um conjunto de exemplos dentro de um número finito de classes abstratas. Por exemplo uma árvore de decisão pode ser montada a partir de um conjunto de exemplos onde cada elemento consiste em um número de atributos relevantes de uma classe.

 Técnica de classificação sub-simbólica: Esta técnica é baseada em sistemas de redes neurais. Este sistema recebe padrões como entrada e classifica-os em um número finito de categorias.

 

As técnicas citadas acima, apesar de tradicionais apresentam o problema de não oferecerem o aprendizado em tempo-real e sim off-line. O aprendizado em tempo-real é que define um agente autônomo, capaz de agir sem intervenção do usuário. Para este tipo de agente a técnica utilizada é a do aprendizado a partir do ambiente.

 Segundo Maes[13], na técnica de aprendizado em tempo-real, um agente pode adquirir conhecimentos a partir de quatro fontes diferentes:

 

 5.0 Sistemas Multi-agentes

5.1 Colaboração

Embora agentes de interface tenham sucesso em seu aprendizado, o maior problema deste sistemas reside no fato de necessitarem de um tempo muito grande até poderem ser usados, pois é preciso acumular conhecimentos. Outro problema é que a sua competência é restrita às situações similares às encontradas no ambiente do usuário

A troca de informações, isto é a colaboração entre os agentes pode solucionar grande parte destes problemas[6]. Agentes experientes podem ajudar a um novo agente a aprender com mais rapidez, assim como auxilia-lo em situações não familiares. Enquanto os agentes de interface devem apresentar habilidade em aprender e autonomia, um agente colaborativo requer autonomia e cooperação.

A motivação para a implementação deste tipo de agente situa-se principalmente na necessidade da troca de informações entre ambientes heterogêneos gerados pela evolução da tecnologia em redes de computadores gerando uma grande variedade de sistemas e base de dados distribuídos.

Inteligência Artificial Distribuída (DAI) é um subcampo de IA que investiga modelos de conhecimento[ref9], assim como técnicas que permitem que agentes computacionais participem em sociedades compostas de computadores e pessoas. Esta sociedade denomina-se Sistemas Multi-Agentes (MAS).

Estes sistemas multi-agentes são compostos de agentes individuais que trabalham juntos para resolver problemas complexos, como por exemplo em um sistema de apoio à decisão, onde um diagnóstico final pode ser gerado, baseado no diagnóstico de cada agente individualmente. Tipicamente estes agentes apesar de estarem distribuídos pela rede são estáticos isto é permanecem em uma só máquina. Seu projeto deve estar focado nas características de coordenação, negociação e comunicação.

Segundo Morreale[10] um agente ideal para gerenciamento de uma rede, seria aquele que mesclasse a habilidade de cooperar extraída de agentes colaborativos com a habilidade de aprender extraída dos agentes de interface.

Green[9] distingue dois tipos de sistemas multi-agentes, baseado no grau de cooperação entre os agentes:

O problema neste segundo tipo de sistema é que os agentes nem sempre conseguem exercitar a propriedade de benevolência, isto é a situação de total cooperação, pois podem ocorrer conflitos de objetivos ( objetivo individual versus objetivo do grupo). Um exemplo disto é o agendamento de reuniões. Cada agente tentará esquematizar a reunião no melhor horário particularmente.

O problema em resolver o desempenho de sistemas em MAS é denominado Solução do Problema da Distribuição[9] e envolve comunicação, coordenação e negociação entre os agentes.

Colaboração e comunicação entre os agentes podem ser realizadas de diferentes formas. Lashkari[6], apresenta duas classes de colaboração:

 

5.2 Linguagens de comunicação entre agentes

 Para os agentes colaborarem e se comunicarem eles devem falar uma linguagem comum assim como seguir um protocolo padrão, caso contrário a troca de informações pode ser prejudicada pela heterogeneidade. Sem dúvida uma linguagem comum é a base para a condução de informações, mas qual linguagem seria a mais apropriada?

 De acordo com Geneserch[5], existem duas abordagens populares para o projeto desta linguagem: a abordagem procedural e a abordagem declarativa. A primeira abordagem é baseada na troca de diretivas procedurais. Algumas linguagens tais como TCL, Aplle events e Telescript são baseadas nesta abordagem. Apesar destas linguagens serem eficientemente executadas elas trazem a desvantagem das procedures serem unidirecionais, e muitas vezes os agentes precisam compartilhar informações em ambas as direções.

 A segunda abordagem é baseada no conceito de que a comunicação pode ser modelada como troca de comandos de declaração. Como exemplo temos o padrão ACL (Agent Communication Language), que é composta de três partes: o vocabulário, uma linguagem interna denominada KIF (Knowledge Interchange Format) e uma linguagem externa chamada KQML ( Knowledge Query and Manipulation Language). Uma visão mais abrangente destas linguagens pode ser encontrada em [5].

 

 6.0 Agentes Móveis

6.1 Conceituação

Recentemente, devido à rápida expansão da internet e ao aumento do uso de recursos em rede tais como aplicações multimídias, um novo paradigma vem surgindo denominado agentes móveis. Por definição, agentes móveis são entidades de software autônomas, capazes de viajar através da rede e executar tarefas em nome do usuário. A grande diferença entre este conceito e a visão mais simples de agentes é a mobilidade, a qual permite que ele se mova de um ambiente hospedeiro para outro carregando consigo seu código e seu estado para outra máquina sendo capaz de terminar sua execução nesta.

Com vista neste novo paradigma encontramos a seguinte definição de agentes inteligentes em [4]:

Um agente é uma entidade computacional que:

- Atua em nome de outra entidade de uma forma autônoma

- Executa suas ações em algum nível de proatividade e/ou reatividade.

- Exibe algum nível dentre os atributos básicos de aprendizado, cooperação e mobilidade.

 

As primeiras abordagens[10] de agentes móveis consideravam um programa que podia se mover sob seu próprio controle de máquina a máquina em um ambiente heterogêneo. O primeiro modelo de agentes móveis foi introduzido em 1995 no sistema denominado AgentTCL ( Dartmouth College - Hanover). Neste modelo a execução de um agente é suspensa em qualquer ponto e o seu código e estado transportado para outra máquina onde é terminado seu processamento. Esta caracterização foi refinada com o tempo por pesquisadores da área de sistemas distribuídos dando menos ênfase ao aspecto de código móvel e mais ênfase no desempenho dos agentes em sistemas de tempo-real. As pesquisas atuais concentram-se no aspecto do código sem entretanto desprezar o comportamento e a facilidade de uso dos agentes móveis em ambientes distribuidos.

Uma área de pesquisa onde agentes móveis estão sendo propostos é em sistemas de banco de dados distribuídos heterogêneos[11]. Nesta área um agente poderia ser útil para:

- Tornar possível a criação de links entre dados localizados em diferentes banco de dados.

- Tornar acessível a uma interface trabalhar com muitos banco de dados.

 

6.2 Aspectos Tecnológicos

 

 A diferença entre um agente móvel e um agente estático reside na forma como ele se comunica com um serviço remoto na rede.

O já conhecido método[12] de chamada remota ao procedimento(RPC) permite que programas chamem procedimentos localizados em outras máquinas sem que o programador visualize qualquer operação de troca de mensagens ou de entrada e saída.

Neste método um conjunto de dados são enviados para a outra máquina, que os processa e devolve o resultado. Cada troca de mensagens envolve uma solicitação de serviços ou um aviso de reconhecimento (acknowledge). Neste processo há a necessidade de uma conexão persistente o que acarreta um overhead muito grande na comunicação .

Os agentes móveis utilizam uma forma de programação remota(remote programming)[10] que traz vantagens sobre a comunicação baseada em RPC tradicional. Neste caso, a uma procedure é associado os seus dados ou estado como um objeto, onde este objeto é um agente móvel que navega através da rede até chegar ao computador de destino que o executa. Após a execução o agente pode ser deletado.

Para um agente ser executado em diferentes hospedeiros em uma rede, cada hospedeiro deve fornecer suporte de software especializado. Este software permite que o agente acesse os recursos do hospedeiro que ele precisa para comunicação, computação e navegação.

Green[9] apresenta a seguinte definição para um ambiente de agentes móveis:

"Um ambiente de agentes móveis é um sistema de software o qual é distribuído sobre uma rede de computadores heterogêneos. Sua tarefa fundamental é prover um ambiente no qual agentes móveis possam ser executados. Este ambiente também deve prover: serviços de suporte relacionados com o próprio ambiente do agente, suporte aos serviços do ambiente aonde o agente foi construído, suporte para acesso a outros sistemas de agentes móveis e suporte para permitir acesso a ambientes de software não baseados em agentes (openness)"

A tecnologia de agentes móveis vem sendo desenvolvida já há alguns anos, porém apenas recentemente vem surgindo alguns sistemas. A maioria deles é construído sobre um sistema em Java, embora alguns desenvolvam desde a base. Como exemplo temos o sistema Aglets desenvolvido pela IBM do japão, TCL/tk pela Sun microsystems e Tacoma (Cornell University), este último em fase de pesquisa.

 

6.3 Vantagens da Utilização de Agentes Móveis

A motivação para o uso de agentes móveis é justificada pela necessidade de uso destes em ambientes de tempo real, onde latência ou atrasos de qualquer tipo não são permitidos.

Podemos citar[9] diversas vantagens do uso de agentes móveis, porém as citadas abaixo são as mais importantes para justificar sua utilização:

Eficiência: Agentes móveis consomem menos recursos de rede, uma vez que computação e dados são transferidos ao invés de somente os dados.

Redução do Tráfego na rede: O número de interações pela rede diminui, uma vez que estas podem ser feitas localmente.

Interação autônoma assíncrona: Agentes móveis podem operar assincronamente e independente do programa que o enviou.

Suporte para ambientes heterogêneos: Como os agentes móveis são independentes do computador e da rede eles suportam operações de forma transparente.

Outras vantagens podem ser associadas herdadas das existentes para um agente estático tal como adaptação ao comportamento do usuário, adaptação ao ambiente etc.

 

7.0 Agentes no Ambiente Educacional

 

Um agente de interface pode ser visto como uma interface adaptativa pois utiliza o comportamento do usuário para definir suas ações. Neste sentido cursos mediados por computador podem usar a tecnologia de agentes para organizar a seqüência das lições a serem apresentadas baseados em mecanismos de aprendizado que inferem o comportamento do usuário ou em um perfil pré-definido.

No caso da educação á distancia[10], o uso de agentes móveis poderia ser empregado para selecionar de maneira prévia o material a ser consultado de forma a garantir sua disponibilidade quando o aluno precisar. Este processo poderia ser baseado em uma análise realizada em tempo real sobre o comportamento do aluno de forma a antecipar as próximas requisições.

 

8.0 Conclusões

Este documento apresentou uma visão geral da tecnologia de agentes inteligentes, conceituando-os sob o ponto de vista funcional e operacional. Com freqüência, podemos notar que o conceito de agentes esbarra a todo instante na definição de softwares tradicionais com comportamento já conhecido. Isto é, para toda função proposta para os agentes, podemos apresentar uma alternativa baseada na tecnologia já existente[9]. Qual é então, a vantagem da utilização de agentes e o que há de novo nesta tecnologia?

 

A resposta é que em certas casos os agentes levam vantagens sobre as abordagens tradicionais. Para a primeira abordagem de agentes, a qual algumas características são associadas à noção mais fraca de agentes(capitulo 2.2), estas vantagens podem, em alguns casos, não existir ou não se tornar tão aparente principalmente porque os agentes são estáticos e se assemelham muito a rotinas dos próprios sistemas operacionais onde residem( Unix por exemplo).

 

No caso de agentes móveis, estas vantagens se tornam mais evidentes, principalmente em ambientes distribuídos heterogêneos, com processamento em tempo-real onde as exigências de tempo, necessidade de comunicação persistente e problemas de largura de banda são vitais. Como citado no capítulo 5, a programação remota utilizada pelos agentes móveis permite diminuir o tráfego na rede, pois o agente é "enviado", em nome do usuário, ao hospedeiro levando consigo não somente código como também dados.

 

Outra justificativa para o uso de agentes móveis é a natureza atual dos sistemas distribuídos ( WEB, por exemplo) onde o local alvo nem sempre é conhecido. Este fato limita a utilização de agentes estáticos ou softwares convencionais pois teríamos que saber previamente qual a seqüência de acesso aos sites. Além disto seria necessário que cada nó participante suportasse todos os tipos de mensagens dos agentes, o que é inviável no mundo-real.

 

As atividades de pesquisa em agentes estão aumentando sensivelmente em diversas universidades na Europa e nos Estados Unidos, em centros de pesquisas governamentais(U.S. Government - projeto Darpa), e em industrias de software[10].

 

Há ainda falta de padrões para tornar sólida esta tecnologia. Com o objetivo de lançar a tecnologia de agentes móveis no mercado de trabalho, um grupo composto pela IBM, General Magic, The German National Research Center´s Fokuz Institute, Crystaliz inc. e o Open Group estão tentando definir padrões sob a proteção do OMG para incorporar agentes móveis em CORBA.

 

Alguns sistemas desenvolvidos, que utilizam agentes de interface estáticos para filtrar informações, e-mail e agendar reuniões podem ser úteis de imediato na internet.

 

9. Referências Bibliográficas

 

[1] Letizia: An Agent that assists web browsing

http://lieber.www.midia.mit.edu/people/li...eberary/letizia.html

 

 

[2] Marvin, Minsk

A Conversation with Marvin Minsk About Agents

Communications of the ACM july 1994/Vol 37, n.7

 

[3] Software Agents - MIT Media Lab - Autonomous Agent Group

http://agents.www.media.mit.edu/groups/ag...papers/newtesis/susection2_5.html

 

 

[4] Lierberman, Henry

Autonomous Interface Agents - MIT 1997

http://lieber.www.media.mit.edu/people/lieber/letizia/AIA/AIA.html

 

 

[5] Geneserch, M. and Ketchpel, S.

Software Agents

Communications of the ACM july 1994/Vol 37, n.7

 

[6] Lashkari, Yedzi et al.

Collaborative Interface Agents - MIT Media Laboratory

http://agents.www.media.mit.edu/groups/agents/paper/aaai-ymp/aaai.html

 

 

[7] Footprints

http://agents.www.media.mit.edu/groups/agents/paper/aaai-ymp/aaai.html

 

[8] Hermans, Bjorn

Intelligent Software Agents on the Internet

Journal First-Monday 1997

http://www.firstmonday.dk/issues/issue2-3/ch-123

 

 

[9] Green, Shaw et al.

Software Agents: A Review Maio/1997

http://www.cs.tcd.ie/research_groups/aig/iag/pubreview.ps.gz

 

[10] Morreale, Patricia

Agents on the Move

IEEE Spectrum - Abril 1998

 

[11] Leibnitz - Institut IMAG

The application of the Mobile agents in the decentralized heterogeneous database

systems

 

[12] Tanenbaum, Andrew

Sistemas Operacionais Modernos

Prentice-Hall 1995

 

[13] Maes, Pattie

Agents that reduce Work and information overload

Communications of the ACM july 1994/Vol 37, n.7

 

[14] Edmonds,R. , Candy,L. , Jones, R. e Souli, B.

Support for collaborative Design: Agents and Emergence

Communications of the ACM july 1994/Vol 37, n.7

 

[15] Norman, Donald

How Might People Interact with Agents.

Communications of the ACM july 1994/Vol 37, n.7