Revista Eletrônica da Faculdade Metodista Granbery http://re.granbery.edu.br - ISSN 1981 0377 Curso de Sistemas de Informação - N. 17, JUL/DEZ 2014 PRINCÍPIOS E ASPECTOS SOBRE AGENTES INTELIGENTES Mateus Araujo Damião1 Rodrigo Menezes Costa Caçador2 Sérgio Muinhos Barroso Lima3 RESUMO O objetivo deste artigo é dar ao leitor uma compreensão clara, através de tópicos importantes, que mostram como a tecnologia dos Agentes Inteligentes pode ser utilizada para melhorar a resolução de problemas de computação, devido a sua possibilidade de operação independente, através de exemplos de utilização dos agentes inteligentes para facilitar a compreensão desta tecnologia no campo da Inteligência Artificial (IA). PALAVRAS-CHAVE: Inteligência Artificial, Agentes Inteligentes, Tipos de Agentes, Princípios de Agentes, Aspectos de Agentes. ABSTRACT The purpose of this article is to give a clear understanding, through important topics, that show how the technology of Intelligent Agents can be used to improve the resolution of computing problems, due to its possibility of independent operation through examples of using Intelligent Agents, to facilitate understanding this technology in the field of Artificial Intelligence (AI). Keywords: Artificial Intelligence, Intelligent Agents, Types of Agents, Principles of Agents, Aspects of Agents. 1 Aluno do Curso de Sistemas de Informação, Faculdade Metodista Granbery, [email protected] Aluno do Curso de Sistemas de Informação, Faculdade Metodista Granbery, [email protected] ³ Mestre em Ciência da Computação, UNICAMP, [email protected] 2 1 1 INTRODUÇÃO A Inteligência Artificial é um campo de estudo considerado recente na ciência da computação tendo o seu início logo após a Segunda Guerra Mundial e, nos dias atuais, contempla uma imensa variedade de subcampos. O objetivo principal desta área ultrapassa a barreira da compreensão de como se dá o raciocínio humano. Ela busca o desenvolvimento de sistemas que simulem a capacidade humana de raciocínio, percepção e tomada de decisão para a resolução de problemas, ou seja, sistemas que tenham capacidade de serem inteligentes. As evoluções dos recursos tecnológicos vivenciados pela sociedade atual acontecem em proporção maior do que a capacidade que temos de assimilar essas mudanças. Além da evolução percebida em nível de hardware, o surgimento e o crescimento da internet, que após deixar de ser utilizada somente por governos e a nível acadêmico, permitiu o acesso a informações dos mais variados tipos, além de um vasto campo com recursos e serviços, como correio eletrônico, mensageiros instantâneos, compartilhamento de arquivo, redes sociais, entre outros, ou seja, nos traz um conceito de quebra de fronteiras da informação em larga escala e velocidade. Existem vários ramos de estudos sobre sistemas inteligentes, cada um se dedicando a um aspecto particular do comportamento humano. Pelo fato das pesquisas serem muito especializadas, não existe ainda, como vemos em filmes de ficção científica, estudos que se dediquem a construir uma máquina que reproduza o ser humano em sua totalidade. A Inteligência Artificial, á algum tempo, pode ser percebida no cotidiano das pessoas, como por exemplo, no desenvolvimento de videogames que utilizam esse tipo de estudo para a criação de jogos cada vez mais complexos. Nos jogos de futebol, por exemplo, tem-se cada jogador com características muito bem definidas e bem próximas do mundo real, ou seja, um tem uma maior velocidade, outro tem um melhor chute, dentre outros. Mas, para que essa simulação seja executada, técnicas de sistemas inteligentes são aplicadas no desenvolvimento. Outro exemplo são as máquinas de fotografia digital que conseguem fazer o foco automático no rosto das pessoas, ou ao encontrarem um sorriso disparam automaticamente. Nos corretores ortográficos dos processadores de texto de computador também nos deparamos com o uso da Inteligência Artificial, é preciso um sistema inteligente para reconhecer que há algum erro de sintaxe nas frases e assim oferecer 2 uma possível correção. Técnica clássica do processamento de linguagem natural, um sub-ramo da IA. O termo "agentes inteligentes" emerge nesta evolução, não sendo um termo afastado da realidade. Trata-se de um recurso de programação que representa elementos autônomos, que têm a capacidade de manipular, trocar informações e também conhecimento, sendo assim, entidades que, através da codificação nelas inseridas, conseguem, com um grau de independência, executar as operações que lhes foram designadas. Os agentes inteligentes estão sendo empregados há algum tempo em várias áreas da informática, como por exemplo, na utilização de correio eletrônico, dando prioridade e organização às mensagens. Eles podem facilitar todas essas funções, por meio de regras que podem ser inclusive deduzidas a partir de padrões de comportamento observados em seus usuários. Outra área de grande crescimento em que os agentes inteligentes são empregados é o comércio eletrônico. Os vendedores, precisam de alguma forma, atrair o cliente para o seu portal, oferecendo suporte especializado sobre os seus produtos, controlando e realizando o acompanhamento das suas vendas. Os consumidores e os comerciantes necessitam automatizar a sua participação nessa modalidade de compras. Nesse tipo de comércio, os agentes inteligentes podem ser empregados aqui de diversos modos. Por exemplo, poderiam ir às compras ao invés do usuário, coletando informações de um determinado produto e retornando com sugestões de compras que atendam às descrições recebidas. Também poderiam atuar como assistentes de vendas, fornecendo aconselhamento sobre os produtos e tentando solucionar possíveis problemas e dificuldades do usuário. Este artigo aborda princípios e aspectos dos agentes inteligentes, apresentando os estudos que fundamentam a tecnologia, um breve histórico e seus fundamentos, visando uma compreensão mais abrangente do tema, bem como as categorias e características descritas para agentes inteligentes, além de alguns exemplos de áreas onde eles são empregados. 3 2 HISTÓRICO Conforme o avanço na área de Inteligência Artificial percebe-se a importância de se criar uma entidade que pudesse modelar mais naturalmente, no meio virtual, o que nós conhecemos por um ser inteligente, surgindo assim o conceito de um agente inteligente. O início o estudo sobre agentes inteligentes se deu em meio à década de 80 e seguem até os dias atuais, tornando-se um campo de conhecimento amplo e com inúmeras possibilidades de estudo e aplicação. Vários estudos são realizados paralelamente por algumas comunidades de pesquisadores. O termo “agentes inteligentes” não oferece uma única definição tornando-se uma barreira para a comunidade científica, ou seja, há muitas definições para “agentes inteligentes” e cada qual com o seu papel. Agentes inteligentes são diferentes dos demais programas computacionais, pois operam por controle autônomo, conseguem perceber o seu ambiente, se adaptam a mudanças e são capazes de assumir metas. Segundo Barreto (2001), um agente é um sistema dinâmico com capacidade de receber informações e agir sobre um ambiente objetivando realizar uma determinada tarefa. Esta definição utiliza o modelo do Quadro-Negro (QN)4, como uma metáfora, onde cada agente é considerado um funcionário de uma fábrica de móveis. Assim como os funcionários, os agentes detêm conhecimentos específicos compatíveis com sua função. O tesoureiro sabe gastar, receber e calcular, o chefe de fabricação sabe produzir os móveis e assim por diante, ocorrendo dessa forma economia de recursos. Quando um funcionário tem necessidade de algo ele vai até o QN escrever o que deseja, o encarregado de compras o lê, faz a encomenda e escreve nele o valor que precisa ser pago. O tesoureiro lê a mensagem, faz o pagamento e escreve no QN que a encomenda já está paga. O chefe do almoxarifado, após ver a mensagem, recebe a encomenda e escreve no quadro. Por fim o funcionário que precisava da encomenda vai buscá-la e a fábrica de móveis continua a funcionar. Podemos compreender um agente inteligente como sendo um sistema ou um componente de um sistema capaz de organizar, selecionar, produzir informações e 4 Paradigma de comunicação entre módulos que imitam uma empresa onde os funcionários se comunicam por mensagens deixadas em um quadro negro podendo ler e escrever mas não tendo conhecimento de nada que foi escrito. 4 tomar decisões a partir de alguma fonte de dados. Em outras palavras, um agente é um subsistema desenvolvido com o fim de obter e analisar informações como também oferecer resposta sobre o cenário ao qual está inserido da melhor forma possível. No desenvolvimento de jogos eletrônicos, por exemplo, um bom agente inteligente agir mesmo que não de modo perfeito, o mais próximo possível do comportamento humano. 3 AGENTES INTELIGENTES O termo agente é amplamente usado nas áreas de estudo da computação e visto principalmente no campo de estudo da Inteligência Artificial. Para FERNANDES 2003, a definição de agente depende do ponto de vista do autor e também da funcionalidade desse agente. Um agente pode ser um programa de computador, entretanto, não precisa necessariamente apresentar comportamento “inteligente”, termo que é alvo de muitas controvérsias, já que é difícil definir o que é realmente um comportamento inteligente. Segundo Russel e Norvig (2004), um agente é aquele que percebe o seu ambiente por meio de sensores e age sobre ele através dos atuadores. Em um agente robótico, os sensores poderiam ser câmeras de filmagem e detectores de faixa de infravermelho. Já os atuadores podem ser representados pelos motores e braços mecânicos. Abordaremos o significado isolado de cada palavra que compõe o termo “agentes inteligentes” e em seguida apresentaremos uma definição formal do termo abordado por este artigo. 3.1 DEFININDO “AGENTE” Antônio e Mauros (2009) definem a palavra “agente” como “que ou quem atua, opera, agencia”. Será utilizada esta definição de forma que a mesma possa transmitir de maneira clara o objetivo do artigo. Russel e Norvig (2004) citam que um agente é algo que pertence e age em um ambiente. A função de um agente é executada em resposta a qualquer sequência de percepções. Um agente é uma entidade capaz de realizar alguma tarefa, geralmente para auxiliar um usuário humano. Agentes podem ser do tipo biológico (pessoas ou animais, por exemplo), robótico ou computacional. (JONES & BARTLETT, 2004). 5 Os agentes podem ser utilizados em diversos ambientes, sempre buscando uma maneira de poder facilitar a consecução de uma atividade, que muitas das vezes poderiam ser repetitivas. Podemos programar de diversas maneiras os agentes para que possam trabalhar em função do ser humano. Um agente é uma ferramenta que realiza alguma tarefa em nome de um humano. Por exemplo, um simples agente pode ser construído para comprar uma ação específica quando o preço dela cair abaixo de um determinado nível. Um simples agente de busca na Internet pode ser projetado para enviar consultas a uma série de ferramentas de busca e comprar os resultados. (JONES & BARTLETT, 2004). Um exemplo de agente no mundo real seria o agente imobiliário, pessoa que é contratada para efetuar as ações referentes à compra ou locação de um imóvel desejado, de forma que tudo seja facilitado para você concluir a compra com o mínimo de burocracia possível, seguindo este raciocínio pode perceber que agente é uma entidade que executa os interesses ao qual foi submetido. 3.2 DEFININDO “INTELIGENTE” Continuando com o objetivo de explicar da mesma forma como foi abordado o termo “agente” seguiremos agora com o termo “inteligente”. A palavra inteligência indica: Segundo Antônio e Mauros (2009) “a faculdade de conhecer, de compreender e aprender”. Com isto, podemos dizer que inteligente é uma característica de quem possui inteligência. A partir das definições acima citadas inferimos que quem consegue compreender e tomar atitudes corretas em relação a um determinado assunto é considerado uma pessoa inteligente, continuando com o exemplo do agente imobiliário, um agente imobiliário inteligente seria um agente que conseguiria compreender o perfil de seu cliente e oferecer a ele a melhor opção de imóvel para aquisição do cliente. 6 3.3 DEFININDO “AGENTE INTELIGENTE” A partir do uso das definições das palavras que compõe isoladamente o termo, pode-se compreender que o agente é um especialista em determinado assunto e o mesmo precisa ser inteligente para que, com uma correta percepção do meio que está inserido, ele execute da melhor forma a tarefa a ser realizada. Os agentes inteligentes são sistemas computacionais que têm como principais características atuação de forma autônoma, a percepção do ambiente onde estão inseridos, a adaptação às mudanças, como também a capacidade de trabalhar em função dos objetivos, podendo ser atribuídas aos agentes, tarefas normalmente desempenhadas por seres humanos. Agentes inteligentes têm conhecimento adicional de domínio que os habilita a realizar as tarefas deles, mesmo quando os parâmetros da tarefa mudam ou quando surgem situações inesperadas. Por exemplo, um agente inteligente pode ser projetado para comprar livros para um usuário, na Internet, pelo menor preço possível. O agente precisaria ser capaz de interagir com um conjunto de lojas virtuais, mas também precisaria ser capaz de aprender como negociar com outras lojas ou com indivíduos que estivessem oferecendo livros de segunda mão. Estes tipos de agentes que realizam tarefas em nome de pessoas são chamados de agentes de interface. (JONES & BARTLETT, 2004). Segundo Russel e Norvig (2004), agentes humanos possuem como sensores, os ouvidos, olhos e outros órgãos, e tem como atuadores, as pernas, voz, braços, mãos e outras partes do corpo. Já os agentes robóticos poderiam ter como sensores as câmeras e detectores de faixa de infravermelho e como atuadores os motores. Com o objetivo de aproximar seu significado no ambiente computacional, podemos considerar então que “agente inteligente” é um tipo de entidade que se utiliza de conhecimento para interpretar o ambiente que está inserido e realizar as ações a que foram designados. Apesar de o termo possuir, como citado anteriormente, várias interpretações não existindo assim um único conceito, o ponto comum existente em todas as concepções é a autonomia que os agentes inteligentes devem oferecer e com isso aumentar de forma significativa à eficiência dos sistemas desenvolvidos com o uso desta tecnologia. 7 Um agente de software é um programa de computador projetado para realizar tarefas em nome de um usuário, há uma série de meios pelos os agentes de software podem ser construídos e uma série de propriedade que eles podem ter. Uma propriedade sobre a qual temos especial interesse é a inteligência. (JONES & BARTLETT, 2004). Os agentes de software não são coisas de outro mundo que simplesmente surgem do nada, eles são software programados pelos os usuários. Muitas das vezes contamos como determinados equipamentos, como por exemplo, um despertador, pelo cujo usuário sempre o programa para despertar na parte da manhã, com objetivo de não se atrasar para o início de suas atividades diárias. O foco principal deste artigo e dar ênfase na programação de agentes inteligentes em software. A ideia principal é a de que os agentes inteligentes possam executar operações de percepção, atuação e interpretação do ambiente para a realização das metas que estão designadas a realizar. Os sensores e os atuadores são os dois elementos principais dos agentes. Sensores têm como principal objetivo prover a base de conhecimento do agente através das percepções realizadas no ambiente, e os atuadores, por sua vez, possibilitam ao agente a execução da tarefa, atuando diretamente no ambiente como mostra a figura 1. Figura 1 – Representação da interação de Agentes com o ambiente Fonte: Bate Byte – Jornal técnico da CELEPAR5 5 Bate Byte – Jornal Técnico da CELEPAR - Companhia de Informática do Paraná - “Agentes inteligentes para a formação de comunidades virtuais de aprendizado”. Disponível em: <http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=1115> Acesso em: 30 abr. 2014. 8 A autonomia, neste caso, pode ser entendida como o processo de atuação sem a necessidade de interferência do usuário, e faz com que o agente possua algum tipo de controle em suas ações e no seu estado interno. O que faz a distinção em computação entre o “agente” e um controle de processos, é a flexibilidade que este oferece ao sistema, fazendo com que ele passe a ter características reativas, com a capacidade de responder por conta própria às mudanças percebidas no ambiente, e proativa no sentido de não oferecer somente uma resposta a estas mudanças e sim uma resposta oportuna com a condição de ter iniciativa própria quando necessário. 4 ARQUITETURA DOS AGENTES Um agente é construído a partir de técnicas e algoritmos que são usados por uma metodologia específica que irá definir se ele irá agir isoladamente ou em grupo, definindo os funcionamentos de seus sensores e estados internos, que são fatores determinantes para a realização de todas as ações dos agentes com o decorrer da utilização. Segundo Davidson (1992), os agentes autônomos baseados em sistemas computacionais possuem arquitetura similar como demonstra a figura 2. Figura 2 – Arquitetura básica de agentes baseados em computador Fonte: DAVIDSON, 1992 Especificando os itens que compõem a figura acima, temos: Setas: fluxo de dados; Sensores: recebem as informações do ambiente e disponibilizam os dados para o mecanismo de inferência; 9 Mecanismo de inferência: atua como cérebro do agente inteligente, é onde as operações são executadas através das regras estabelecidas e estabelece como será a reação do agente frente aos dados recebidos pelos sensores; Base de conhecimento: lugar onde o conhecimento adquirido pelo agente é armazenado; Atuadores: executam as ações definidas pelo agente com o ambiente. 5 ASPECTOS GLOBAIS Abordaremos a seguir algumas das características que os agentes devem possuir para que sejam considerados inteligentes. Podemos entender estes aspectos também como sendo comportamentos esperados dos agentes. Jones e Bartlett (2004), citam que alguns aspectos são verificados em agentes inteligentes, incluindo autonomia, benevolência e a capacidade de colaborar (com os outros agentes, por exemplo) e a capacidade de aprender. Os agentes podem possuir vários aspectos diferentes, dentre elas podemos ter: autonomia de comportamento, que irá definir como o agente irá reagir em momentos decisórios, flexibilidade para que com dinamismo consiga escolher a ação e a forma de execução da tarefa, inteligência que irá proporcionar ao agente como executar a ação, uma vez que seu desenvolvimento ocorre através das regras de evolução em que está submetido. Se a atuação de um agente inteligente for exercida em conjunto com um ou mais agentes dá-se o nome de sistema multiagentes, não sendo necessário que possuam o mesmo tipo de conhecimento, cada um pode ter sua base de conhecimento. O foco principal neste tipo de sistema é a integração que os indivíduos irão ter ao interagir uns com os outros, possibilitando a troca de informações para a resolução dos problemas os quais programados para executar, tarefa que possivelmente seria inviável caso tivessem que executá-las sem a cooperação de outros. Existe uma característica denominada habilidade social que é a habilidade que permite ao agente a comunicação com outras entidades que interagem no sistema. 6 CLASSIFICAÇÃO 10 Como vimos anteriormente, um agente inteligente não é necessariamente um produto de software que executa funções preestabelecidas, um agente é qualquer entidade capaz de entender o ambiente que está inserido através de seus sensores e operar neste meio por meio de seus atuadores, que podem ser agentes humanos, robôs, softwares. O tipo de ambiente irá definir o tipo de agente. Em uma escala crescente podemos encontrar agentes com níveis de inteligência definidos como baixo, médio e alto. Os agentes com nível baixo de inteligência executam as tarefas normalmente disparadas por algum tipo de atividade exterior. Não existe, neste tipo a adaptação a mudanças ocorridas no ambiente. No nível médio de inteligência, eles já trazem consigo a utilização de conhecimento com a possibilidade de produzir raciocínio. Já possuem a capacidade de adaptação e manipulação de novas condições percebidas no ambiente, contudo não apresentam oportunismo. No alto nível de inteligência, os sistemas de agentes raciocinam e aprendem com os comportamentos dos usuários, inclusive com a capacidade de adaptação ao ambiente e demonstram oportunismo com a evolução do tempo. Além de inteligências divididas por níveis, agentes podem ser encontrados de acordo com as atividades. Podem ser os que exercem atividades mais simples, pois se baseiam em regras especificadas anteriormente, estes são conhecidos como gopher. Podem ser agentes também os que exercem tarefas de alto nível; desde que o usuário programe-o para a execução de determinada atividade, também conhecidos como prestadores de serviço, e, por último, os proativos, que executam tarefas de complexidade elevada, filtragem de dados, pesquisas e inclusive atividades sem que o usuário exija que o sistema faça, ele age por conta própria. A possibilidade de movimentação que um agente terá em um determinado ambiente pode defini-lo como sendo estático ou móvel. Agentes que atuam localmente sem a possibilidade de mobilidade são denominados agentes estáticos, um exemplo pode ser observado em agentes instalados localmente em uma rede que esperam determinado evento ocorrer para dispararem algum tipo de ação. Por sua vez, os agentes móveis podem executar a mesma operação com o diferencial de possuírem a mobilidade para trafegarem na rede à procura de eventos estabelecidos. A seguir apresentam-se os principais tipos de agentes. 11 6.1 AGENTES DE REFLEXOS SIMPLES Agentes de reflexo simples têm a função de perceber o ambiente e retornar uma ação a ser executada. Segundo Russel e Norvig (2004), agente de reflexo simples ou agente reativo simples, escolhe a melhor ação com base no que está sendo transmitido naquele momento, ou seja, não leva em conta os demais acontecimentos. Um simples agente reativo (também conhecido como agente de reflexo) é um sistema de produção onde entradas do ambiente são comparadas com regras para determinar que ações executar. Em outras palavras, agentes reativos simplesmente reagem a eventos no ambiente deles, de acordo com regras predeterminadas. (JONES& BARTLETT, 2004). A reatividade é a capacidade que o agente possui de perceber o ambiente, que pode ser o mundo físico, o ambiente virtual, outros agentes, a internet ou até mesmo a combinação de todos estes elementos e responder às mudanças ocorridas nele. O agente fica aguardando um evento específico acontecer, e, quando acontece, ele é ativado, ou seja, possui determinado comportamento quando estimulado. A figura 3 mostra a estrutura de um agente de reflexo simples. 12 Figura 3 - Representação do funcionamento de um Agente de Reflexo Simples Fonte: Elaborada pelo autor 6.2 AGENTES DE REFLEXO BASEADOS EM MODELO Os agentes de reflexo, baseado em modelos, armazenam uma quantidade de informação de ações executadas recentemente, e, ao assimilar as entradas, executa a ação escolhida. Podem ser conhecidos também como agentes de reflexos simples com estado interno. Para Russel e Norvig (2004), um agente de reflexo baseado em modelo ou agente reativo baseado em modelo, deve manter algum tipo de estado interno, ao qual necessita obter informações de acontecimentos passados e analisar alguns aspectos que ainda não tenham acontecido no estado atual. A figura 4, ilustra a estrutura do agente de reflexo baseado em modelos com seu estado interno, mostrando a percepção da situação atual com o estado interno antigo, com a finalidade de criar o novo estado interno. 13 Figura 4 - Representação do funcionamento de um Agente de Reflexo Baseado em Modelos Fonte: Elaborada pelo autor 6.3 AGENTES BASEADOS EM OBJETIVOS São agentes que tem um ou uma série de objetivos para executar. Sua percepção do ambiente é superior, pois, ele já é capaz de considerar ações sobre o futuro com a meta de alcançar seus objetivos. Russel e Norvig (2004) explica que o agente baseado em objetos necessita basear-se na descrição do estado atual e também precisa de alguma espécie de informação sobre os objetos que descrevam a situação desejável. Agentes baseados em objetivos são mais complexos que agentes reativos. Em vez de seguir um conjunto de regras predeterminadas, um agente baseado em objetivos age tentando atingir um objetivo. Isto é geralmente feito usando busca ou planejamento. Um agente baseado em objetivo pode, por exemplo, ter como objetivo encontrar páginas na Internet que sejam de interesse para um pesquisador de Inteligência Artificial. (JONES & BARTLETT, 2004). A figura 5 mostra a estrutura do agente baseado em objeto. 14 Figura 5 - Representação do funcionamento de um Agente Baseado em Objetivos Fonte: Elaborada pelo autor 6.4 AGENTES BASEADOS EM UTILIDADE Agentes baseados em utilidades conseguem estabelecer preferências entre os passos de seus estados, oferece ao agente as possibilidades possíveis de se executar a ação desejada. Um agente baseado em utilidade é semelhante a um agente baseado em objetivo, mas além de tentar alcançar um conjunto de objetivos, o agente baseado em utilidades também tenta maximizar algum valor de utilidade. O valor de utilidade pode ser pensado como a felicidade do agente ou quão bem-sucedido ele está sendo. Também pode ser levado em consideração quanto trabalho o agente precisa realizar a fim de alcançar seus objetivos. (JONES & BARTLETT, 2004). Como exemplo de agente baseado em utilidade, podemos citar um carro que necessita chegar a um destino, o qual existe várias sequências de ações para alcança-los, sendo algumas mais seguras, rápidas, confiáveis ou econômicas que outras. A estrutura de agente baseado em utilidade é mostrada na figura 6. 15 Figura 6 - Representação do funcionamento de um Agente Baseado em Utilidades Fonte: Elaborada pelo autor 6.5 AGENTES COM APRENDIZAGEM Agentes com aprendizagem se baseiam na ideia da máquina de Turing. O agente pode atuar em um ambiente desconhecido inicialmente e, através de aprendizado ao passar do tempo, evoluir conseguindo interpretar e atuar eficientemente no ambiente. Segundo Russel e Norvig (2004), um agente de aprendizado pode ser dividido em quatro componentes conceituais. Essa divisão pode ser compreendida na figura 7, onde o elemento de aprendizado, que é responsável pela execução de aperfeiçoamento, tem mais importância que o elemento de desempenho que é responsável pela seleção de ações externas. O elemento de desempenho é o que consideramos como sendo o agente completo: ele recebe percepções e decisões sobre as ações. O elemento de aprendizado utiliza da realimentação do crítico sobre como o agente está funcionando e determina de que maneira o desempenho deve ser modificado para funcionar melhor no futuro. (RUSSEL E NORVIG 2004). 16 Figura 7 - Representação do funcionamento de um Agente com Aprendizagem Fonte: Elaborada pelo autor De acordo com as classificações vistas anteriormente e as possibilidades de identificação de agentes em classes distintas, podemos encontrar diversas classificações. Os agentes são classificados da forma como eles verdadeiramente realizam suas funções, mas também, encontramos aqueles que recebem a classificação de híbridos pelo fato de executarem ações com mais de uma característica. Alguns agentes são híbridos e exibem propriedades de mais de uma das categorias citadas anteriormente (JONES& BARTLETT, 2004). “Outros agentes podem ser denominados como desembaraçados, que seriam totalmente autônomos e capazes de aprender e cooperar com outros” (JONES& BARTLETT, 2004). 8 SISTEMAS MULTIAGENTES A partir de um sistema determinado, podemos entender, como agente, cada entidade que se encontra ativa no sistema, o conglomerado de agentes ativos formam um grupo. Um sistema multiagente é um sistema onde dois ou mais interagem e desempenham funções capazes de realizar o objetivo proposto pelo sistema que estão inseridos. Sistemas Multiagentes são um meio comum de explorar a capacidade potencial de agentes, combinando muitos agentes em um sistema. Cada agente em um Sistema Multiagente tem informações 17 incompletas e os agentes formam um sistema que tem informações suficientes e capacidade para resolver o problema. O sistema não tem um mecanismo de controle centralizado para resolver o problema. (JONES & BARTLETT, 2004). Em um sistema composto por vários agentes (figura 8), todos devem ser capazes de se comunicar. Cada um deverá possuir conhecimento e habilidades para executar uma determinada tarefa, podendo cooperar ou não com o intuito de atingir um objetivo global. Um exemplo de aplicação pode ser citado como as pernas de um robô que podem ser controladas por um conjunto de agentes. Cada perna é controlada por um simples robô reativo que tenha instruções sobre como mover a perna de acordo com os obstáculos a serem encontrados pelo caminho. Estes sistemas incluem vários agentes que trabalham em conjunto, onde cada um é capaz de resolver de forma autônoma a sua função, e consequentemente operam de forma sincronizada com os outros membros do grupo, tornando-se assim parte de um sistema maior, sendo desejável que os agentes participantes do sistema tenham algumas características específicas. Comunicação e colaboração são propriedades desejáveis para sistemas Multiagentes. Comunicação significa, por exemplo, que agentes podem informar uns aos outros sobre mudanças no ambiente ou sobre novas descobertas que fizeram. Colaboração significa que agentes podem trabalhar juntos para resolver um objetivo comum. (JONES & BARTLETT, 2004). 18 Figura 8 – Visão de um Sistema Multiagente Fonte: JENNINGS, 2000 Como demonstra a figura 8, pode-se verificar que o sistema multiagente possui vários agentes, onde cada um terá diferentes capacidades de entender o ambiente e como agir nele. A ação de um é distinta do outro e isso faz com que ele influencie diferentes partes do contexto. Em sistemas Multiagentes, agentes cooperam uns com os outros. Esta cooperação implica algum tipo de interação social entre agentes. Por exemplo, um agente comprador pode negociar com agentes vendedores na hora de efetuar compras. É claro que também é útil para agentes cooperarem com os humanos que usam. Embora na maioria dos sistemas de agentes, esta cooperação seja na forma de simples entradas e instruções, a maneira pela qual agentes cooperam com as pessoas, podem ser muito importante. (JONES & BARTLETT, 2004). Seja em uma equipe de desenvolvimento de software ou em uma fábrica de automóveis, todas as partes envolvidas no processo precisam se comunicar e colaborar umas com as outras para seguir o escopo do projeto e para concluir os objetivos em comum, esta necessidade de colaboração também é possível perceber em sistemas multiagentes, onde eles se comunicam trocando as informações absorvidas, para conseguirem junto solucionar um determinado problema. 9 APLICAÇÕES – ONDE OS AGENTES INTELIGENTES SÃO APLICADOS? Com o avanço dos recursos tecnológicos e principalmente a disseminação da internet, a aplicabilidade do uso dos agentes inteligentes intensifica-se mais a cada dia. Serão apresentados alguns exemplos do seu uso, como recurso de programação e com a sua utilização no ambiente computacional em conjunto com o uso da rede mundial de computadores. Agentes inteligentes são utilizados em jogos eletrônicos com o objetivo de simular determinado tipo de comportamento de personagens que não são controlados por nenhum jogador. O objetivo destes agentes é participar da partida colaborando ou enfrentando o jogador tornando o jogo o mais atrativo possível. 19 Gilliard e Lopes (2010) exemplificam que uma das formas de representação de comportamento mais comuns é através de regras de inferência, onde o comportamento do agente consiste em uma coleção de regras condicionais, cujo antecedente (ou condição) da regra representa um conjunto de condições que denotam a situação atual da partida, e o consequente (ou conclusão) representa uma ação a ser tomada pelo agente. Um exemplo de conjunto de regras de inferência pode ser visto na figura 9 a seguir: Figura 9 – Visão de um Sistema Multiagente Fonte: GILLIARD e LOPES, 2010 Em bancos, empresas de viagens ou companhias aéreas estão sendo usados agentes inteligentes para completar formulários on-line no lugar do cliente. Pode ser utilizado com o objetivo de testar inúmeras combinações para monitorar os preços. Um agente inteligente também pode proporcionar uma solução para a detecção de vulnerabilidades e falhas de funcionamento oriundas de uma, ou várias máquinas. Agentes podem ser utilizados com a tarefa de oferecer suporte ao usuário de algum sistema no processo de pesquisa e consequentemente oferecer o acesso à informação desejada. Os sites de busca são exemplos deste tipo de aplicação na internet, onde os agentes inteligentes são responsáveis por pesquisar na rede assuntos de interesse do usuário, em um processo de filtro, encontrando somente o que seja interessante de acordo com as características fornecidas pela pessoa e posteriormente ainda exibir com certa frequência o assunto pesquisado em vários momentos durante a navegação do usuário. Cazarato e Ito (2007) citam que o comércio eletrônico também se beneficia com a utilização do uso de agentes em suas transações eletrônicas, ao ofertar, por exemplo, opções de uso de cartão de débito, de crédito e outros meios de pagamento, de acordo com políticas definidas pelo próprio comprador. Os agentes possuem a habilidade de 20 sugerir a opção que mais lhe dá vantagens, e desta forma também pode ajudar a organização a atingir mais um de seus objetivos empresariais, que é a fidelização do cliente. 10 ESTUDO DE CASO – NETLOGO (MAZES) Como estudo de caso para desenvolvimento e aplicações de agentes utilizaremos como exemplo o software NetLogo, que é gratuito e de fácil instalação, apresentando uma linguagem de programação simples e adaptada a modelar cujo objetivo é simular fenômenos naturais e sociais. Com o NetLogo, é possível executar a modelagem de sistemas mais complexos que evoluam com o passar do tempo, além de oferecer a possibilidade de simulação entre uma grande quantidade de agentes, que interagem entre si e o ambiente, oferecendo a possibilidade de explorar a interação entre eles. A linguagem Logo é a linguagem de programação utilizada no software. É voltada para o apoio ao ensino regular e por aprendizes em programação de computadores de todas as idades. Foi concebida por Seymour Papert entre os anos de 1967 e 1968. As turtles são todos os objetos que constituem esta linguagem que oferecem a possibilidade de executar algum tipo de ação, elas podem andar por todo o ambiente que é estabelecido pelo desenvolvedor, podendo inclusive ocupar o mesmo espaço uma da outras, o software permite que você insira competição no código significando, por exemplo, que duas tartarugas em um mesmo local podem competir por algo, ainda é possível a simulação de reprodução entre os indivíduos, simulando crescimento demográfico ou proliferação de epidemias. A linguagem de programação do NetLogo apresenta vários recursos tais como: atribuir diferentes formas (shapes) para as tartarugas, definir diferentes espécies (breeds) para as tartarugas que tenham comportamentos diferenciados. Por exemplo, definidas as espécies denominadas “gato” e “rato”, através da programação, é possível escrever uma regra que faça o “gato” caçar os “ratos”. Essa diferenciação das espécies faz, também, com que o modelo fique visualmente mais atraente e esclarecedor. O NetLogo além de oferecer uma interface amigável, oferece ainda uma biblioteca ampla que contém simulações em ciências naturais e sociais que podem ser usadas e modificadas. Os modelos são construídos usando uma linguagem simples, 21 mesmo para aqueles que estão iniciando o uso do sistema ou tendo contato com sua primeira linguagem de programação. As aplicações geradas podem ser visualizadas pelo software os quais são baixados gratuitamente pela internet ou ainda como um applet que irá ser executado através de um navegador de internet. Descreveremos, a partir de agora, um modelo que mostra como um agente reativo simples, denominado tartaruga, se move em torno de um labirinto. O modelo vem com três labirintos conforme índices e figuras a seguir: 1. O labirinto vazio (figura 10); 2. Um labirinto que simula um esquema real de labirinto de Hampton Court Palace (figura 11); 3. Um labirinto da vida real situado no Reino Unido de nome Chevening Casa Maze (figura 12); Figura 10 - Labirinto 1 – Somente paredes 22 Figura 11 – Labirinto 2 de Hampton Court Palace Figura 12 - Labirinto 3 de Chevening Casa Maze Os botões de interação definidos são os de “iniciar”, que executa a limpeza do ambiente e redesenha o labirinto selecionado pelo outro escolhido. O botão “dar um passo” faz com que o agente tartaruga ande em torno dele de acordo com o comportamento selecionado no seletor de comportamento. Este botão irá executar o procedimento tartaruga caminhado uma vez. Para que o agente caminhe de forma contínua, o botão “andar até o fim” deve ser selecionado. Alguns opcionais inseridos no modelo, sliders e switch, estão definidos da seguinte forma: maze-being-searched: especifica o labirinto que está sendo pesquisado, isto é, tanto o vazio, o Hampton Court Palace labirinto ou labirinto CheveningHouse; 23 turtle-behavior: especifica o tipo de comportamento reativo as exposições do agente tartaruga; A opção turtle-behavior, especifica o tipo de comportamento reativo às exposições sofridas pelo agente tartaruga e os tipos de comportamento que podem ser escolhidos na opção são os seguintes: HandTn The Wall: quando o agente se depara com uma parede do labirinto a sua frente, ele deve ter um sentido para seguir, para a esquerda ou para a direita, em contato com uma parede em todos os momentos. O modelo decide-se aleatoriamente se será para a esquerda ou para a direita; RandomForward0: neste comportamento, o agente de tartaruga avança se não houver uma parede em frente, em seguida, tenta virar à esquerda a menos que haja uma parede para a esquerda, logo após, tenta virar à direita a menos que haja uma parede à direita, então, se vira aleatoriamente esquerda ou direita, como um último recurso; RandomForward1: o agente tartaruga se move, principalmente em linhas retas, em direções aleatórias e para uma distância aleatória mas, se ele encontra uma parede, vai bater contra ela por um tempo curto (muito parecido com um pica-pau batendo contra uma árvore ou uma mosca contra uma janela) antes de recuar uma distância aleatória e continuar com suas andanças aleatórias; RandomForward2: neste comportamento o agente de tartaruga vagueia em direções aleatórias, usando pequenos passos; O objetivo é mostrar como um agente reativo simples pode ser eficaz (ou não) na exploração do experimento. A tartaruga não tem capacidade cognitiva para reconhecer a situação e simplesmente reage à situação imediata que se encontra usando um detector de proximidade simples para sentir uma parede próxima (figura 13). 24 Figura 13–Percurso executado pelo agente no Labirinto 3 de Chevening Casa Maze 10 CONCLUSÃO Buscou-se neste trabalho uma introdução aos agentes inteligentes, seus papéis e suas utilizações. Características quanto ao nível de execução de vários deles foram exemplificadas para facilitar o entendimento e compreensão deste recurso que já é uma realidade vivenciada no cenário atual e, ainda, com um grande espaço de atuação e exploração possíveis. O campo de estudos deve ser largamente explorado, principalmente com maior foco comercial, enfatizando os benefícios reais e as vantagens que a utilização de agentes inteligentes na tecnologia podem oferecer no mundo dos negócios. Percebemos que a já difundida e crescente popularidade da internet, somadas aos problemas que muitos encontram ao procurarem como também, oferecerem informações, é também um campo vasto para aplicações de agentes. A internet é um ambiente ideal para a atuação destas tecnologias por serem mais adaptáveis à complexidade existente na rede mundial de computadores, na qual, suporta melhor o grande volume de dados do que em sistemas convencionais. 25 Resumindo, no avanço dos estudos sobre agentes inteligentes, sua utilização já é percebida e ainda pouco conhecida. Sua aplicação em tarefas cotidianas ou mais complexas são provas de que sua utilização está evidente e com grande possibilidade de crescimento, demonstrando em particular que a utilização de agentes inteligentes no ambiente on-line cresce exponencialmente e demonstra ser uma tendência irreversível. 26 REFERÊNCIAS BIBLIOGRÁFICAS ANTONIO H. e MAURO S. “Dicionário Houaiss da Língua Portuguesa”, 1° edição, Rio de Janeiro, Objetiva, 2009. BARRETO, J. M. “Inteligência Artificial no limiar do século XXI”, Florianópolis, O Autor. 2001. BIGUS, Joseph P. “Data mining with neural networks: solving business problemsfrom application development to decision support”. McGraw-Hill, 1996. CAZARATO, Flavio e ITO, Márcia “O Uso de Agentes Inteligentes no Comércio Eletrônico”. Núcleo de Pesquisa em Ciências de Serviços (CiSe) - Centro Estadual de Educação Tecnológica Paula Souza – 2007. Disponível em: < http://www.centropaulasouza.sp.gov.br/pos-graduacao/workshop-de-pos-graduacao-epesquisa/anais/2007/comunicacao-oral/gestao-e-desenvolvimento-de-tecnologias-dainformacao-aplicadas/carazato,%20flavio.pdf> Acesso em: 30 abr 2014. DAVIDSON, P. “Concept Acquisition by Autonomous Agents: Cognitive Modeling versus Engineering Approach”. Lund University Studies 12, ISSN 1101-8453, Lund University, Suécia, 1992. Disponível em: <http://fileadmin.cs.lth.se/ai/psfiles/LUCS12.pdf>Acessoem: 29 abr. 2014. FERNANDES, A. M. R. “Inteligência Artificial”. Florianópolis: Visual Books. 2003. FRANKLIN, S., GRAESSER, A. - Is it an Agent, or just a Program? A Taxonomy for Autonomous Agents. Proceedings of the Third International Workshop on Agent Theories, Architectures, and Languages, Springer-Verlag, 1996. GILLIARD, L e PACHECO, M. – “Evoluindo o Comportamento de Agentes Inteligentes em Jogos Eletrônicos”. (2010) – Disponível em: <http://rica.ele.pucrio.br/media/Revista_rica_n10_a3.pdf> Acessado em: 30 abr 2013. 27 GRAY, R. S. - Agent Tcl: Alpha Release 1.1. Documentação do Sistema Agente Tcl, Departamento de Ciências da Computação, Faculdade Dartmouth, Hanover, 1995. HERMANS, B. - Intelligent Software Agents on the Internet: an inventory of currently offered functionality in the information society & a prediction of (near) future developments. Tilburg University, Tilburg, Holanda, julho, 1996. JENNINGS, Nicholas R. "Department of Electronics and Computer Science, University of Southampton", Southampton SO17 1BJ, UK Received 21 September 1999 - Disponívelem: <http://eprints.soton.ac.uk/253741/1/aij2000.pdf>Acessoem: 20 abr 2014. JONES& BARTLETT, Bem,Cppin.“Inteligência Artificial”.GrupoEditoraNacional, 2004. LETJER, M., DEAN, T.A Framework for the Development of Multiagent Systems, IEEE Expert, vol. 11, no. 6, 1996. RUSSEL, S., NORVIG, P. “Inteligência Artificial”. Rio de Janeiro: Elsevier. 2004. SEGeT, "Uma experiência com Agentes Inteligentes e Jogos de Cartas" - 2008 Disponível em: <http://www.aedb.br/seget/artigos08/207_Artigo%20Seget.pdf> Acesso dia: 15 abr 2014. SOUZA, E. M. S. – Uma Estrutura de Agentes para Assessoria na Internet, 1996. SOUSA, P. T .C., ALVARENGA E. F. R. "Agentes Inteligentes - agentes que aprendem e redes neurais" - Trabalho do Mestrado de Informática da UCB – Disciplina: Inteligência Artificial e Agentes Inteligentes. Disponível em :<http://paulotarso.com/Files/Agentes%20Inteligentes%20com%20Redes%20Neurais.p df>. Acesso em: 21 abr 2014. 28 Teahan, W. J. (2009). “MazesNetLogomodel.” Artificial Intelligence. VentusPublishingAps. Disponível em: <http://files.bookboon.com/ai/Mazes-2.html> Acesso em: 05 jun 2014. Wilensky, U. (1999). NetLogo. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.Disponível em: <http://ccl.northwestern.edu/netlogo/>. Acesso em: 05 jun 2014. 29