Disciplina: Desenvolvimento de Sistemas Baseados em Agentes
Professor: Orivaldo
Aluna: Tânia B. Salles Gava
Cap 1 e 2 do Livro “Agent Technology: Foundations, Applications and Markets”
Autores: Nicholas R. Jennings;
Michael J. Wooldridge
Principais idéias
do texto:
· Agentes inteligentes são um novo paradigma para aplicações de desenvolvimento de software. Mais do isso, computação baseada em agentes tem sido aclamada como “a próxima inovação significativa em desenvolvimento de software” (Sargent 1992) e “a nova revolução em software” (Ovum 1994).
· Agente X sistemas baseados em agentes (Wooldridge and Jennings, 1995): Um agente é um sistema computacional situado em algum ambiente, que é capaz de agir com autonomia neste ambiente para satisfazer seus objetivos de projeto. Sistemas autônomos não são um novo desenvolvimento. Parece estranho chamar tais sistemas agentes, mas eles não são agentes inteligentes. Um agente inteligente é um sistema computacional que é capaz de agir com autonomia e flexibilidade, para satisfazer seus objetivos. Por flexível entende-se que o agente deve ser: Responsivo: deveriam perceber seu próprio ambiente; Pró-ativo: não agem simplesmente em resposta a uma solicitação mas podem tomar iniciativas quando apropriado; Social: deveriam interagir com outros agentes e humanos para solucionar seus problemas e ajudar outros em suas atividades. Já um sistema baseado em agentes (SBA) deveria ser conceitualizado em termos de agentes mas implementado sem qualquer estrutura de software correspondendo a agentes. Espera-se que um sistema baseado em agentes seja tanto projetado quanto implementado em termos de agentes. Existem ferramentas que permitem a um usuário implementar sistemas de software como agentes e como sociedade de agentes cooperativos. Note que um SBA pode ter um nº qualquer de agentes. No caso de sistemas multi-agentes, onde um sistema é projetado e implementado como vários agentes interagindo, eles são mais gerais e mais complexos que sistemas com um único agente, existindo ocasiões em que este último caso é mais apropriado. Um bom exemplo disso são os assistentes especialistas, onde um agente age como um assistente especialista para ajudar um usuário a realizar alguma tarefa.
· O que os agentes têm a oferecer? Para qualquer nova tecnologia ser considerada útil no mercado computacional, ele deve oferecer: A habilidade de resolver problemas que estejam fora do escopo da automação: ou porque nenhuma tecnologia existente pode ser usada para resolver o problema ou porque foi considerada muito cara (em termos de dificuldade, cosumo de tempo, risco) para desenvolver situações usando a tecnologia existente, ou; a habilidade de resolver problemas que podem ser resolvidos de uma maneira melhor (mais barata, mais natural, mais fácil, mais eficiente, mais rápida).
· Certos tipos de software são mais difíceis de projetar e implementar que outros. A classe mais simples de sistemas são os funcionais. Esses sistemas trabalham recebendo uma entrada, computando uma função e devolvendo uma saída. Ex: compiladores. Outros sistemas são reativos, ou seja, mantêm uma interação contínua com algum ambiente. Esses sistemas são mais difíceis de projetar e implementar. Ex: sistemas de controle de processo, sistemas operacionais e sistemas de gerenciamento de redes. Esses sistemas são subdivididos em: Sistemas Abertos: Um sistema aberto é aquele em que a própria estrutura do sistema é capaz de mudar dinamicamente; Sistemas complexos: As ferramentas mais poderosas para desenvolver sistemas complexos são a modularização e a abstração. Sistemas Obíquos (onipresentes): Apesar das inovações que surgiram em relação a interação homem-máquina, usuários ainda encontram softwares difíceis de usar. Se as aplicações de software atuais serão usadas por tais usuários é fundamental repensar sobre a natureza da interação computador-usuário. As máquinas deveriam cooperar com o usuários para que eles alcancem seus objetivos. Para alcançar tal funcionalidade, aplicações de software devem ser autônomas, pró-ativas, responsivas e adaptativas, ou seja, devem comportar-se como um agente inteligente.
· A tecnologia de agentes nos dá as ferramentas para construir aplicações que antes eram incapazes de se construir. Mas ela também pode fornecer melhores meios de conceitualizar e/ou implementar uma dada aplicação.
· Muitas aplicações que atualmente usam agentes poderiam ser construídas com outras técnicas. O simples fato de um domínio de problema particular ter recursos de dados distribuídos ou envolver sistemas legados não implica necessariamente que uma solução baseada em agentes seja a mais adequada ou que ela é possível.
· Observações importantes sobre aplicações baseadas em agentes: As ações detalhadas de um agente na resolução de um problemas só pode ser determinada em tempo de execução; Pelo fato do procedimento dos agentes individuais não ser determinado em tempo de projeto, o procedimento do sistema como um todo só poderá emergir também em tempo de execução.
· Uma vez obtidas as necessidades do usuário com respeito a um novo sistema a ser desenvolvido, é requerida uma declaração precisa sobre o que os desenvolvedores pretendem construir. Este documento tende a ser escrito tão formal quanto possível. Ele visa ser uma declaração precisa das propriedades do sistema que os desenvolvedores irão construir. Um número de propostas têm sido desenvolvidas para a especificação de requisitos, particularmente propostas formais. Os detalhes desse formalismo tende a ser bastante complexo, mas em geral eles caracterizam agentes como tomadores de decisão racional. Acredita-se que o estado interno de um sistema pode ser expresso em termos de construtos mentais tais como crenças, desejo e intenção.
· projeto de sistemas robustos e eficientes é um dos mais importantes aspectos a ser considerado na engenharia de software e tem se feito grande esforço para fazer o projeto do sistema um processo metódico e rigoroso. Poucos pesquisadores de agentes tem considerado como as metodologias de projeto devem ser aplicadas a sistemas agentes.
· Um projeto de sistemas agentes deverá tanto descrever os vários papéis que existem dentro do sistema quanto caracterizar as relações que existem entre esses papéis. Portanto, o projeto geralmente não prescreverá uma implementações desses agentes.
· Desenvolvedores precisam de assistência na visualização do que está acontecendo e de facilidades de debugging para executar um procedimento e melhorá-lo quando apropriado.
Comentários: O texto traz muitas definições importantes, é bem descritivo e também apresenta muitos exemplos práticos.
Referências
Bibliográficas
Sargent, P. (1992) Back to school for a brand new ABC. In. The Guardian, 12 March, p.
28.
Ovum Report (1994) Intelligent agents: the new revolution in software.
Wooldridge, M. Jennings, N. R. (1195). Intelligent agents theory and practice. The Knowledge Engineering Review, 10(2), 115-152.
Professores: Orivaldo e Crediné
Aluna: Tânia B. Salles Gava
Cap 1 e 2 do Livro “Agent Technology: Foundations, Applications and Markets”
Autores: Nicholas R. Jennings;
Michael J. Wooldridge
· Agentes de software são uma área de pesquisa que se desenvolveu rapidamente. Os domínios de aplicação em que as soluções que usam agentes estão sendo aplicados ou pesquisados incluem gerenciamento de workflow, gerenciamento de redes de comunicações, controle de tráfico aéreo, reengenharia de processos de negócios, data mining, gerencimento e recuperação de informações, comércio eletrônico, educação, assistente digitais pessoais, filtragem de e-mail, comando e controle, banco de dados SMART e gerencimento diária e scheduling.
· Um agente é um componente de software e/ou hardware que é capaz de agir exatamente para realizar tarefas de interesse de seus usuários.
· Existem várias dimensões para classificar os agentes de software que existem. Podemos classificá-los em 5 tipo. São eles: 1) Agentes podem ser classificados pela sua mobilidade, i.e, por sua habilidade de se mover sobre a rede. Assim, os agentes podem ser estáticos ou móveis; 2) Agentes podem ser classificados como deliberativos (que resolve após exame ou discussão) ou reativos. Agentes deliberativos derivam do paradigma de pensamento deliberativo, que defende que agentes possuem um modelo interno de raciocínio simbólico e eles se empenham no planejamento e negociação com outros agentes para alcançar seus objetivos. Já os agentes reativos não têm nenhum modelo simbólico interno de seus ambientes, e agem usando um tipo de procedimento de resposta à estímulos para responder ao estado presente do ambiente em que eles estão inseridos (Ferber, 1994); 3) Agentes podem ser classificados em relação à vários atributos, os quais eles deveriam possuir. Dentre eles estão autonomia, aprendizado e cooperação. Autonomia refere-se ao princípio que os agentes podem agir por conta própria, sem a intervenção humana. Um elemento chave da autonomia é a habilidade do agente ser pro-ativo, ou seja, do agente tomar a iniciativa (Wooldridge and Jennings, 1995). Cooperação com outros agentes é essencial. E mais, a comunicação requerida para assegurar a cooperação geralmente envolve mensagens de alto-nível. Por último, para agentes serem realmente “inteligentes” eles deveriam ter de aprender como reagir e/ou interagir com seu ambiente externo, para que com o tempo seu desempenho aumente. Usa-se essas três características para derivar três tipos de agentes: agentes colaborativos, agentes de interface e agentes inteligentes; 4) Algumas vezes os agentes podem ser classificados por seus papéis. Essencialmente tais agentes ajudam a gerenciar a grande quantidade de informação de grandes redes como a Internet. Nós identificamos esta classe de agentes como agentes da Internet ou agentes de informação; 5) Finalmente, temos os agentes híbridos, que combinam duas ou mais filosofias em um único agente.
· Podemos identificar sete tipos de agentes:
Agentes Colaborativos: Enfatizam a autonomia e a cooperação com outros agentes para executar tarefas por conta própria, em ambientes multi-agentes abertos ou com restrições de tempo. Eles podem aprender, mas este não é a maior ênfase de sua operação. Para coordenar suas atividades, eles podem ter de negociar para estabelecerem acordos aceitáveis entre si. Agentes colaborativos tendem a ser estáticos, extensos e de granularidade grossa. Eles podem ser benevolentes, racionais, verdadeiros, uma combinação desses aspectos ou não possuir nenhum deles.
Agentes de Interface: Agentes de interface enfatizam a autonomia e a aprendizagem para executar tarefas por conta própria (Maes, 1994). A metáfora chave é de um assistente pessoal que está colaborando com o usuário no mesmo ambiente de trabalho. Essencialmente, agentes de interface suportam e fornecem assistência pro-ativa, tipicamente para um usuário que está aprendendo a usar uma aplicação particular. Esses agentes observam e monitoram as ações executadas pelos usuários, aprendem novos atalhos e sugerem maneiras melhores dos usuários realizarem as tarefas. Tipicamente os agentes de interface aprendem para assistir seis usuários de 4 maneiras: 1) observando e imitando o usuário, 2) recebendo feedback positivo ou negativo dos usuários, 3) recebendo explicitamente instruções do usuário, e 4) pedindo conselho a outros agentes. A cooperação dos agentes de interface com outros agentes se resume a pedir conselho.
Agentes Móveis: São processos de software capazes de vasculhar grandes redes de computadores, como a WWW, interagindo com outros hosts, executando tarefas de seu próprio interesse e retornando para “casa” tendo feito todas as suas obrigações. Estas obrigações variam de fazer uma reserva aérea a gerenciar uma rede de telecomunicações. Agentes móveis são agentes porque são autônomos e eles cooperam, embora diferentemente dos agentes colaborativos. Por exemplo, eles podem cooperar quando um outro agente faz a locação de algum de seus objetos internos e métodos conhecidos por outros agentes.
Agentes de Internet ou Agentes de Informação: Agentes de informação executam o papel de gerenciar, manipular ou coletar informação de muitos recursos distribuídos. São duas as motivações para o desenvolvimento desse tipo de agentes. A primeira é simplesmente a necessidade de se ter ferramentas que gerenciem a explosão de informação da WWW. A Segunda é que existem grandes benefícios financeiros a serem adquiridos.
Agentes Reativos: Freqüentemente também referenciados como agentes autônomos, agentes reativos representam uma categoria especial de agentes, que não possuem modelos simbólicos internos de seus ambientes. Ao invés disso, respondem à estímulos ao estado atual do ambiente em que estão inseridos. Maes (1991a) destaca três idéias chave sobre agentes reativos. Primeiro, funcionalidade emergente: agentes reativos são relativamente simples e eles interagem com outros agentes de maneira básica. Segundo, decomposição de tarefas: um agente reativo é visto como uma coleção de módulos que operam autonomamente e são responsivos para tarefas específicas (e.g., controle motor, computações). Terceiro, agentes reativos tendem a operar sobre representações que são perto apenas dados sensoriais, em contraste às representações de alto nível vistos em outros tipos de agentes.
Agentes Híbridos: Agentes híbridos referem-se à aqueles agentes cuja constituição é uma combinação de duas ou mais filosofias de agentes dentro de um único agente. O objetivo é se apropriar das vantagens de cada uma dessas filosofias, tentando maximizar as vantagens e minimizar as deficiências da técnica mais relevante para o propósito em questão.
Sistemas
Inteligentes: O artigo não faz um overview de agentes inteligentes por
considerá-los antes uma aspiração dos pesquisadores do que realidade.
Sistemas agentes heterogêneos: Sistemas agentes heterogêneos referem-se a um setup integrado de no mínimo dois ou mais classes diferentes de agentes. Um sistema agente heterogêneo também pode conter agentes híbridos (Genesereth and Ketchpel, 1994). A motivação para esse tipo de sistema é que no mundo existe uma grande diversidade de softwares. Embora esses programas trabalhem isoladamente, existe uma crescente demanda para tê-los operando entre si. Além disso, um novo domínio chamado engenharia de software baseada em agentes têm surgido para facilitar a interoperação entre vários agentes de software.
Comentários
É um texto bastante interessante para quem está iniciando os estudos sobre agentes. O texto faz uma divisão sobre os vários tipos de agentes que se tem hoje, trazendo informações, embora sucintas, mas importantes sobre cada um destes tipos de agentes.
Referências
Bibliográficas
Ferber, J.
(1994) Simulating with reactive agents: In. Hillebrand, J. Stender (Eds). Many Agent Simulation and Artificial Life, 8-28.
IOS Press, Amsterdam.
Genesereth,
M. R., Ketchpel S. P. (1994) Software Agents. Communications of the ACM, 37(7),
48-53.
Maes, P. (Ed)
(1991) Designing Autonomous Agents:
Theory and Practice from Biology to Engineering and Back, 49-70. MIT Press,
London.
Maes, P.
(1194) Agents that reduces work and overload information. Communicatiosn of the ACM.
Wooldridge,
M., Jennings, N. (1995) Intelligent agents: theory and practice. The Knowledge Engineering Review, 10(2),
115-152.